summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2024-11-06 04:18:33 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2024-11-06 04:18:33 +0000
commit2c51e98ad660e5992bcb308d0919da3347862e54 (patch)
tree59538975b3dd8627825bddc53c4dbf70a0bea9df /Build
parent5c0e9405bdf362fe95e6ff6593971b4b1fd3ad5f (diff)
harfbuzz 10.1.0
git-svn-id: svn://tug.org/texlive/trunk@72778 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/libs/README2
-rw-r--r--Build/source/libs/harfbuzz/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/ChangeLog5
-rw-r--r--Build/source/libs/harfbuzz/TLpatches/TL-Changes4
-rwxr-xr-xBuild/source/libs/harfbuzz/configure26
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/NEWS27
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/meson.build2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh47
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py17
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc461
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-shape.cc (renamed from Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc)71
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h17
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc55
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc125
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-limits.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh35
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh1095
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh293
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt1
-rw-r--r--Build/source/libs/harfbuzz/version.ac2
42 files changed, 1579 insertions, 793 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README
index e59e77e30b0..98f26c770ff 100644
--- a/Build/source/libs/README
+++ b/Build/source/libs/README
@@ -28,7 +28,7 @@ graphite2 1.3.14 - checked 10apr20
https://sourceforge.net/projects/silgraphite/files/graphite2/
(requires C++11)
-harfbuzz 10.0.1 - checked 25sep24
+harfbuzz 10.1.0 - checked 06nov24
https://github.com/harfbuzz/harfbuzz/releases/latest
icu 76.1 - checked 27oct24 (requires C++17, e.g., g++13)
diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog
index 629856d5b41..e3507c424ca 100644
--- a/Build/source/libs/harfbuzz/ChangeLog
+++ b/Build/source/libs/harfbuzz/ChangeLog
@@ -1,3 +1,8 @@
+2024-11-06 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Import harfbuzz-10.1.0.
+ * version.ac: Adjusted.
+
2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
Import harfbuzz-10.0.1.
diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
index b9d1fb3dbd2..989a3e78baf 100644
--- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog
+++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog
@@ -1,3 +1,8 @@
+2024-11-06 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
+
+ Imported harfbuzz-10.1.0 source tree from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/10.1.0/
+
2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp>
Imported harfbuzz-10.0.1 source tree from:
diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
index e66a14e7d9f..aa257893e86 100644
--- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes
+++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-10.0.1/ tree as obtained from:
- https://github.com/harfbuzz/harfbuzz/releases/download/10.0.1/
+Changes applied to the harfbuzz-10.1.0/ tree as obtained from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/10.1.0/
Removed:
.clang-format
diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure
index 1aa85873ec8..504d29ce116 100755
--- a/Build/source/libs/harfbuzz/configure
+++ b/Build/source/libs/harfbuzz/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.0.1.
+# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.1.0.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -604,8 +604,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='harfbuzz (TeX Live)'
PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='10.0.1'
-PACKAGE_STRING='harfbuzz (TeX Live) 10.0.1'
+PACKAGE_VERSION='10.1.0'
+PACKAGE_STRING='harfbuzz (TeX Live) 10.1.0'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-'configure' configures harfbuzz (TeX Live) 10.0.1 to adapt to many kinds of systems.
+'configure' configures harfbuzz (TeX Live) 10.1.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1413,7 +1413,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.0.1:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.1.0:";;
esac
cat <<\_ACEOF
@@ -1518,7 +1518,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-harfbuzz (TeX Live) configure 10.0.1
+harfbuzz (TeX Live) configure 10.1.0
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2075,7 +2075,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by harfbuzz (TeX Live) $as_me 10.0.1, which was
+It was created by harfbuzz (TeX Live) $as_me 10.1.0, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -5252,7 +5252,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz--tex-live-'
- VERSION='10.0.1'
+ VERSION='10.1.0'
# Some tools Automake needs.
@@ -5441,9 +5441,9 @@ echo 'tldbg:KPSE_BASIC done (pkg=harfbuzz, amopt=no-define)' >&5
HB_VERSION_MAJOR=10
-HB_VERSION_MINOR=0
-HB_VERSION_MICRO=1
-HB_VERSION=10.0.1
+HB_VERSION_MINOR=1
+HB_VERSION_MICRO=0
+HB_VERSION=10.1.0
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -9292,7 +9292,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by harfbuzz (TeX Live) $as_me 10.0.1, which was
+This file was extended by harfbuzz (TeX Live) $as_me 10.1.0, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -9360,7 +9360,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-harfbuzz (TeX Live) config.status 10.0.1
+harfbuzz (TeX Live) config.status 10.1.0
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
index 38d1c849ba1..a2b6ebd23f4 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
@@ -1,12 +1,35 @@
+Overview of changes leading to 10.1.0
+Tuesday, November 5, 2024
+====================================
+- Fix the sign of fallback vertical glyph advance (used when font has no
+ vertical advance data).
+- Increase maximum “CFF” operands limit 20 times to support more complex fonts.
+- Add “--face-loader” option to command line utilities.
+- Support “COLR” v0 table in hb_font_get_glyph_extents().
+- Add support for font functions that use Core Text APIs, similar to FreeType
+ font functions. This allows, for example, using drawing fonts that use the new
+ (and undocumented) “hvgl” table.
+- Update IANA and OT language registries, as well ase USE data files.
+- Fix build with ICU 76.
+- Various compiler warnings and build fixes.
+- Various subsetter fixes.
+
+- New API:
++hb_face_create_or_fail()
++hb_face_create_from_file_or_fail()
++hb_coretext_face_create_from_file_or_fail()
++hb_coretext_font_set_funcs()
++hb_ft_face_create_from_file_or_fail()
+
Overview of changes leading to 10.0.1
-Tuesday, Sep 24, 2024
+Tuesday, September 24, 2024
====================================
- Relax sanitization checks for “morx” subtables to fix broken AAT shaping of
macOS 15.0 version of GeezaPro.
Overview of changes leading to 10.0.0
-Monday, Sep 23, 2024
+Monday, September 23, 2024
====================================
- Unicode 16.0.0 support.
- Various documentation fixes.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
index ee064a00e2e..5a02b3bb2e3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
@@ -1,6 +1,6 @@
project('harfbuzz', 'c', 'cpp',
meson_version: '>= 0.55.0',
- version: '10.0.1',
+ version: '10.1.0',
default_options: [
'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway
# 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
index 6b5b104f3d3..36b509d7c33 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh
@@ -2058,7 +2058,7 @@ struct delta_set_index_map_subset_plan_t
unsigned outer = (*var_idx) >> 16;
unsigned bit_count = (outer == 0) ? 1 : hb_bit_storage (outer);
outer_bit_count = hb_max (bit_count, outer_bit_count);
-
+
unsigned inner = (*var_idx) & 0xFFFF;
bit_count = (inner == 0) ? 1 : hb_bit_storage (inner);
inner_bit_count = hb_max (bit_count, inner_bit_count);
@@ -2080,7 +2080,7 @@ struct COLR
bool has_v0_data () const { return numBaseGlyphs; }
bool has_v1_data () const
{
- if (version != 1)
+ if (version < 1)
return false;
hb_barrier ();
@@ -2180,7 +2180,7 @@ struct COLR
hb_set_t *variation_indices,
hb_set_t *delta_set_indices) const
{
- if (version != 1) return;
+ if (version < 1) return;
hb_barrier ();
hb_set_t visited_glyphs;
@@ -2222,16 +2222,22 @@ struct COLR
{ return (this+baseGlyphList); }
bool has_var_store () const
- { return version >= 1 && varStore != 0; }
+ { return version >= 1 && hb_barrier () && varStore != 0; }
bool has_delta_set_index_map () const
- { return version >= 1 && varIdxMap != 0; }
+ { return version >= 1 && hb_barrier () && varIdxMap != 0; }
+
+ bool has_clip_list () const
+ { return version >= 1 && hb_barrier () && clipList != 0; }
const DeltaSetIndexMap &get_delta_set_index_map () const
- { return (version == 0 || varIdxMap == 0) ? Null (DeltaSetIndexMap) : this+varIdxMap; }
+ { return has_delta_set_index_map () && hb_barrier () ? this+varIdxMap : Null (DeltaSetIndexMap); }
const ItemVariationStore &get_var_store () const
- { return (version == 0 || varStore == 0) ? Null (ItemVariationStore) : this+varStore; }
+ { return has_var_store () && hb_barrier () ? this+varStore : Null (ItemVariationStore); }
+
+ const ClipList &get_clip_list () const
+ { return has_clip_list () && hb_barrier () ? this+clipList : Null (ClipList); }
bool sanitize (hb_sanitize_context_t *c) const
{
@@ -2242,7 +2248,6 @@ struct COLR
(this+layersZ).sanitize (c, numLayers) &&
(version == 0 ||
(hb_barrier () &&
- version == 1 &&
baseGlyphList.sanitize (c, this) &&
layerList.sanitize (c, this) &&
clipList.sanitize (c, this) &&
@@ -2465,7 +2470,9 @@ struct COLR
if (unlikely (!c->serializer->extend_min (colr_prime))) return_trace (false);
if (version == 0 || downgrade_to_V0 (glyphset))
- return_trace (colr_prime->serialize_V0 (c->serializer, 0, base_it, layer_it));
+ return_trace (colr_prime->serialize_V0 (c->serializer, 0, base_it, layer_it));
+
+ hb_barrier ();
//start version 1
if (!c->serializer->allocate_size<void> (5 * HBUINT32::static_size)) return_trace (false);
@@ -2475,8 +2482,8 @@ struct COLR
* after instancing */
if (!subset_varstore (c, colr_prime)) return_trace (false);
- ItemVarStoreInstancer instancer (varStore ? &(this+varStore) : nullptr,
- varIdxMap ? &(this+varIdxMap) : nullptr,
+ ItemVarStoreInstancer instancer (&(get_var_store ()),
+ &(get_delta_set_index_map ()),
c->plan->normalized_coords.as_array ());
if (!colr_prime->baseGlyphList.serialize_subset (c, baseGlyphList, this, instancer))
@@ -2505,12 +2512,10 @@ struct COLR
bool
get_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents) const
{
- if (version != 1)
- return false;
- ItemVarStoreInstancer instancer (&(this+varStore),
- &(this+varIdxMap),
- hb_array (font->coords, font->num_coords));
+ ItemVarStoreInstancer instancer (&(get_var_store ()),
+ &(get_delta_set_index_map ()),
+ hb_array (font->coords, font->num_coords));
if (get_clip (glyph, extents, instancer))
{
@@ -2545,7 +2550,7 @@ struct COLR
bool
has_paint_for_glyph (hb_codepoint_t glyph) const
{
- if (version == 1)
+ if (version >= 1)
{
hb_barrier ();
@@ -2561,7 +2566,7 @@ struct COLR
hb_glyph_extents_t *extents,
const ItemVarStoreInstancer instancer) const
{
- return (this+clipList).get_extents (glyph,
+ return get_clip_list ().get_extents (glyph,
extents,
instancer);
}
@@ -2570,13 +2575,13 @@ struct COLR
bool
paint_glyph (hb_font_t *font, hb_codepoint_t glyph, hb_paint_funcs_t *funcs, void *data, unsigned int palette_index, hb_color_t foreground, bool clip = true) const
{
- ItemVarStoreInstancer instancer (&(this+varStore),
- &(this+varIdxMap),
+ ItemVarStoreInstancer instancer (&(get_var_store ()),
+ &(get_delta_set_index_map ()),
hb_array (font->coords, font->num_coords));
hb_paint_context_t c (this, funcs, data, font, palette_index, foreground, instancer);
c.current_glyphs.add (glyph);
- if (version == 1)
+ if (version >= 1)
{
hb_barrier ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py
index 451949fe30b..9bb8f917a37 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py
@@ -345,14 +345,18 @@ class OpenTypeRegistryParser (HTMLParser):
self.from_bcp_47_uninherited = None
# Whether the parser is in a <td> element
self._td = False
- # Whether the parser is after a <br> element within the current <tr> element
- self._br = False
+ # Whether the parser ignores the rest of the current <td> element
+ self._disengaged = False
# The text of the <td> elements of the current <tr> element.
self._current_tr = []
def handle_starttag (self, tag, attrs):
- if tag == 'br':
- self._br = True
+ if tag == 'a':
+ if self._current_tr and not self._disengaged:
+ self._current_tr[-1] = ''
+ self._disengaged = True
+ elif tag == 'br':
+ self._disengaged = True
elif tag == 'meta':
for attr, value in attrs:
if attr == 'name' and value == 'updated_at':
@@ -362,12 +366,13 @@ class OpenTypeRegistryParser (HTMLParser):
self._td = True
self._current_tr.append ('')
elif tag == 'tr':
- self._br = False
+ self._disengaged = False
self._current_tr = []
def handle_endtag (self, tag):
if tag == 'td':
self._td = False
+ self._disengaged = False
elif tag == 'tr' and self._current_tr:
expect (2 <= len (self._current_tr) <= 3)
name = self._current_tr[0].strip ()
@@ -387,7 +392,7 @@ class OpenTypeRegistryParser (HTMLParser):
self.ranks[tag] = rank
def handle_data (self, data):
- if self._td and not self._br:
+ if self._td and not self._disengaged:
self._current_tr[-1] += data
def handle_charref (self, name):
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
index 9d65dbdf230..4e868065014 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
@@ -109,6 +109,7 @@ property_names = [
'Nukta',
'Virama',
'Pure_Killer',
+ 'Reordering_Killer',
'Invisible_Stacker',
'Vowel_Independent',
'Vowel_Dependent',
@@ -263,6 +264,8 @@ def is_OTHER(U, UISC, UDI, UGC, AJT):
and not is_SYM_MOD(U, UISC, UDI, UGC, AJT)
and not is_Word_Joiner(U, UISC, UDI, UGC, AJT)
)
+def is_REORDERING_KILLER(U, UISC, UDI, UGC, AJT):
+ return UISC == Reordering_Killer
def is_REPHA(U, UISC, UDI, UGC, AJT):
return UISC in [Consonant_Preceding_Repha, Consonant_Prefixed]
def is_SAKOT(U, UISC, UDI, UGC, AJT):
@@ -306,6 +309,7 @@ use_mapping = {
'SE': is_HIEROGLYPH_SEGMENT_END,
'ZWNJ': is_ZWNJ,
'O': is_OTHER,
+ 'RK': is_REORDERING_KILLER,
'R': is_REPHA,
'Sk': is_SAKOT,
'SM': is_SYM_MOD,
@@ -358,6 +362,7 @@ use_positions = {
'Pst': [Not_Applicable],
},
'R': None,
+ 'RK': None,
'SUB': None,
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
index 5b6196a4876..9ff800daa7f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc
@@ -6,7 +6,8 @@
#include "hb-buffer-verify.cc"
#include "hb-buffer.cc"
#include "hb-common.cc"
-#include "hb-coretext.cc"
+#include "hb-coretext-font.cc"
+#include "hb-coretext-shape.cc"
#include "hb-directwrite.cc"
#include "hb-draw.cc"
#include "hb-face-builder.cc"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc
index 873d9b257ad..c363636d643 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc
@@ -617,10 +617,9 @@ hb_blob_create_from_file (const char *file_name)
/**
* hb_blob_create_from_file_or_fail:
- * @file_name: A font filename
+ * @file_name: A filename
*
- * Creates a new blob containing the data from the
- * specified binary font file.
+ * Creates a new blob containing the data from the specified file.
*
* The filename is passed directly to the system on all platforms,
* except on Windows, where the filename is interpreted as UTF-8.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc
index f4f9f54ab3b..d8b582c4908 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc
@@ -482,7 +482,7 @@ hb_cairo_init_scaled_font (cairo_scaled_font_t *scaled_font,
&hb_cairo_face_user_data_key);
font = hb_font_create (face);
-#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,16,0)
+#if !defined(HB_NO_VAR) && CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,16,0)
cairo_font_options_t *font_options = cairo_font_options_create ();
// Set variations
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
index 79fee17517a..14105846a52 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh
@@ -56,7 +56,6 @@
#ifdef HB_LEAN
#define HB_DISABLE_DEPRECATED
-#define HB_NDEBUG
#define HB_NO_ATEXIT
#define HB_NO_BUFFER_MESSAGE
#define HB_NO_BUFFER_SERIALIZE
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc
new file mode 100644
index 00000000000..e6a02cce683
--- /dev/null
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc
@@ -0,0 +1,461 @@
+/*
+ * Copyright © 2024 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Author(s): Behdad Esfahbod
+ */
+
+#include "hb.hh"
+
+#ifdef HAVE_CORETEXT
+
+#include "hb-coretext.h"
+
+#include "hb-draw.hh"
+#include "hb-font.hh"
+#include "hb-machinery.hh"
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100
+# define kCTFontOrientationDefault kCTFontDefaultOrientation
+#endif
+
+#define MAX_GLYPHS 64u
+
+static void
+_hb_coretext_font_destroy (void *font_data)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CFRelease (ct_font);
+}
+
+static hb_bool_t
+hb_coretext_get_nominal_glyph (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t unicode,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+ UniChar ch = unicode;
+ CGGlyph cg_glyph;
+ if (CTFontGetGlyphsForCharacters (ct_font, &ch, &cg_glyph, 1))
+ {
+ *glyph = cg_glyph;
+ return true;
+ }
+ return false;
+}
+
+static unsigned int
+hb_coretext_get_nominal_glyphs (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ unsigned int count,
+ const hb_codepoint_t *first_unicode,
+ unsigned int unicode_stride,
+ hb_codepoint_t *first_glyph,
+ unsigned int glyph_stride,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ UniChar ch[MAX_GLYPHS];
+ CGGlyph cg_glyph[MAX_GLYPHS];
+ for (unsigned i = 0; i < count; i += MAX_GLYPHS)
+ {
+ unsigned c = (unsigned) hb_min ((int) MAX_GLYPHS, (int) count - (int) i);
+ for (unsigned j = 0; j < c; j++)
+ {
+ ch[j] = *first_unicode;
+ first_unicode = &StructAtOffset<const hb_codepoint_t> (first_unicode, unicode_stride);
+ }
+ CTFontGetGlyphsForCharacters (ct_font, ch, cg_glyph, c);
+ for (unsigned j = 0; j < c; j++)
+ {
+ *first_glyph = cg_glyph[j];
+ first_glyph = &StructAtOffset<hb_codepoint_t> (first_glyph, glyph_stride);
+ }
+ }
+
+ return count;
+}
+
+static hb_bool_t
+hb_coretext_get_variation_glyph (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ UniChar ch[2] = { unicode, variation_selector };
+ CGGlyph cg_glyph[2];
+
+ CTFontGetGlyphsForCharacters (ct_font, ch, cg_glyph, 2);
+
+ if (cg_glyph[1])
+ return false;
+
+ *glyph = cg_glyph[0];
+ return true;
+}
+
+static void
+hb_coretext_get_glyph_h_advances (hb_font_t* font, void* font_data,
+ unsigned count,
+ const hb_codepoint_t *first_glyph,
+ unsigned glyph_stride,
+ hb_position_t *first_advance,
+ unsigned advance_stride,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size;
+
+ CGGlyph cg_glyph[MAX_GLYPHS];
+ CGSize advances[MAX_GLYPHS];
+ for (unsigned i = 0; i < count; i += MAX_GLYPHS)
+ {
+ unsigned c = (unsigned) hb_min ((int) MAX_GLYPHS, (int) count - (int) i);
+ for (unsigned j = 0; j < c; j++)
+ {
+ cg_glyph[j] = *first_glyph;
+ first_glyph = &StructAtOffset<const hb_codepoint_t> (first_glyph, glyph_stride);
+ }
+ CTFontGetAdvancesForGlyphs (ct_font, kCTFontOrientationHorizontal, cg_glyph, advances, c);
+ for (unsigned j = 0; j < c; j++)
+ {
+ *first_advance = round (advances[j].width * x_mult);
+ first_advance = &StructAtOffset<hb_position_t> (first_advance, advance_stride);
+ }
+ }
+}
+
+#ifndef HB_NO_VERTICAL
+static void
+hb_coretext_get_glyph_v_advances (hb_font_t* font, void* font_data,
+ unsigned count,
+ const hb_codepoint_t *first_glyph,
+ unsigned glyph_stride,
+ hb_position_t *first_advance,
+ unsigned advance_stride,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat y_mult = (CGFloat) -font->y_scale / ct_font_size;
+
+ CGGlyph cg_glyph[MAX_GLYPHS];
+ CGSize advances[MAX_GLYPHS];
+ for (unsigned i = 0; i < count; i += MAX_GLYPHS)
+ {
+ unsigned c = (unsigned) hb_min ((int) MAX_GLYPHS, (int) count - (int) i);
+ for (unsigned j = 0; j < c; j++)
+ {
+ cg_glyph[j] = *first_glyph;
+ first_glyph = &StructAtOffset<const hb_codepoint_t> (first_glyph, glyph_stride);
+ }
+ CTFontGetAdvancesForGlyphs (ct_font, kCTFontOrientationVertical, cg_glyph, advances, c);
+ for (unsigned j = 0; j < c; j++)
+ {
+ *first_advance = round (advances[j].width * y_mult);
+ first_advance = &StructAtOffset<hb_position_t> (first_advance, advance_stride);
+ }
+ }
+}
+#endif
+
+#ifndef HB_NO_VERTICAL
+static hb_bool_t
+hb_coretext_get_glyph_v_origin (hb_font_t *font,
+ void *font_data,
+ hb_codepoint_t glyph,
+ hb_position_t *x,
+ hb_position_t *y,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat x_mult = (CGFloat) -font->x_scale / ct_font_size;
+ CGFloat y_mult = (CGFloat) -font->y_scale / ct_font_size;
+
+ const CGGlyph glyphs = glyph;
+ CGSize origin;
+ CTFontGetVerticalTranslationsForGlyphs (ct_font, &glyphs, &origin, 1);
+
+ *x = round (x_mult * origin.width);
+ *y = round (y_mult * origin.height);
+
+ return true;
+}
+#endif
+
+static hb_bool_t
+hb_coretext_get_glyph_extents (hb_font_t *font,
+ void *font_data,
+ hb_codepoint_t glyph,
+ hb_glyph_extents_t *extents,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size;
+ CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size;
+
+ CGGlyph glyphs[1] = { glyph };
+ CGRect bounds = ::CTFontGetBoundingRectsForGlyphs(ct_font,
+ kCTFontOrientationDefault, glyphs, NULL, 1);
+
+ extents->x_bearing = round (bounds.origin.x * x_mult);
+ extents->y_bearing = round (bounds.origin.y * y_mult);
+ extents->width = round (bounds.size.width * x_mult);
+ extents->height = round (bounds.size.height * y_mult);
+
+ return true;
+}
+
+static hb_bool_t
+hb_coretext_get_font_h_extents (hb_font_t *font,
+ void *font_data,
+ hb_font_extents_t *metrics,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size;
+
+ metrics->ascender = round (CTFontGetAscent (ct_font) * y_mult);
+ metrics->descender = -round (CTFontGetDescent (ct_font) * y_mult);
+ metrics->line_gap = round (CTFontGetLeading (ct_font) * y_mult);
+
+ return true;
+}
+
+#ifndef HB_NO_DRAW
+
+static void
+ct_apply_func (void *info, const CGPathElement *element)
+{
+ hb_draw_session_t *draws = (hb_draw_session_t *) info;
+
+ switch (element->type)
+ {
+ case kCGPathElementMoveToPoint:
+ draws->move_to (element->points[0].x, element->points[0].y);
+ break;
+ case kCGPathElementAddLineToPoint:
+ draws->line_to (element->points[0].x, element->points[0].y);
+ break;
+ case kCGPathElementAddQuadCurveToPoint:
+ draws->quadratic_to (element->points[0].x, element->points[0].y,
+ element->points[1].x, element->points[1].y);
+ break;
+ case kCGPathElementAddCurveToPoint:
+ draws->cubic_to (element->points[0].x, element->points[0].y,
+ element->points[1].x, element->points[1].y,
+ element->points[2].x, element->points[2].y);
+ break;
+ case kCGPathElementCloseSubpath:
+ draws->close_path ();
+ break;
+ }
+}
+
+static void
+hb_coretext_draw_glyph (hb_font_t *font,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t glyph,
+ hb_draw_funcs_t *draw_funcs, void *draw_data,
+ void *user_data)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ CGFloat ct_font_size = CTFontGetSize (ct_font);
+ CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size;
+ CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size;
+
+ CGAffineTransform transform = CGAffineTransformIdentity;
+ transform = CGAffineTransformScale (transform, x_mult, y_mult);
+
+ CGPathRef path = CTFontCreatePathForGlyph (ct_font, glyph, &transform);
+ if (!path)
+ return;
+
+ hb_draw_session_t drawing = {draw_funcs, draw_data, font->slant};
+
+ CGPathApply (path, &drawing, ct_apply_func);
+
+ CFRelease (path);
+}
+#endif
+
+static hb_bool_t
+hb_coretext_get_glyph_name (hb_font_t *font,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t glyph,
+ char *name, unsigned int size,
+ void *user_data HB_UNUSED)
+{
+ CGFontRef cg_font = (CGFontRef) (const void *) font->face->data.coretext;
+
+ CGGlyph cg_glyph = glyph;
+ CFStringRef cf_name = CGFontCopyGlyphNameForGlyph (cg_font, cg_glyph);
+ if (!cf_name)
+ return false;
+
+ CFIndex len = CFStringGetLength (cf_name);
+ if (len > size - 1)
+ len = size - 1;
+
+ CFStringGetBytes (cf_name, CFRangeMake (0, len),
+ kCFStringEncodingUTF8, 0, false,
+ (UInt8 *) name, size, &len);
+
+ name[len] = '\0';
+ return true;
+}
+
+static hb_bool_t
+hb_coretext_get_glyph_from_name (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ const char *name, int len,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
+{
+ CTFontRef ct_font = (CTFontRef) font_data;
+
+ if (len == -1)
+ len = strlen (name);
+
+ CFStringRef cf_name = CFStringCreateWithBytes (kCFAllocatorDefault,
+ (const UInt8 *) name, len,
+ kCFStringEncodingUTF8, false);
+ CGGlyph cg_glyph = CTFontGetGlyphWithName (ct_font, cf_name);
+ *glyph = cg_glyph;
+
+ CFRelease (cf_name);
+
+ // TODO Return true for .notdef; hb-ft does that.
+
+ return cg_glyph != 0;
+}
+
+
+static inline void free_static_coretext_funcs ();
+
+static struct hb_coretext_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_coretext_font_funcs_lazy_loader_t>
+{
+ static hb_font_funcs_t *create ()
+ {
+ hb_font_funcs_t *funcs = hb_font_funcs_create ();
+
+ hb_font_funcs_set_nominal_glyph_func (funcs, hb_coretext_get_nominal_glyph, nullptr, nullptr);
+ hb_font_funcs_set_nominal_glyphs_func (funcs, hb_coretext_get_nominal_glyphs, nullptr, nullptr);
+ hb_font_funcs_set_variation_glyph_func (funcs, hb_coretext_get_variation_glyph, nullptr, nullptr);
+
+ hb_font_funcs_set_font_h_extents_func (funcs, hb_coretext_get_font_h_extents, nullptr, nullptr);
+ hb_font_funcs_set_glyph_h_advances_func (funcs, hb_coretext_get_glyph_h_advances, nullptr, nullptr);
+ //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_coretext_get_glyph_h_origin, nullptr, nullptr);
+
+#ifndef HB_NO_VERTICAL
+ //hb_font_funcs_set_font_v_extents_func (funcs, hb_coretext_get_font_v_extents, nullptr, nullptr);
+ hb_font_funcs_set_glyph_v_advances_func (funcs, hb_coretext_get_glyph_v_advances, nullptr, nullptr);
+ hb_font_funcs_set_glyph_v_origin_func (funcs, hb_coretext_get_glyph_v_origin, nullptr, nullptr);
+#endif
+
+#ifndef HB_NO_DRAW
+ hb_font_funcs_set_draw_glyph_func (funcs, hb_coretext_draw_glyph, nullptr, nullptr);
+#endif
+
+ hb_font_funcs_set_glyph_extents_func (funcs, hb_coretext_get_glyph_extents, nullptr, nullptr);
+
+#ifndef HB_NO_OT_FONT_GLYPH_NAMES
+ hb_font_funcs_set_glyph_name_func (funcs, hb_coretext_get_glyph_name, nullptr, nullptr);
+ hb_font_funcs_set_glyph_from_name_func (funcs, hb_coretext_get_glyph_from_name, nullptr, nullptr);
+#endif
+
+ hb_font_funcs_make_immutable (funcs);
+
+ hb_atexit (free_static_coretext_funcs);
+
+ return funcs;
+ }
+} static_coretext_funcs;
+
+static inline
+void free_static_coretext_funcs ()
+{
+ static_coretext_funcs.free_instance ();
+}
+
+static hb_font_funcs_t *
+_hb_coretext_get_font_funcs ()
+{
+ return static_coretext_funcs.get_unconst ();
+}
+
+
+/**
+ * hb_coretext_font_set_funcs:
+ * @font: #hb_font_t to work upon
+ *
+ * Configures the font-functions structure of the specified
+ * #hb_font_t font object to use CoreText font functions.
+ *
+ * In particular, you can use this function to configure an
+ * existing #hb_face_t face object for use with CoreText font
+ * functions even if that #hb_face_t face object was initially
+ * created with hb_face_create(), and therefore was not
+ * initially configured to use CoreText font functions.
+ *
+ * An #hb_font_t object created with hb_coretext_font_create()
+ * is preconfigured for CoreText font functions and does not
+ * require this function to be used.
+ *
+ * <note>Note: Internally, this function creates a CTFont.
+* </note>
+ *
+ * Since: 10.1.0
+ **/
+void
+hb_coretext_font_set_funcs (hb_font_t *font)
+{
+ CTFontRef ct_font = hb_coretext_font_get_ct_font (font);
+ if (unlikely (!ct_font))
+ return;
+
+ hb_font_set_funcs (font,
+ _hb_coretext_get_font_funcs (),
+ (void *) CFRetain (ct_font),
+ _hb_coretext_font_destroy);
+}
+
+#undef MAX_GLYPHS
+
+#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-shape.cc
index 070b8be02fa..73443796d42 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-shape.cc
@@ -335,7 +335,7 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_face_data_t *data)
* Creates an #hb_face_t face object from the specified
* CGFontRef.
*
- * Return value: the new #hb_face_t face object
+ * Return value: (transfer full): The new face object
*
* Since: 0.9.10
*/
@@ -348,6 +348,65 @@ hb_coretext_face_create (CGFontRef cg_font)
}
/**
+ * hb_coretext_face_create_from_file_or_fail:
+ * @file_name: A font filename
+ * @index: The index of the face within the file
+ *
+ * Creates an #hb_face_t face object from the specified
+ * font file and face index.
+ *
+ * This is similar in functionality to hb_face_create_from_file_or_fail(),
+ * but uses the CoreText library for loading the font file.
+ *
+ * Return value: (transfer full): The new face object, or `NULL` if
+ * no face is found at the specified index or the file cannot be read.
+ *
+ * Since: 10.1.0
+ */
+hb_face_t *
+hb_coretext_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index)
+{
+ auto url = CFURLCreateFromFileSystemRepresentation (nullptr,
+ (const UInt8 *) file_name,
+ strlen (file_name),
+ false);
+ if (unlikely (!url))
+ return nullptr;
+
+ auto ct_font_desc_array = CTFontManagerCreateFontDescriptorsFromURL (url);
+ if (unlikely (!ct_font_desc_array))
+ {
+ CFRelease (url);
+ return nullptr;
+ }
+ auto ct_font_desc = (CFArrayGetCount (ct_font_desc_array) > index) ?
+ (CTFontDescriptorRef) CFArrayGetValueAtIndex (ct_font_desc_array, index) : nullptr;
+ if (unlikely (!ct_font_desc))
+ {
+ CFRelease (ct_font_desc_array);
+ CFRelease (url);
+ return nullptr;
+ }
+ CFRelease (url);
+ auto ct_font = ct_font_desc ? CTFontCreateWithFontDescriptor (ct_font_desc, 0, nullptr) : nullptr;
+ CFRelease (ct_font_desc_array);
+ if (unlikely (!ct_font))
+ return nullptr;
+
+ auto cg_font = ct_font ? CTFontCopyGraphicsFont (ct_font, nullptr) : nullptr;
+ CFRelease (ct_font);
+ if (unlikely (!cg_font))
+ return nullptr;
+
+ hb_face_t *face = hb_coretext_face_create (cg_font);
+ if (unlikely (hb_face_is_immutable (face)))
+ return nullptr;
+
+ return face;
+}
+
+/**
* hb_coretext_face_get_cg_font:
* @face: The #hb_face_t to work upon
*
@@ -439,7 +498,12 @@ _hb_coretext_shaper_font_data_destroy (hb_coretext_font_data_t *data)
* Creates an #hb_font_t font object from the specified
* CTFontRef.
*
- * Return value: the new #hb_font_t font object
+ * The created font uses the default font functions implemented
+ * navitely by HarfBuzz. If you want to use the CoreText font functions
+ * instead (rarely needed), you can do so by calling
+ * by hb_coretext_font_set_funcs().
+ *
+ * Return value: (transfer full): The new font object
*
* Since: 1.7.2
**/
@@ -460,6 +524,9 @@ hb_coretext_font_create (CTFontRef ct_font)
/* Let there be dragons here... */
font->data.coretext.cmpexch (nullptr, (hb_coretext_font_data_t *) CFRetain (ct_font));
+ // https://github.com/harfbuzz/harfbuzz/pull/4895#issuecomment-2408471254
+ //hb_coretext_font_set_funcs (font);
+
return font;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h
index e53dbaf2c7f..3626f1c12f2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h
@@ -44,9 +44,9 @@ HB_BEGIN_DECLS
* HB_CORETEXT_TAG_MORT:
*
* The #hb_tag_t tag for the `mort` (glyph metamorphosis) table,
- * which holds AAT features.
+ * which holds AAT features.
*
- * For more information, see
+ * For more information, see
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html
*
**/
@@ -56,7 +56,7 @@ HB_BEGIN_DECLS
* HB_CORETEXT_TAG_MORX:
*
* The #hb_tag_t tag for the `morx` (extended glyph metamorphosis)
- * table, which holds AAT features.
+ * table, which holds AAT features.
*
* For more information, see
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html
@@ -68,9 +68,9 @@ HB_BEGIN_DECLS
* HB_CORETEXT_TAG_KERX:
*
* The #hb_tag_t tag for the `kerx` (extended kerning) table, which
- * holds AAT kerning information.
+ * holds AAT kerning information.
*
- * For more information, see
+ * For more information, see
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kerx.html
*
**/
@@ -80,6 +80,10 @@ HB_BEGIN_DECLS
HB_EXTERN hb_face_t *
hb_coretext_face_create (CGFontRef cg_font);
+HB_EXTERN hb_face_t *
+hb_coretext_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index);
+
HB_EXTERN hb_font_t *
hb_coretext_font_create (CTFontRef ct_font);
@@ -90,6 +94,9 @@ hb_coretext_face_get_cg_font (hb_face_t *face);
HB_EXTERN CTFontRef
hb_coretext_font_get_ct_font (hb_font_t *font);
+HB_EXTERN void
+hb_coretext_font_set_funcs (hb_font_t *font);
+
HB_END_DECLS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h
index 9ca0b4006e4..6306b69c09b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h
@@ -70,7 +70,7 @@ typedef struct hb_draw_state_t {
*
* The default #hb_draw_state_t at the start of glyph drawing.
*/
-#define HB_DRAW_STATE_DEFAULT {0, 0.f, 0.f, 0.f, 0.f, {0.}, {0.}, {0.}}
+#define HB_DRAW_STATE_DEFAULT {0, 0.f, 0.f, 0.f, 0.f, {0.}, {0.}, {0.}, {0.}, {0.}, {0.}, {0.}}
/**
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
index 9b4af16f4d4..bc0f6d90dc9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc
@@ -264,6 +264,61 @@ hb_face_create (hb_blob_t *blob,
}
/**
+ * hb_face_create_or_fail:
+ * @blob: #hb_blob_t to work upon
+ * @index: The index of the face within @blob
+ *
+ * Like hb_face_create(), but returns `NULL` if the blob data
+ * contains no usable font face at the specified index.
+ *
+ * Return value: (transfer full): The new face object, or `NULL` if
+ * no face is found at the specified index.
+ *
+ * Since: 10.1.0
+ **/
+hb_face_t *
+hb_face_create_or_fail (hb_blob_t *blob,
+ unsigned int index)
+{
+ unsigned num_faces = hb_face_count (blob);
+ if (index >= num_faces)
+ return nullptr;
+
+ hb_face_t *face = hb_face_create (blob, index);
+ if (hb_object_is_immutable (face))
+ return nullptr;
+
+ return face;
+}
+
+/**
+ * hb_face_create_from_file_or_fail:
+ * @file_name: A font filename
+ * @index: The index of the face within the file
+ *
+ * A thin wrapper around hb_blob_create_from_file_or_fail()
+ * followed by hb_face_create_or_fail().
+ *
+ * Return value: (transfer full): The new face object, or `NULL` if
+ * no face is found at the specified index or the file cannot be read.
+ *
+ * Since: 10.1.0
+ **/
+HB_EXTERN hb_face_t *
+hb_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index)
+{
+ hb_blob_t *blob = hb_blob_create_from_file_or_fail (file_name);
+ if (unlikely (!blob))
+ return nullptr;
+
+ hb_face_t *face = hb_face_create_or_fail (blob, index);
+ hb_blob_destroy (blob);
+
+ return face;
+}
+
+/**
* hb_face_get_empty:
*
* Fetches the singleton empty face object.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
index 98d0afec267..8aec681cf98 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h
@@ -59,6 +59,14 @@ HB_EXTERN hb_face_t *
hb_face_create (hb_blob_t *blob,
unsigned int index);
+HB_EXTERN hb_face_t *
+hb_face_create_or_fail (hb_blob_t *blob,
+ unsigned int index);
+
+HB_EXTERN hb_face_t *
+hb_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index);
+
/**
* hb_reference_table_func_t:
* @face: an #hb_face_t to reference table for
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
index 00f1f6d3825..96b79ecca75 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
@@ -231,7 +231,7 @@ hb_font_get_glyph_v_advance_nil (hb_font_t *font,
void *user_data HB_UNUSED)
{
/* TODO use font_extents.ascender+descender */
- return font->y_scale;
+ return -font->y_scale;
}
static hb_position_t
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
index f6d8bf4136a..c305df19adf 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
@@ -41,6 +41,7 @@
#include "hb-ot-shaper-arabic-pua.hh"
#include "hb-paint.hh"
+#include FT_MODULE_H
#include FT_ADVANCES_H
#include FT_MULTIPLE_MASTERS_H
#include FT_OUTLINE_H
@@ -1432,6 +1433,24 @@ hb_ft_font_create_referenced (FT_Face ft_face)
return hb_ft_font_create (ft_face, _hb_ft_face_destroy);
}
+
+static void * _hb_ft_alloc (FT_Memory memory, long size)
+{ return hb_malloc (size); }
+
+static void _hb_ft_free (FT_Memory memory, void *block)
+{ hb_free (block); }
+
+static void * _hb_ft_realloc (FT_Memory memory, long cur_size, long new_size, void *block)
+{ return hb_realloc (block, new_size); }
+
+static FT_MemoryRec_ m =
+{
+ nullptr,
+ _hb_ft_alloc,
+ _hb_ft_free,
+ _hb_ft_realloc
+};
+
static inline void free_static_ft_library ();
static struct hb_ft_library_lazy_loader_t : hb_lazy_loader_t<hb_remove_pointer<FT_Library>,
@@ -1440,16 +1459,19 @@ static struct hb_ft_library_lazy_loader_t : hb_lazy_loader_t<hb_remove_pointer<F
static FT_Library create ()
{
FT_Library l;
- if (FT_Init_FreeType (&l))
+ if (FT_New_Library (&m, &l))
return nullptr;
+ FT_Add_Default_Modules (l);
+ FT_Set_Default_Properties (l);
+
hb_atexit (free_static_ft_library);
return l;
}
static void destroy (FT_Library l)
{
- FT_Done_FreeType (l);
+ FT_Done_Library (l);
}
static FT_Library get_null ()
{
@@ -1464,9 +1486,76 @@ void free_static_ft_library ()
}
static FT_Library
-get_ft_library ()
+reference_ft_library ()
+{
+ FT_Library l = static_ft_library.get_unconst ();
+ if (unlikely (FT_Reference_Library (l)))
+ {
+ DEBUG_MSG (FT, l, "FT_Reference_Library() failed");
+ return nullptr;
+ }
+ return l;
+}
+
+static hb_user_data_key_t ft_library_key = {0};
+
+static void
+finalize_ft_library (void *arg)
+{
+ FT_Face ft_face = (FT_Face) arg;
+ FT_Done_Library ((FT_Library) ft_face->generic.data);
+}
+
+static void
+destroy_ft_library (void *arg)
+{
+ FT_Done_Library ((FT_Library) arg);
+}
+
+/**
+ * hb_ft_face_create_from_file_or_fail:
+ * @file_name: A font filename
+ * @index: The index of the face within the file
+ *
+ * Creates an #hb_face_t face object from the specified
+ * font file and face index.
+ *
+ * This is similar in functionality to hb_face_create_from_file_or_fail(),
+ * but uses the FreeType library for loading the font file.
+ *
+ * Return value: (transfer full): The new face object, or `NULL` if
+ * no face is found at the specified index or the file cannot be read.
+ *
+ * Since: 10.1.0
+ */
+hb_face_t *
+hb_ft_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index)
{
- return static_ft_library.get_unconst ();
+ FT_Library ft_library = reference_ft_library ();
+ if (unlikely (!ft_library))
+ {
+ DEBUG_MSG (FT, ft_library, "reference_ft_library failed");
+ return nullptr;
+ }
+
+ FT_Face ft_face;
+ if (unlikely (FT_New_Face (ft_library,
+ file_name,
+ index,
+ &ft_face)))
+ return nullptr;
+
+ hb_face_t *face = hb_ft_face_create_referenced (ft_face);
+ FT_Done_Face (ft_face);
+
+ ft_face->generic.data = ft_library;
+ ft_face->generic.finalizer = finalize_ft_library;
+
+ if (hb_face_is_immutable (face))
+ return nullptr;
+
+ return face;
}
static void
@@ -1511,26 +1600,36 @@ hb_ft_font_set_funcs (hb_font_t *font)
if (unlikely (!blob_length))
DEBUG_MSG (FT, font, "Font face has empty blob");
- FT_Face ft_face = nullptr;
- FT_Error err = FT_New_Memory_Face (get_ft_library (),
- (const FT_Byte *) blob_data,
- blob_length,
- hb_face_get_index (font->face),
- &ft_face);
+ FT_Library ft_library = reference_ft_library ();
+ if (unlikely (!ft_library))
+ {
+ hb_blob_destroy (blob);
+ DEBUG_MSG (FT, font, "reference_ft_library failed");
+ return;
+ }
- if (unlikely (err)) {
+ FT_Face ft_face = nullptr;
+ if (unlikely (FT_New_Memory_Face (ft_library,
+ (const FT_Byte *) blob_data,
+ blob_length,
+ hb_face_get_index (font->face),
+ &ft_face)))
+ {
hb_blob_destroy (blob);
- DEBUG_MSG (FT, font, "Font face FT_New_Memory_Face() failed");
+ DEBUG_MSG (FT, font, "FT_New_Memory_Face() failed");
return;
}
if (FT_Select_Charmap (ft_face, FT_ENCODING_MS_SYMBOL))
FT_Select_Charmap (ft_face, FT_ENCODING_UNICODE);
-
+ // Hook the blob to the FT_Face
ft_face->generic.data = blob;
ft_face->generic.finalizer = _release_blob;
+ // And the FT_Library to the blob
+ hb_blob_set_user_data (blob, &ft_library_key, ft_library, destroy_ft_library, true);
+
_hb_ft_font_set_funcs (font, ft_face, true);
hb_ft_font_set_load_flags (font, FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h
index 6a8a7abe8cc..8cf14dc391b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h
@@ -84,6 +84,9 @@ hb_ft_face_create_cached (FT_Face ft_face);
HB_EXTERN hb_face_t *
hb_ft_face_create_referenced (FT_Face ft_face);
+HB_EXTERN hb_face_t *
+hb_ft_face_create_from_file_or_fail (const char *file_name,
+ unsigned int index);
/*
* hb-font from ft-face.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
index 3707ec30f84..5d39cc03e4f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
@@ -31,6 +31,11 @@
#ifdef HAVE_ICU
+#pragma GCC diagnostic push
+
+// https://github.com/harfbuzz/harfbuzz/issues/4915
+#pragma GCC diagnostic ignored "-Wredundant-decls"
+
#include "hb-icu.h"
#include "hb-machinery.hh"
@@ -44,7 +49,6 @@
/* ICU extra semicolon, fixed since 65, https://github.com/unicode-org/icu/commit/480bec3 */
#if U_ICU_VERSION_MAJOR_NUM < 65 && (defined(__GNUC__) || defined(__clang__))
#define HB_ICU_EXTRA_SEMI_IGNORED
-#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wextra-semi-stmt"
#endif
@@ -284,8 +288,6 @@ hb_icu_get_unicode_funcs ()
return static_icu_funcs.get_unconst ();
}
-#ifdef HB_ICU_EXTRA_SEMI_IGNORED
#pragma GCC diagnostic pop
-#endif
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-limits.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-limits.hh
index 2cb14a4cc8a..fbc7bbe764e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-limits.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-limits.hh
@@ -101,7 +101,7 @@
#endif
#ifndef HB_CFF_MAX_OPS
-#define HB_CFF_MAX_OPS 10000
+#define HB_CFF_MAX_OPS 200000
#endif
#ifndef HB_MAX_COMPOSITE_OPERATIONS_PER_GLYPH
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
index 6521b1a41d8..6c9fb7e6369 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh
@@ -307,7 +307,7 @@ struct hb_hashmap_t
const V& get_with_hash (const K &key, uint32_t hash) const
{
if (!items) return item_t::default_value ();
- auto *item = fetch_item (key, hb_hash (key));
+ auto *item = fetch_item (key, hash);
if (item)
return item->value;
return item_t::default_value ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh
index f7649ab76e4..23a5c6f8b7e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ms-feature-ranges.hh
@@ -30,7 +30,7 @@
#include "hb.hh"
-/* Variations of this code exist in hb-coretext.cc as well
+/* Variations of this code exist in hb-coretext-shape.cc as well
* as hb-aat-map.cc... */
typedef struct hb_ms_feature_t {
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
index 2495306d245..7b472471083 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
@@ -642,7 +642,9 @@ _hb_ot_get_font_funcs ()
* hb_ot_font_set_funcs:
* @font: #hb_font_t to work upon
*
- * Sets the font functions to use when working with @font.
+ * Sets the font functions to use when working with @font to
+ * the HarfBuzz's native implementation. This is the default
+ * for fonts newly created.
*
* Since: 0.9.28
**/
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
index 8216f54ca1a..757b0503116 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
@@ -3714,11 +3714,11 @@ struct DeltaSetIndexMap
struct ItemVarStoreInstancer
{
- ItemVarStoreInstancer (const ItemVariationStore *varStore,
+ ItemVarStoreInstancer (const ItemVariationStore *varStore_,
const DeltaSetIndexMap *varIdxMap,
hb_array_t<const int> coords,
VarRegionList::cache_t *cache = nullptr) :
- varStore (varStore), varIdxMap (varIdxMap), coords (coords), cache (cache)
+ varStore (varStore_), varIdxMap (varIdxMap), coords (coords), cache (cache)
{
if (!varStore)
varStore = &Null(ItemVariationStore);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
index 3a8d36ac49a..f26bf51ab29 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
@@ -173,7 +173,7 @@ _hb_next_syllable (hb_buffer_t *buffer, unsigned int start)
/* Design:
* unicode_props() is a two-byte number. The low byte includes:
- * - Extended General_Category: 5 bits.
+ * - Modified General_Category: 5 bits.
* - A bit each for:
* * Is it Default_Ignorable(); we have a modified Default_Ignorable().
* * Whether it's one of the four Mongolian Free Variation Selectors,
@@ -186,17 +186,23 @@ _hb_next_syllable (hb_buffer_t *buffer, unsigned int start)
* - For Cf: whether it's ZWJ, ZWNJ, or something else.
* - For Ws: index of which space character this is, if space fallback
* is needed, ie. we don't set this by default, only if asked to.
+ *
+ * Above I said "modified" General_Category. This is because we need to
+ * remember Variation Selectors, and we don't have bits left. So we
+ * change their Gen_Cat from Mn to Cf, and use a bit of the high byte to
+ * remember them.
*/
enum hb_unicode_props_flags_t {
UPROPS_MASK_GEN_CAT = 0x001Fu,
UPROPS_MASK_IGNORABLE = 0x0020u,
- UPROPS_MASK_HIDDEN = 0x0040u, /* MONGOLIAN FREE VARIATION SELECTOR 1..4, or TAG characters */
+ UPROPS_MASK_HIDDEN = 0x0040u, /* MONGOLIAN FREE VARIATION SELECTOR 1..4, or TAG characters, or CGJ sometimes */
UPROPS_MASK_CONTINUATION=0x0080u,
/* If GEN_CAT=FORMAT, top byte masks: */
UPROPS_MASK_Cf_ZWJ = 0x0100u,
- UPROPS_MASK_Cf_ZWNJ = 0x0200u
+ UPROPS_MASK_Cf_ZWNJ = 0x0200u,
+ UPROPS_MASK_Cf_VS = 0x0400u
};
HB_MARK_AS_FLAG_T (hb_unicode_props_flags_t);
@@ -229,7 +235,7 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
/* TAG characters need similar treatment. Fixes:
* https://github.com/harfbuzz/harfbuzz/issues/463 */
else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xE0020u, 0xE007Fu))) props |= UPROPS_MASK_HIDDEN;
- /* COMBINING GRAPHEME JOINER should not be skipped; at least some times.
+ /* COMBINING GRAPHEME JOINER should not be skipped during GSUB either.
* https://github.com/harfbuzz/harfbuzz/issues/554 */
else if (unlikely (u == 0x034Fu))
{
@@ -302,6 +308,27 @@ _hb_glyph_info_get_unicode_space_fallback_type (const hb_glyph_info_t *info)
(hb_unicode_funcs_t::space_t) (info->unicode_props()>>8) :
hb_unicode_funcs_t::NOT_SPACE;
}
+static inline bool
+_hb_glyph_info_is_variation_selector (const hb_glyph_info_t *info)
+{
+ return _hb_glyph_info_get_general_category (info) ==
+ HB_UNICODE_GENERAL_CATEGORY_FORMAT &&
+ (info->unicode_props() & UPROPS_MASK_Cf_VS);
+}
+static inline void
+_hb_glyph_info_set_variation_selector (hb_glyph_info_t *info, bool customize)
+{
+ if (customize)
+ {
+ _hb_glyph_info_set_general_category (info, HB_UNICODE_GENERAL_CATEGORY_FORMAT);
+ info->unicode_props() |= UPROPS_MASK_Cf_VS;
+ }
+ else
+ {
+ // Reset to their original condition
+ _hb_glyph_info_set_general_category (info, HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK);
+ }
+}
static inline bool _hb_glyph_info_substituted (const hb_glyph_info_t *info);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
index b86649d7782..2d093f78b33 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc
@@ -222,8 +222,7 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c,
(void) buffer->next_glyph ();
buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK;
- _hb_glyph_info_set_general_category (&buffer->cur(),
- _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR);
+ _hb_glyph_info_set_variation_selector (&buffer->cur(), true);
if (buffer->not_found_variation_selector != HB_CODEPOINT_INVALID)
_hb_glyph_info_clear_default_ignorable (&buffer->cur());
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
index 1aca39101ef..59b97a79937 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc
@@ -850,12 +850,11 @@ hb_ot_deal_with_variation_selectors (hb_buffer_t *buffer)
for (unsigned int i = 0; i < count; i++)
{
- if (_hb_glyph_info_get_general_category (&info[i]) ==
- _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR)
+ if (_hb_glyph_info_is_variation_selector (&info[i]))
{
info[i].codepoint = buffer->not_found_variation_selector;
pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0;
- _hb_glyph_info_set_general_category (&info[i], HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK);
+ _hb_glyph_info_set_variation_selector (&info[i], false);
}
}
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh
index be0a2539bef..e9da28d457c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh
@@ -81,6 +81,7 @@ enum use_syllable_type_t {
#define use_syllable_machine_ex_N 4u
#define use_syllable_machine_ex_O 0u
#define use_syllable_machine_ex_R 18u
+#define use_syllable_machine_ex_RK 56u
#define use_syllable_machine_ex_SB 51u
#define use_syllable_machine_ex_SE 52u
#define use_syllable_machine_ex_SMAbv 41u
@@ -99,62 +100,62 @@ enum use_syllable_type_t {
#define use_syllable_machine_ex_ZWNJ 14u
-#line 103 "hb-ot-shaper-use-machine.hh"
+#line 104 "hb-ot-shaper-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
- 49u, 51u, 0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
+ 49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u,
14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u,
- 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 53u,
+ 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u,
1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u,
14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u,
- 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u,
- 1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u,
- 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u,
- 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u,
- 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u, 1u, 48u,
- 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u,
- 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u,
- 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u,
- 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 14u, 42u, 14u, 42u, 1u, 5u,
- 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 53u, 0
+ 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u,
+ 1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u,
+ 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u,
+ 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u,
+ 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u,
+ 1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u,
+ 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u,
+ 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u,
+ 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u,
+ 14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0
};
static const char _use_syllable_machine_key_spans[] = {
- 3, 54, 43, 43, 53, 35, 34, 34,
+ 3, 57, 46, 46, 53, 35, 34, 34,
34, 33, 33, 1, 35, 35, 35, 14,
35, 40, 40, 40, 40, 42, 40, 42,
- 42, 42, 43, 14, 48, 29, 29, 43,
+ 42, 42, 46, 14, 48, 29, 29, 46,
53, 35, 34, 34, 34, 33, 33, 1,
35, 35, 35, 14, 35, 40, 40, 40,
- 40, 42, 40, 42, 42, 42, 43, 14,
- 14, 48, 2, 11, 43, 43, 53, 35,
- 34, 34, 34, 33, 33, 1, 35, 35,
- 35, 14, 35, 40, 40, 40, 40, 42,
- 40, 42, 42, 42, 43, 14, 14, 48,
- 43, 53, 35, 34, 34, 34, 33, 33,
- 1, 35, 35, 35, 14, 35, 40, 40,
- 40, 40, 42, 40, 42, 42, 42, 43,
- 14, 48, 11, 2, 53, 29, 29, 5,
- 42, 38, 39, 41, 43
+ 40, 42, 40, 42, 42, 42, 46, 14,
+ 14, 48, 1, 2, 11, 46, 46, 53,
+ 35, 34, 34, 34, 33, 33, 1, 35,
+ 35, 35, 14, 35, 40, 40, 40, 40,
+ 42, 40, 42, 42, 42, 46, 14, 14,
+ 48, 1, 46, 53, 35, 34, 34, 34,
+ 33, 33, 1, 35, 35, 35, 14, 35,
+ 40, 40, 40, 40, 42, 40, 42, 42,
+ 42, 46, 14, 48, 11, 2, 56, 29,
+ 29, 5, 42, 38, 39, 41, 46
};
static const short _use_syllable_machine_index_offsets[] = {
- 0, 4, 59, 103, 147, 201, 237, 272,
- 307, 342, 376, 410, 412, 448, 484, 520,
- 535, 571, 612, 653, 694, 735, 778, 819,
- 862, 905, 948, 992, 1007, 1056, 1086, 1116,
- 1160, 1214, 1250, 1285, 1320, 1355, 1389, 1423,
- 1425, 1461, 1497, 1533, 1548, 1584, 1625, 1666,
- 1707, 1748, 1791, 1832, 1875, 1918, 1961, 2005,
- 2020, 2035, 2084, 2087, 2099, 2143, 2187, 2241,
- 2277, 2312, 2347, 2382, 2416, 2450, 2452, 2488,
- 2524, 2560, 2575, 2611, 2652, 2693, 2734, 2775,
- 2818, 2859, 2902, 2945, 2988, 3032, 3047, 3062,
- 3111, 3155, 3209, 3245, 3280, 3315, 3350, 3384,
- 3418, 3420, 3456, 3492, 3528, 3543, 3579, 3620,
- 3661, 3702, 3743, 3786, 3827, 3870, 3913, 3956,
- 4000, 4015, 4064, 4076, 4079, 4133, 4163, 4193,
- 4199, 4242, 4281, 4321, 4363
+ 0, 4, 62, 109, 156, 210, 246, 281,
+ 316, 351, 385, 419, 421, 457, 493, 529,
+ 544, 580, 621, 662, 703, 744, 787, 828,
+ 871, 914, 957, 1004, 1019, 1068, 1098, 1128,
+ 1175, 1229, 1265, 1300, 1335, 1370, 1404, 1438,
+ 1440, 1476, 1512, 1548, 1563, 1599, 1640, 1681,
+ 1722, 1763, 1806, 1847, 1890, 1933, 1976, 2023,
+ 2038, 2053, 2102, 2104, 2107, 2119, 2166, 2213,
+ 2267, 2303, 2338, 2373, 2408, 2442, 2476, 2478,
+ 2514, 2550, 2586, 2601, 2637, 2678, 2719, 2760,
+ 2801, 2844, 2885, 2928, 2971, 3014, 3061, 3076,
+ 3091, 3140, 3142, 3189, 3243, 3279, 3314, 3349,
+ 3384, 3418, 3452, 3454, 3490, 3526, 3562, 3577,
+ 3613, 3654, 3695, 3736, 3777, 3820, 3861, 3904,
+ 3947, 3990, 4037, 4052, 4101, 4113, 4116, 4173,
+ 4203, 4233, 4239, 4282, 4321, 4361, 4403
};
static const unsigned char _use_syllable_machine_indicies[] = {
@@ -165,571 +166,578 @@ static const unsigned char _use_syllable_machine_indicies[] = {
19, 20, 21, 8, 22, 23, 24, 25,
5, 26, 27, 28, 5, 29, 30, 31,
32, 33, 34, 35, 32, 1, 5, 36,
- 5, 37, 5, 39, 40, 38, 41, 38,
- 38, 38, 38, 38, 38, 38, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 39,
- 51, 52, 53, 54, 38, 55, 56, 57,
- 38, 58, 59, 38, 60, 61, 62, 63,
- 60, 38, 38, 38, 38, 64, 38, 39,
- 40, 38, 41, 38, 38, 38, 38, 38,
- 38, 38, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 39, 51, 52, 53, 54,
- 38, 55, 56, 57, 38, 38, 38, 38,
- 60, 61, 62, 63, 60, 38, 38, 38,
- 38, 64, 38, 39, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
+ 5, 37, 5, 5, 35, 5, 39, 40,
+ 38, 41, 38, 38, 38, 38, 38, 38,
+ 38, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 39, 51, 52, 53, 54, 38,
+ 55, 56, 57, 38, 58, 59, 38, 60,
+ 61, 62, 63, 60, 38, 38, 38, 38,
+ 64, 38, 38, 63, 38, 39, 40, 38,
41, 38, 38, 38, 38, 38, 38, 38,
- 38, 43, 44, 45, 46, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 55,
- 56, 57, 38, 38, 38, 38, 38, 61,
- 62, 63, 65, 38, 38, 38, 38, 43,
+ 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 39, 51, 52, 53, 54, 38, 55,
+ 56, 57, 38, 38, 38, 38, 60, 61,
+ 62, 63, 60, 38, 38, 38, 38, 64,
+ 38, 38, 63, 38, 39, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
38, 41, 38, 38, 38, 38, 38, 38,
38, 38, 43, 44, 45, 46, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
55, 56, 57, 38, 38, 38, 38, 38,
- 61, 62, 63, 65, 38, 41, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 44,
- 45, 46, 38, 38, 38, 38, 38, 38,
+ 61, 62, 63, 65, 38, 38, 38, 38,
+ 43, 38, 41, 38, 38, 38, 38, 38,
+ 38, 38, 38, 43, 44, 45, 46, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 61, 62, 63, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 45, 46, 38, 38, 38,
+ 38, 55, 56, 57, 38, 38, 38, 38,
+ 38, 61, 62, 63, 65, 38, 41, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 61,
- 62, 63, 38, 41, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 46,
+ 44, 45, 46, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 61, 62, 63,
+ 38, 41, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 45, 46, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 61, 62, 63, 38, 41, 38,
38, 38, 38, 38, 38, 38, 38, 38,
+ 61, 62, 63, 38, 41, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
+ 46, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 61, 62, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 61, 62, 63, 38, 41,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 62, 38, 41, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 44, 45,
- 46, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 55, 56, 57, 38, 38,
- 38, 38, 38, 61, 62, 63, 65, 38,
+ 38, 38, 38, 38, 38, 38, 61, 62,
+ 38, 41, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 62, 38, 41, 38, 41, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 44,
+ 45, 46, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 55, 56, 57, 38,
+ 38, 38, 38, 38, 61, 62, 63, 65,
+ 38, 41, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 44, 45, 46, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 56, 57, 38, 38, 38, 38, 38,
+ 61, 62, 63, 65, 38, 41, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 44,
+ 45, 46, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 57, 38,
+ 38, 38, 38, 38, 61, 62, 63, 65,
+ 38, 66, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 41, 38,
41, 38, 38, 38, 38, 38, 38, 38,
38, 38, 44, 45, 46, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 56, 57, 38, 38, 38, 38, 38, 61,
+ 38, 38, 38, 38, 38, 38, 38, 61,
62, 63, 65, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 44, 45,
- 46, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 57, 38, 38,
- 38, 38, 38, 61, 62, 63, 65, 38,
- 66, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 41, 38, 41,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 44, 45, 46, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 61, 62,
- 63, 65, 38, 41, 38, 38, 38, 38,
- 38, 38, 38, 42, 43, 44, 45, 46,
- 38, 38, 38, 38, 38, 38, 52, 53,
- 54, 38, 55, 56, 57, 38, 38, 38,
- 38, 38, 61, 62, 63, 65, 38, 38,
- 38, 38, 43, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 43, 44, 45,
+ 38, 38, 38, 38, 42, 43, 44, 45,
46, 38, 38, 38, 38, 38, 38, 52,
53, 54, 38, 55, 56, 57, 38, 38,
38, 38, 38, 61, 62, 63, 65, 38,
38, 38, 38, 43, 38, 41, 38, 38,
38, 38, 38, 38, 38, 38, 43, 44,
45, 46, 38, 38, 38, 38, 38, 38,
- 38, 53, 54, 38, 55, 56, 57, 38,
+ 52, 53, 54, 38, 55, 56, 57, 38,
38, 38, 38, 38, 61, 62, 63, 65,
38, 38, 38, 38, 43, 38, 41, 38,
38, 38, 38, 38, 38, 38, 38, 43,
44, 45, 46, 38, 38, 38, 38, 38,
- 38, 38, 38, 54, 38, 55, 56, 57,
+ 38, 38, 53, 54, 38, 55, 56, 57,
38, 38, 38, 38, 38, 61, 62, 63,
- 65, 38, 38, 38, 38, 43, 38, 67,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 42, 43, 44, 45, 46, 38, 48,
- 49, 38, 38, 38, 52, 53, 54, 38,
- 55, 56, 57, 38, 38, 38, 38, 38,
- 61, 62, 63, 65, 38, 38, 38, 38,
- 43, 38, 41, 38, 38, 38, 38, 38,
- 38, 38, 38, 43, 44, 45, 46, 38,
+ 65, 38, 38, 38, 38, 43, 38, 41,
38, 38, 38, 38, 38, 38, 38, 38,
+ 43, 44, 45, 46, 38, 38, 38, 38,
+ 38, 38, 38, 38, 54, 38, 55, 56,
+ 57, 38, 38, 38, 38, 38, 61, 62,
+ 63, 65, 38, 38, 38, 38, 43, 38,
+ 67, 38, 41, 38, 38, 38, 38, 38,
+ 38, 38, 42, 43, 44, 45, 46, 38,
+ 48, 49, 38, 38, 38, 52, 53, 54,
38, 55, 56, 57, 38, 38, 38, 38,
38, 61, 62, 63, 65, 38, 38, 38,
- 38, 43, 38, 67, 38, 41, 38, 38,
- 38, 38, 38, 38, 38, 42, 43, 44,
- 45, 46, 38, 38, 49, 38, 38, 38,
- 52, 53, 54, 38, 55, 56, 57, 38,
- 38, 38, 38, 38, 61, 62, 63, 65,
- 38, 38, 38, 38, 43, 38, 67, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 42, 43, 44, 45, 46, 38, 38, 38,
- 38, 38, 38, 52, 53, 54, 38, 55,
- 56, 57, 38, 38, 38, 38, 38, 61,
- 62, 63, 65, 38, 38, 38, 38, 43,
- 38, 67, 38, 41, 38, 38, 38, 38,
- 38, 38, 38, 42, 43, 44, 45, 46,
- 47, 48, 49, 38, 38, 38, 52, 53,
- 54, 38, 55, 56, 57, 38, 38, 38,
- 38, 38, 61, 62, 63, 65, 38, 38,
- 38, 38, 43, 38, 39, 40, 38, 41,
- 38, 38, 38, 38, 38, 38, 38, 42,
- 43, 44, 45, 46, 47, 48, 49, 50,
- 38, 51, 52, 53, 54, 38, 55, 56,
- 57, 38, 38, 38, 38, 60, 61, 62,
- 63, 60, 38, 38, 38, 38, 64, 38,
- 39, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 41, 38, 39,
+ 38, 43, 38, 41, 38, 38, 38, 38,
+ 38, 38, 38, 38, 43, 44, 45, 46,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 43, 44, 45,
- 46, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 55, 56, 57, 38, 38,
+ 38, 38, 55, 56, 57, 38, 38, 38,
+ 38, 38, 61, 62, 63, 65, 38, 38,
+ 38, 38, 43, 38, 67, 38, 41, 38,
+ 38, 38, 38, 38, 38, 38, 42, 43,
+ 44, 45, 46, 38, 38, 49, 38, 38,
+ 38, 52, 53, 54, 38, 55, 56, 57,
+ 38, 38, 38, 38, 38, 61, 62, 63,
+ 65, 38, 38, 38, 38, 43, 38, 67,
+ 38, 41, 38, 38, 38, 38, 38, 38,
+ 38, 42, 43, 44, 45, 46, 38, 38,
+ 38, 38, 38, 38, 52, 53, 54, 38,
+ 55, 56, 57, 38, 38, 38, 38, 38,
+ 61, 62, 63, 65, 38, 38, 38, 38,
+ 43, 38, 67, 38, 41, 38, 38, 38,
+ 38, 38, 38, 38, 42, 43, 44, 45,
+ 46, 47, 48, 49, 38, 38, 38, 52,
+ 53, 54, 38, 55, 56, 57, 38, 38,
38, 38, 38, 61, 62, 63, 65, 38,
+ 38, 38, 38, 43, 38, 39, 40, 38,
41, 38, 38, 38, 38, 38, 38, 38,
+ 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 38, 51, 52, 53, 54, 38, 55,
+ 56, 57, 38, 38, 38, 38, 60, 61,
+ 62, 63, 60, 38, 38, 38, 38, 64,
+ 38, 38, 63, 38, 39, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 41, 38, 39, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 58, 59, 38, 41, 38,
+ 41, 38, 38, 38, 38, 38, 38, 38,
+ 38, 43, 44, 45, 46, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 55,
+ 56, 57, 38, 38, 38, 38, 38, 61,
+ 62, 63, 65, 38, 41, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 58,
+ 59, 38, 41, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 59, 38, 4, 69, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 71,
- 72, 73, 74, 75, 76, 77, 78, 79,
- 4, 80, 81, 82, 83, 68, 84, 85,
- 86, 68, 68, 68, 68, 87, 88, 89,
- 90, 91, 68, 68, 68, 68, 92, 68,
- 4, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 70, 68, 68,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 59, 38,
+ 4, 69, 68, 70, 68, 68, 68, 68,
+ 68, 68, 68, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 4, 80, 81, 82,
+ 83, 68, 84, 85, 86, 68, 68, 68,
+ 68, 87, 88, 89, 90, 91, 68, 68,
+ 68, 68, 92, 68, 68, 93, 68, 4,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 70, 68, 68, 68,
+ 68, 68, 68, 68, 68, 72, 73, 74,
+ 75, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 84, 85, 86, 68, 68,
+ 68, 68, 68, 88, 89, 90, 94, 68,
+ 68, 68, 68, 72, 68, 70, 68, 68,
68, 68, 68, 68, 68, 68, 72, 73,
74, 75, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 84, 85, 86, 68,
- 68, 68, 68, 68, 88, 89, 90, 93,
- 68, 68, 68, 68, 72, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 68, 72,
- 73, 74, 75, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 84, 85, 86,
- 68, 68, 68, 68, 68, 88, 89, 90,
- 93, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 73, 74, 75, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 88, 89, 90, 94,
+ 68, 70, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 73, 74, 75, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 88, 89, 90, 68, 70, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 74, 75, 68, 68, 68, 68, 68, 68,
+ 88, 89, 90, 68, 70, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 74,
+ 75, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 88, 89, 90, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 75, 68, 68, 68,
+ 68, 68, 68, 88, 89, 90, 68, 70,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 88,
- 89, 90, 68, 70, 68, 68, 68, 68,
+ 68, 68, 68, 75, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 88, 89,
+ 90, 68, 70, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 88, 89, 68, 70, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 88, 89, 68, 70, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 89, 68, 70,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 73, 74, 75, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 84, 85, 86, 68, 68, 68, 68, 68,
- 88, 89, 90, 93, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 73,
- 74, 75, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 85, 86, 68,
- 68, 68, 68, 68, 88, 89, 90, 93,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 73, 74, 75, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 86, 68, 68, 68, 68, 68,
- 88, 89, 90, 93, 68, 95, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 96, 94, 70, 68, 68, 68,
+ 68, 68, 68, 68, 89, 68, 70, 68,
+ 70, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 73, 74, 75, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 84,
+ 85, 86, 68, 68, 68, 68, 68, 88,
+ 89, 90, 94, 68, 70, 68, 68, 68,
68, 68, 68, 68, 68, 68, 73, 74,
75, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 85, 86, 68, 68,
+ 68, 68, 68, 88, 89, 90, 94, 68,
+ 70, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 73, 74, 75, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 86, 68, 68, 68, 68, 68, 88,
+ 89, 90, 94, 68, 96, 95, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 95,
+ 95, 97, 95, 70, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 73, 74, 75,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 88, 89, 90, 93, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 88, 89, 90, 94, 68, 70,
+ 68, 68, 68, 68, 68, 68, 68, 71,
+ 72, 73, 74, 75, 68, 68, 68, 68,
+ 68, 68, 81, 82, 83, 68, 84, 85,
+ 86, 68, 68, 68, 68, 68, 88, 89,
+ 90, 94, 68, 68, 68, 68, 72, 68,
70, 68, 68, 68, 68, 68, 68, 68,
- 71, 72, 73, 74, 75, 68, 68, 68,
+ 68, 72, 73, 74, 75, 68, 68, 68,
68, 68, 68, 81, 82, 83, 68, 84,
85, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 93, 68, 68, 68, 68, 72,
+ 89, 90, 94, 68, 68, 68, 68, 72,
68, 70, 68, 68, 68, 68, 68, 68,
68, 68, 72, 73, 74, 75, 68, 68,
- 68, 68, 68, 68, 81, 82, 83, 68,
+ 68, 68, 68, 68, 68, 82, 83, 68,
84, 85, 86, 68, 68, 68, 68, 68,
- 88, 89, 90, 93, 68, 68, 68, 68,
+ 88, 89, 90, 94, 68, 68, 68, 68,
72, 68, 70, 68, 68, 68, 68, 68,
68, 68, 68, 72, 73, 74, 75, 68,
- 68, 68, 68, 68, 68, 68, 82, 83,
- 68, 84, 85, 86, 68, 68, 68, 68,
- 68, 88, 89, 90, 93, 68, 68, 68,
- 68, 72, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 68, 72, 73, 74, 75,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 83, 68, 84, 85, 86, 68, 68, 68,
- 68, 68, 88, 89, 90, 93, 68, 68,
- 68, 68, 72, 68, 97, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 71, 72,
- 73, 74, 75, 68, 77, 78, 68, 68,
- 68, 81, 82, 83, 68, 84, 85, 86,
- 68, 68, 68, 68, 68, 88, 89, 90,
- 93, 68, 68, 68, 68, 72, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 72, 73, 74, 75, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 84, 85,
- 86, 68, 68, 68, 68, 68, 88, 89,
- 90, 93, 68, 68, 68, 68, 72, 68,
- 97, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 71, 72, 73, 74, 75, 68,
- 68, 78, 68, 68, 68, 81, 82, 83,
+ 68, 68, 68, 68, 68, 68, 68, 83,
68, 84, 85, 86, 68, 68, 68, 68,
- 68, 88, 89, 90, 93, 68, 68, 68,
- 68, 72, 68, 97, 68, 70, 68, 68,
+ 68, 88, 89, 90, 94, 68, 68, 68,
+ 68, 72, 68, 98, 68, 70, 68, 68,
68, 68, 68, 68, 68, 71, 72, 73,
- 74, 75, 68, 68, 68, 68, 68, 68,
+ 74, 75, 68, 77, 78, 68, 68, 68,
81, 82, 83, 68, 84, 85, 86, 68,
- 68, 68, 68, 68, 88, 89, 90, 93,
- 68, 68, 68, 68, 72, 68, 97, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 68, 68, 68, 81, 82, 83, 68, 84,
- 85, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 93, 68, 68, 68, 68, 72,
- 68, 4, 69, 68, 70, 68, 68, 68,
+ 68, 68, 68, 68, 88, 89, 90, 94,
+ 68, 68, 68, 68, 72, 68, 70, 68,
+ 68, 68, 68, 68, 68, 68, 68, 72,
+ 73, 74, 75, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 84, 85, 86,
+ 68, 68, 68, 68, 68, 88, 89, 90,
+ 94, 68, 68, 68, 68, 72, 68, 98,
+ 68, 70, 68, 68, 68, 68, 68, 68,
+ 68, 71, 72, 73, 74, 75, 68, 68,
+ 78, 68, 68, 68, 81, 82, 83, 68,
+ 84, 85, 86, 68, 68, 68, 68, 68,
+ 88, 89, 90, 94, 68, 68, 68, 68,
+ 72, 68, 98, 68, 70, 68, 68, 68,
68, 68, 68, 68, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 68, 80, 81,
+ 75, 68, 68, 68, 68, 68, 68, 81,
82, 83, 68, 84, 85, 86, 68, 68,
- 68, 68, 87, 88, 89, 90, 91, 68,
- 68, 68, 68, 92, 68, 4, 98, 98,
- 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 99, 98, 4, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 96, 94, 4, 68, 68, 68, 68,
+ 68, 68, 68, 88, 89, 90, 94, 68,
+ 68, 68, 68, 72, 68, 98, 68, 70,
+ 68, 68, 68, 68, 68, 68, 68, 71,
+ 72, 73, 74, 75, 76, 77, 78, 68,
+ 68, 68, 81, 82, 83, 68, 84, 85,
+ 86, 68, 68, 68, 68, 68, 88, 89,
+ 90, 94, 68, 68, 68, 68, 72, 68,
+ 4, 69, 68, 70, 68, 68, 68, 68,
+ 68, 68, 68, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 68, 80, 81, 82,
+ 83, 68, 84, 85, 86, 68, 68, 68,
+ 68, 87, 88, 89, 90, 91, 68, 68,
+ 68, 68, 92, 68, 68, 93, 68, 4,
+ 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 100, 99, 4, 95,
+ 95, 95, 95, 95, 95, 95, 95, 95,
+ 95, 95, 95, 97, 95, 4, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 72, 73, 74, 75, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 84,
- 85, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 93, 68, 101, 102, 100, 6,
- 103, 103, 103, 103, 103, 103, 103, 103,
- 103, 104, 103, 105, 106, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 105,
- 116, 117, 118, 119, 68, 120, 121, 122,
- 68, 58, 59, 68, 123, 124, 125, 126,
- 127, 68, 68, 68, 68, 128, 68, 105,
- 106, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 105, 116, 117, 118, 119,
- 68, 120, 121, 122, 68, 68, 68, 68,
- 123, 124, 125, 126, 127, 68, 68, 68,
- 68, 128, 68, 105, 68, 68, 68, 68,
+ 68, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 68, 72, 73, 74, 75, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 108, 109, 110, 111, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 120,
- 121, 122, 68, 68, 68, 68, 68, 124,
- 125, 126, 129, 68, 68, 68, 68, 108,
+ 68, 84, 85, 86, 68, 68, 68, 68,
+ 68, 88, 89, 90, 94, 68, 100, 99,
+ 102, 103, 101, 6, 104, 104, 104, 104,
+ 104, 104, 104, 104, 104, 105, 104, 106,
+ 107, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 106, 117, 118, 119, 120,
+ 68, 121, 122, 123, 68, 58, 59, 68,
+ 124, 125, 126, 127, 128, 68, 68, 68,
+ 68, 129, 68, 68, 130, 68, 106, 107,
68, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 108, 109, 110, 111, 68, 68,
+ 68, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 106, 117, 118, 119, 120, 68,
+ 121, 122, 123, 68, 68, 68, 68, 124,
+ 125, 126, 127, 128, 68, 68, 68, 68,
+ 129, 68, 68, 130, 68, 106, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 120, 121, 122, 68, 68, 68, 68, 68,
- 124, 125, 126, 129, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 109,
- 110, 111, 68, 68, 68, 68, 68, 68,
+ 68, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 68, 109, 110, 111, 112, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 124, 125, 126, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 110, 111, 68, 68, 68,
+ 68, 121, 122, 123, 68, 68, 68, 68,
+ 68, 125, 126, 127, 131, 68, 68, 68,
+ 68, 109, 68, 70, 68, 68, 68, 68,
+ 68, 68, 68, 68, 109, 110, 111, 112,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 121, 122, 123, 68, 68, 68,
+ 68, 68, 125, 126, 127, 131, 68, 70,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 124,
- 125, 126, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 111,
+ 68, 110, 111, 112, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 125, 126,
+ 127, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 111, 112, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 124, 125, 126, 68, 70, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 125, 126, 127, 68, 70, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 112, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 124, 125, 68,
+ 68, 68, 68, 68, 125, 126, 127, 68,
70, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 125,
+ 126, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 125, 68, 70, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 109, 110,
- 111, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 120, 121, 122, 68, 68,
- 68, 68, 68, 124, 125, 126, 129, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 109, 110, 111, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 121, 122, 68, 68, 68, 68, 68, 124,
- 125, 126, 129, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 109, 110,
- 111, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 122, 68, 68,
- 68, 68, 68, 124, 125, 126, 129, 68,
- 130, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 96, 94, 70,
+ 68, 68, 126, 68, 70, 68, 70, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 109, 110, 111, 68, 68, 68, 68,
+ 110, 111, 112, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 121, 122, 123,
+ 68, 68, 68, 68, 68, 125, 126, 127,
+ 131, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 110, 111, 112, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 124, 125,
- 126, 129, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 107, 108, 109, 110, 111,
- 68, 68, 68, 68, 68, 68, 117, 118,
- 119, 68, 120, 121, 122, 68, 68, 68,
- 68, 68, 124, 125, 126, 129, 68, 68,
- 68, 68, 108, 68, 70, 68, 68, 68,
+ 68, 68, 122, 123, 68, 68, 68, 68,
+ 68, 125, 126, 127, 131, 68, 70, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 110, 111, 112, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 123,
+ 68, 68, 68, 68, 68, 125, 126, 127,
+ 131, 68, 132, 95, 95, 95, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 97,
+ 95, 70, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 110, 111, 112, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 125, 126, 127, 131, 68, 70, 68, 68,
68, 68, 68, 68, 68, 108, 109, 110,
- 111, 68, 68, 68, 68, 68, 68, 117,
- 118, 119, 68, 120, 121, 122, 68, 68,
- 68, 68, 68, 124, 125, 126, 129, 68,
- 68, 68, 68, 108, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 68, 108, 109,
- 110, 111, 68, 68, 68, 68, 68, 68,
- 68, 118, 119, 68, 120, 121, 122, 68,
- 68, 68, 68, 68, 124, 125, 126, 129,
- 68, 68, 68, 68, 108, 68, 70, 68,
+ 111, 112, 68, 68, 68, 68, 68, 68,
+ 118, 119, 120, 68, 121, 122, 123, 68,
+ 68, 68, 68, 68, 125, 126, 127, 131,
+ 68, 68, 68, 68, 109, 68, 70, 68,
+ 68, 68, 68, 68, 68, 68, 68, 109,
+ 110, 111, 112, 68, 68, 68, 68, 68,
+ 68, 118, 119, 120, 68, 121, 122, 123,
+ 68, 68, 68, 68, 68, 125, 126, 127,
+ 131, 68, 68, 68, 68, 109, 68, 70,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 109, 110, 111, 112, 68, 68, 68, 68,
+ 68, 68, 68, 119, 120, 68, 121, 122,
+ 123, 68, 68, 68, 68, 68, 125, 126,
+ 127, 131, 68, 68, 68, 68, 109, 68,
+ 70, 68, 68, 68, 68, 68, 68, 68,
+ 68, 109, 110, 111, 112, 68, 68, 68,
+ 68, 68, 68, 68, 68, 120, 68, 121,
+ 122, 123, 68, 68, 68, 68, 68, 125,
+ 126, 127, 131, 68, 68, 68, 68, 109,
+ 68, 133, 68, 70, 68, 68, 68, 68,
+ 68, 68, 68, 108, 109, 110, 111, 112,
+ 68, 114, 115, 68, 68, 68, 118, 119,
+ 120, 68, 121, 122, 123, 68, 68, 68,
+ 68, 68, 125, 126, 127, 131, 68, 68,
+ 68, 68, 109, 68, 70, 68, 68, 68,
+ 68, 68, 68, 68, 68, 109, 110, 111,
+ 112, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 121, 122, 123, 68, 68,
+ 68, 68, 68, 125, 126, 127, 131, 68,
+ 68, 68, 68, 109, 68, 133, 68, 70,
68, 68, 68, 68, 68, 68, 68, 108,
- 109, 110, 111, 68, 68, 68, 68, 68,
- 68, 68, 68, 119, 68, 120, 121, 122,
- 68, 68, 68, 68, 68, 124, 125, 126,
- 129, 68, 68, 68, 68, 108, 68, 131,
+ 109, 110, 111, 112, 68, 68, 115, 68,
+ 68, 68, 118, 119, 120, 68, 121, 122,
+ 123, 68, 68, 68, 68, 68, 125, 126,
+ 127, 131, 68, 68, 68, 68, 109, 68,
+ 133, 68, 70, 68, 68, 68, 68, 68,
+ 68, 68, 108, 109, 110, 111, 112, 68,
+ 68, 68, 68, 68, 68, 118, 119, 120,
+ 68, 121, 122, 123, 68, 68, 68, 68,
+ 68, 125, 126, 127, 131, 68, 68, 68,
+ 68, 109, 68, 133, 68, 70, 68, 68,
+ 68, 68, 68, 68, 68, 108, 109, 110,
+ 111, 112, 113, 114, 115, 68, 68, 68,
+ 118, 119, 120, 68, 121, 122, 123, 68,
+ 68, 68, 68, 68, 125, 126, 127, 131,
+ 68, 68, 68, 68, 109, 68, 106, 107,
68, 70, 68, 68, 68, 68, 68, 68,
- 68, 107, 108, 109, 110, 111, 68, 113,
- 114, 68, 68, 68, 117, 118, 119, 68,
- 120, 121, 122, 68, 68, 68, 68, 68,
- 124, 125, 126, 129, 68, 68, 68, 68,
- 108, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 108, 109, 110, 111, 68,
+ 68, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 68, 117, 118, 119, 120, 68,
+ 121, 122, 123, 68, 68, 68, 68, 124,
+ 125, 126, 127, 128, 68, 68, 68, 68,
+ 129, 68, 68, 130, 68, 106, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 100, 99, 106, 95, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 95,
+ 95, 97, 95, 106, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
- 68, 120, 121, 122, 68, 68, 68, 68,
- 68, 124, 125, 126, 129, 68, 68, 68,
- 68, 108, 68, 131, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 107, 108, 109,
- 110, 111, 68, 68, 114, 68, 68, 68,
- 117, 118, 119, 68, 120, 121, 122, 68,
- 68, 68, 68, 68, 124, 125, 126, 129,
- 68, 68, 68, 68, 108, 68, 131, 68,
70, 68, 68, 68, 68, 68, 68, 68,
- 107, 108, 109, 110, 111, 68, 68, 68,
- 68, 68, 68, 117, 118, 119, 68, 120,
- 121, 122, 68, 68, 68, 68, 68, 124,
- 125, 126, 129, 68, 68, 68, 68, 108,
- 68, 131, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 107, 108, 109, 110, 111,
- 112, 113, 114, 68, 68, 68, 117, 118,
- 119, 68, 120, 121, 122, 68, 68, 68,
- 68, 68, 124, 125, 126, 129, 68, 68,
- 68, 68, 108, 68, 105, 106, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 107,
- 108, 109, 110, 111, 112, 113, 114, 115,
- 68, 116, 117, 118, 119, 68, 120, 121,
- 122, 68, 68, 68, 68, 123, 124, 125,
- 126, 127, 68, 68, 68, 68, 128, 68,
- 105, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 98, 98, 99, 98, 105,
- 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 96, 94, 105, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 68, 108, 109, 110, 111,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 120, 121, 122, 68, 68, 68,
- 68, 68, 124, 125, 126, 129, 68, 8,
- 9, 132, 11, 132, 132, 132, 132, 132,
- 132, 132, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 8, 22, 23, 24, 25,
- 132, 26, 27, 28, 132, 132, 132, 132,
- 32, 33, 34, 35, 32, 132, 132, 132,
- 132, 37, 132, 8, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 11, 132, 132, 132, 132, 132, 132, 132,
- 132, 14, 15, 16, 17, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 26,
- 27, 28, 132, 132, 132, 132, 132, 33,
- 34, 35, 133, 132, 132, 132, 132, 14,
- 132, 11, 132, 132, 132, 132, 132, 132,
- 132, 132, 14, 15, 16, 17, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 26, 27, 28, 132, 132, 132, 132, 132,
- 33, 34, 35, 133, 132, 11, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 15,
- 16, 17, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 33, 34, 35, 132,
- 11, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 16, 17, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 33,
- 34, 35, 132, 11, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 17,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 33, 34, 35, 132, 11, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 33, 34, 132,
- 11, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 34, 132, 11, 132, 11, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 15, 16,
- 17, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 26, 27, 28, 132, 132,
- 132, 132, 132, 33, 34, 35, 133, 132,
- 11, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 15, 16, 17, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 27, 28, 132, 132, 132, 132, 132, 33,
- 34, 35, 133, 132, 11, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 15, 16,
- 17, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 28, 132, 132,
- 132, 132, 132, 33, 34, 35, 133, 132,
- 134, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 11, 132, 11,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 15, 16, 17, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 33, 34,
- 35, 133, 132, 11, 132, 132, 132, 132,
- 132, 132, 132, 13, 14, 15, 16, 17,
- 132, 132, 132, 132, 132, 132, 23, 24,
- 25, 132, 26, 27, 28, 132, 132, 132,
- 132, 132, 33, 34, 35, 133, 132, 132,
- 132, 132, 14, 132, 11, 132, 132, 132,
- 132, 132, 132, 132, 132, 14, 15, 16,
- 17, 132, 132, 132, 132, 132, 132, 23,
- 24, 25, 132, 26, 27, 28, 132, 132,
- 132, 132, 132, 33, 34, 35, 133, 132,
- 132, 132, 132, 14, 132, 11, 132, 132,
- 132, 132, 132, 132, 132, 132, 14, 15,
- 16, 17, 132, 132, 132, 132, 132, 132,
- 132, 24, 25, 132, 26, 27, 28, 132,
- 132, 132, 132, 132, 33, 34, 35, 133,
- 132, 132, 132, 132, 14, 132, 11, 132,
- 132, 132, 132, 132, 132, 132, 132, 14,
- 15, 16, 17, 132, 132, 132, 132, 132,
- 132, 132, 132, 25, 132, 26, 27, 28,
- 132, 132, 132, 132, 132, 33, 34, 35,
- 133, 132, 132, 132, 132, 14, 132, 135,
- 132, 11, 132, 132, 132, 132, 132, 132,
- 132, 13, 14, 15, 16, 17, 132, 19,
- 20, 132, 132, 132, 23, 24, 25, 132,
- 26, 27, 28, 132, 132, 132, 132, 132,
- 33, 34, 35, 133, 132, 132, 132, 132,
- 14, 132, 11, 132, 132, 132, 132, 132,
- 132, 132, 132, 14, 15, 16, 17, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 26, 27, 28, 132, 132, 132, 132,
- 132, 33, 34, 35, 133, 132, 132, 132,
- 132, 14, 132, 135, 132, 11, 132, 132,
- 132, 132, 132, 132, 132, 13, 14, 15,
- 16, 17, 132, 132, 20, 132, 132, 132,
- 23, 24, 25, 132, 26, 27, 28, 132,
- 132, 132, 132, 132, 33, 34, 35, 133,
- 132, 132, 132, 132, 14, 132, 135, 132,
- 11, 132, 132, 132, 132, 132, 132, 132,
- 13, 14, 15, 16, 17, 132, 132, 132,
- 132, 132, 132, 23, 24, 25, 132, 26,
- 27, 28, 132, 132, 132, 132, 132, 33,
- 34, 35, 133, 132, 132, 132, 132, 14,
- 132, 135, 132, 11, 132, 132, 132, 132,
- 132, 132, 132, 13, 14, 15, 16, 17,
- 18, 19, 20, 132, 132, 132, 23, 24,
- 25, 132, 26, 27, 28, 132, 132, 132,
- 132, 132, 33, 34, 35, 133, 132, 132,
- 132, 132, 14, 132, 8, 9, 132, 11,
- 132, 132, 132, 132, 132, 132, 132, 13,
- 14, 15, 16, 17, 18, 19, 20, 21,
- 132, 22, 23, 24, 25, 132, 26, 27,
- 28, 132, 132, 132, 132, 32, 33, 34,
- 35, 32, 132, 132, 132, 132, 37, 132,
- 8, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 11, 132, 8,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 11, 132, 132, 132,
- 132, 132, 132, 132, 132, 14, 15, 16,
- 17, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 26, 27, 28, 132, 132,
- 132, 132, 132, 33, 34, 35, 133, 132,
- 136, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 11, 132, 10, 11, 132, 4,
- 132, 132, 132, 4, 132, 132, 132, 132,
- 132, 8, 9, 10, 11, 132, 132, 132,
- 132, 132, 132, 132, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 8, 22, 23,
- 24, 25, 132, 26, 27, 28, 132, 29,
- 30, 132, 32, 33, 34, 35, 32, 132,
- 132, 132, 132, 37, 132, 11, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 29, 30, 132, 11, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 30,
- 132, 4, 137, 137, 137, 4, 137, 139,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 140, 138, 141, 138, 141,
- 142, 138, 139, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 1, 140, 140,
- 138, 139, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 140, 138, 141,
- 138, 139, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 138, 138, 138, 140, 138, 141,
- 138, 141, 138, 39, 40, 38, 41, 38,
+ 68, 109, 110, 111, 112, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 121,
+ 122, 123, 68, 68, 68, 68, 68, 125,
+ 126, 127, 131, 68, 100, 99, 8, 9,
+ 134, 11, 134, 134, 134, 134, 134, 134,
+ 134, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 8, 22, 23, 24, 25, 134,
+ 26, 27, 28, 134, 134, 134, 134, 32,
+ 33, 34, 35, 32, 134, 134, 134, 134,
+ 37, 134, 134, 35, 134, 8, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 11, 134, 134, 134, 134, 134,
+ 134, 134, 134, 14, 15, 16, 17, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 26, 27, 28, 134, 134, 134, 134,
+ 134, 33, 34, 35, 135, 134, 134, 134,
+ 134, 14, 134, 11, 134, 134, 134, 134,
+ 134, 134, 134, 134, 14, 15, 16, 17,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 26, 27, 28, 134, 134, 134,
+ 134, 134, 33, 34, 35, 135, 134, 11,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 15, 16, 17, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 33, 34,
+ 35, 134, 11, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 16, 17, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 33, 34, 35, 134, 11, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 17, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 33, 34, 35, 134,
+ 11, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 33,
+ 34, 134, 11, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 34, 134, 11, 134, 11, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 15, 16, 17, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 26, 27, 28,
+ 134, 134, 134, 134, 134, 33, 34, 35,
+ 135, 134, 11, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 15, 16, 17, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 27, 28, 134, 134, 134, 134,
+ 134, 33, 34, 35, 135, 134, 11, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 15, 16, 17, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 28,
+ 134, 134, 134, 134, 134, 33, 34, 35,
+ 135, 134, 136, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 11,
+ 134, 11, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 15, 16, 17, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 33, 34, 35, 135, 134, 11, 134, 134,
+ 134, 134, 134, 134, 134, 13, 14, 15,
+ 16, 17, 134, 134, 134, 134, 134, 134,
+ 23, 24, 25, 134, 26, 27, 28, 134,
+ 134, 134, 134, 134, 33, 34, 35, 135,
+ 134, 134, 134, 134, 14, 134, 11, 134,
+ 134, 134, 134, 134, 134, 134, 134, 14,
+ 15, 16, 17, 134, 134, 134, 134, 134,
+ 134, 23, 24, 25, 134, 26, 27, 28,
+ 134, 134, 134, 134, 134, 33, 34, 35,
+ 135, 134, 134, 134, 134, 14, 134, 11,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 14, 15, 16, 17, 134, 134, 134, 134,
+ 134, 134, 134, 24, 25, 134, 26, 27,
+ 28, 134, 134, 134, 134, 134, 33, 34,
+ 35, 135, 134, 134, 134, 134, 14, 134,
+ 11, 134, 134, 134, 134, 134, 134, 134,
+ 134, 14, 15, 16, 17, 134, 134, 134,
+ 134, 134, 134, 134, 134, 25, 134, 26,
+ 27, 28, 134, 134, 134, 134, 134, 33,
+ 34, 35, 135, 134, 134, 134, 134, 14,
+ 134, 137, 134, 11, 134, 134, 134, 134,
+ 134, 134, 134, 13, 14, 15, 16, 17,
+ 134, 19, 20, 134, 134, 134, 23, 24,
+ 25, 134, 26, 27, 28, 134, 134, 134,
+ 134, 134, 33, 34, 35, 135, 134, 134,
+ 134, 134, 14, 134, 11, 134, 134, 134,
+ 134, 134, 134, 134, 134, 14, 15, 16,
+ 17, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 26, 27, 28, 134, 134,
+ 134, 134, 134, 33, 34, 35, 135, 134,
+ 134, 134, 134, 14, 134, 137, 134, 11,
+ 134, 134, 134, 134, 134, 134, 134, 13,
+ 14, 15, 16, 17, 134, 134, 20, 134,
+ 134, 134, 23, 24, 25, 134, 26, 27,
+ 28, 134, 134, 134, 134, 134, 33, 34,
+ 35, 135, 134, 134, 134, 134, 14, 134,
+ 137, 134, 11, 134, 134, 134, 134, 134,
+ 134, 134, 13, 14, 15, 16, 17, 134,
+ 134, 134, 134, 134, 134, 23, 24, 25,
+ 134, 26, 27, 28, 134, 134, 134, 134,
+ 134, 33, 34, 35, 135, 134, 134, 134,
+ 134, 14, 134, 137, 134, 11, 134, 134,
+ 134, 134, 134, 134, 134, 13, 14, 15,
+ 16, 17, 18, 19, 20, 134, 134, 134,
+ 23, 24, 25, 134, 26, 27, 28, 134,
+ 134, 134, 134, 134, 33, 34, 35, 135,
+ 134, 134, 134, 134, 14, 134, 8, 9,
+ 134, 11, 134, 134, 134, 134, 134, 134,
+ 134, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 134, 22, 23, 24, 25, 134,
+ 26, 27, 28, 134, 134, 134, 134, 32,
+ 33, 34, 35, 32, 134, 134, 134, 134,
+ 37, 134, 134, 35, 134, 8, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 11, 134, 8, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 11, 134, 134, 134, 134, 134, 134,
+ 134, 134, 14, 15, 16, 17, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 26, 27, 28, 134, 134, 134, 134, 134,
+ 33, 34, 35, 135, 134, 138, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 11,
+ 134, 10, 11, 134, 4, 134, 134, 134,
+ 4, 134, 134, 134, 134, 134, 8, 9,
+ 10, 11, 134, 134, 134, 134, 134, 134,
+ 134, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 8, 22, 23, 24, 25, 134,
+ 26, 27, 28, 134, 29, 30, 134, 32,
+ 33, 34, 35, 32, 134, 134, 134, 134,
+ 37, 134, 134, 35, 134, 11, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 29, 30, 134, 11, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 30,
+ 134, 4, 139, 139, 139, 4, 139, 141,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 142, 140, 143, 140, 143,
+ 144, 140, 141, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 1, 142, 142,
+ 140, 141, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 142, 140, 143,
+ 140, 141, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 142, 140, 143,
+ 140, 143, 140, 39, 40, 38, 41, 38,
38, 38, 38, 38, 38, 38, 42, 43,
44, 45, 46, 47, 48, 49, 50, 39,
51, 52, 53, 54, 38, 55, 56, 57,
38, 58, 59, 38, 60, 61, 62, 63,
- 60, 1, 38, 2, 38, 64, 38, 0
+ 60, 1, 38, 2, 38, 64, 38, 38,
+ 63, 38, 0
};
static const char _use_syllable_machine_trans_targs[] = {
- 1, 120, 0, 2, 31, 1, 58, 60,
- 88, 89, 114, 1, 116, 102, 90, 91,
- 92, 93, 106, 108, 109, 110, 111, 103,
- 104, 105, 97, 98, 99, 117, 118, 119,
- 112, 94, 95, 96, 124, 113, 1, 3,
+ 1, 122, 0, 2, 31, 1, 59, 61,
+ 90, 91, 116, 1, 118, 104, 92, 93,
+ 94, 95, 108, 110, 111, 112, 113, 105,
+ 106, 107, 99, 100, 101, 119, 120, 121,
+ 114, 96, 97, 98, 126, 115, 1, 3,
4, 1, 17, 5, 6, 7, 8, 21,
23, 24, 25, 26, 18, 19, 20, 12,
13, 14, 29, 30, 27, 9, 10, 11,
28, 15, 16, 22, 1, 32, 1, 45,
33, 34, 35, 36, 49, 51, 52, 53,
54, 46, 47, 48, 40, 41, 42, 55,
- 37, 38, 39, 56, 57, 43, 1, 44,
- 1, 50, 1, 1, 1, 59, 1, 1,
- 1, 61, 62, 75, 63, 64, 65, 66,
- 79, 81, 82, 83, 84, 76, 77, 78,
- 70, 71, 72, 85, 67, 68, 69, 86,
- 87, 73, 74, 80, 1, 100, 101, 107,
- 115, 1, 1, 1, 121, 122, 123
+ 37, 38, 39, 56, 57, 58, 43, 1,
+ 44, 1, 50, 1, 1, 1, 60, 1,
+ 1, 1, 62, 63, 76, 64, 65, 66,
+ 67, 80, 82, 83, 84, 85, 77, 78,
+ 79, 71, 72, 73, 86, 68, 69, 70,
+ 87, 88, 89, 74, 75, 81, 1, 102,
+ 103, 109, 117, 1, 1, 1, 123, 124,
+ 125
};
static const char _use_syllable_machine_trans_actions[] = {
@@ -744,13 +752,14 @@ static const char _use_syllable_machine_trans_actions[] = {
0, 0, 0, 0, 9, 0, 10, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 11, 0,
- 12, 0, 13, 14, 15, 0, 16, 17,
- 18, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11,
+ 0, 12, 0, 13, 14, 15, 0, 16,
+ 17, 18, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0, 0, 0,
- 0, 20, 21, 22, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 19, 0,
+ 0, 0, 0, 20, 21, 22, 0, 0,
+ 0
};
static const char _use_syllable_machine_to_state_actions[] = {
@@ -769,7 +778,7 @@ static const char _use_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0
};
static const char _use_syllable_machine_from_state_actions[] = {
@@ -788,7 +797,7 @@ static const char _use_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0
};
static const short _use_syllable_machine_eof_trans[] = {
@@ -797,17 +806,17 @@ static const short _use_syllable_machine_eof_trans[] = {
39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 69,
69, 69, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 95, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 69, 99,
- 95, 69, 101, 104, 69, 69, 69, 69,
+ 69, 69, 69, 96, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 100,
+ 96, 69, 100, 102, 105, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
- 69, 95, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 99, 95, 69,
- 133, 133, 133, 133, 133, 133, 133, 133,
- 133, 133, 133, 133, 133, 133, 133, 133,
- 133, 133, 133, 133, 133, 133, 133, 133,
- 133, 133, 133, 133, 133, 133, 133, 138,
- 139, 139, 139, 139, 39
+ 69, 69, 96, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 100, 96,
+ 69, 100, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 140, 141, 141, 141, 141, 39
};
static const int use_syllable_machine_start = 1;
@@ -821,7 +830,7 @@ static const int use_syllable_machine_en_main = 1;
-#line 184 "hb-ot-shaper-use-machine.rl"
+#line 185 "hb-ot-shaper-use-machine.rl"
#define found_syllable(syllable_type) \
@@ -920,7 +929,7 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int act HB_UNUSED;
int cs;
-#line 924 "hb-ot-shaper-use-machine.hh"
+#line 933 "hb-ot-shaper-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@@ -928,12 +937,12 @@ find_syllables_use (hb_buffer_t *buffer)
act = 0;
}
-#line 284 "hb-ot-shaper-use-machine.rl"
+#line 285 "hb-ot-shaper-use-machine.rl"
unsigned int syllable_serial = 1;
-#line 937 "hb-ot-shaper-use-machine.hh"
+#line 946 "hb-ot-shaper-use-machine.hh"
{
int _slen;
int _trans;
@@ -947,7 +956,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 951 "hb-ot-shaper-use-machine.hh"
+#line 960 "hb-ot-shaper-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@@ -970,82 +979,82 @@ _eof_trans:
{te = p+1;}
break;
case 14:
-#line 172 "hb-ot-shaper-use-machine.rl"
+#line 173 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
break;
case 12:
-#line 173 "hb-ot-shaper-use-machine.rl"
+#line 174 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
break;
case 10:
-#line 174 "hb-ot-shaper-use-machine.rl"
+#line 175 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_standard_cluster); }}
break;
case 18:
-#line 175 "hb-ot-shaper-use-machine.rl"
+#line 176 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
case 16:
-#line 176 "hb-ot-shaper-use-machine.rl"
+#line 177 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_numeral_cluster); }}
break;
case 8:
-#line 177 "hb-ot-shaper-use-machine.rl"
+#line 178 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_symbol_cluster); }}
break;
case 22:
-#line 178 "hb-ot-shaper-use-machine.rl"
+#line 179 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
break;
case 5:
-#line 179 "hb-ot-shaper-use-machine.rl"
+#line 180 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
case 4:
-#line 180 "hb-ot-shaper-use-machine.rl"
+#line 181 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_non_cluster); }}
break;
case 13:
-#line 172 "hb-ot-shaper-use-machine.rl"
+#line 173 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
break;
case 11:
-#line 173 "hb-ot-shaper-use-machine.rl"
+#line 174 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
break;
case 9:
-#line 174 "hb-ot-shaper-use-machine.rl"
+#line 175 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_standard_cluster); }}
break;
case 17:
-#line 175 "hb-ot-shaper-use-machine.rl"
+#line 176 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
case 15:
-#line 176 "hb-ot-shaper-use-machine.rl"
+#line 177 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_numeral_cluster); }}
break;
case 7:
-#line 177 "hb-ot-shaper-use-machine.rl"
+#line 178 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_symbol_cluster); }}
break;
case 21:
-#line 178 "hb-ot-shaper-use-machine.rl"
+#line 179 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
break;
case 19:
-#line 179 "hb-ot-shaper-use-machine.rl"
+#line 180 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
case 20:
-#line 180 "hb-ot-shaper-use-machine.rl"
+#line 181 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_non_cluster); }}
break;
case 1:
-#line 177 "hb-ot-shaper-use-machine.rl"
+#line 178 "hb-ot-shaper-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
break;
-#line 1049 "hb-ot-shaper-use-machine.hh"
+#line 1058 "hb-ot-shaper-use-machine.hh"
}
_again:
@@ -1054,7 +1063,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1058 "hb-ot-shaper-use-machine.hh"
+#line 1067 "hb-ot-shaper-use-machine.hh"
}
if ( ++p != pe )
@@ -1070,7 +1079,7 @@ _again:
}
-#line 289 "hb-ot-shaper-use-machine.rl"
+#line 290 "hb-ot-shaper-use-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl
index 374fcad9f84..f5a2091a3da 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl
@@ -85,6 +85,7 @@ export SE = 52; # HIEROGLYPH_SEGMENT_END
export HVM = 53; # HALANT_OR_VOWEL_MODIFIER
export HM = 54; # HIEROGLYPH_MOD
export HR = 55; # HIEROGLYPH_MIRROR
+export RK = 56; # REORDERING_KILLER
export FAbv = 24; # CONS_FINAL_ABOVE
export FBlw = 25; # CONS_FINAL_BELOW
@@ -138,7 +139,7 @@ symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+;
virama_terminated_cluster_tail =
consonant_modifiers
- IS
+ (IS | RK)
;
virama_terminated_cluster =
complex_syllable_start
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
index e8218834e76..9cd4469c646 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh
@@ -67,6 +67,7 @@
#define N USE(N) /* BASE_NUM */
#define O USE(O) /* OTHER */
#define R USE(R) /* REPHA */
+#define RK USE(RK) /* REORDERING_KILLER */
#define SB USE(SB) /* HIEROGLYPH_SEGMENT_BEGIN */
#define SE USE(SE) /* HIEROGLYPH_SEGMENT_END */
#define SUB USE(SUB) /* CONS_SUB */
@@ -101,7 +102,7 @@
#ifndef HB_OPTIMIZE_SIZE
static const uint8_t
-hb_use_u8[3343] =
+hb_use_u8[3345] =
{
16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
@@ -201,89 +202,89 @@ hb_use_u8[3343] =
2, 2, 2, 107, 22, 20, 20, 22, 48, 48, 22, 108, 2, 2, 2, 9,
0, 0, 0, 0, 0, 0, 109, 110, 110, 110, 110, 0, 0, 0, 0, 0,
0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 111, 61,
- 2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 14, 0, 0, 0, 0, 0,
- 0, 2, 2, 61, 18, 48, 23, 112, 102, 102, 102, 113, 114, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 115, 115, 115, 11, 115,
- 115, 15, 115, 115, 115, 26, 0, 40, 0, 0, 0, 116, 51, 11, 5, 0,
- 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 6, 118,
- 119, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119,
- 120, 119, 119, 119, 119, 119, 119, 119, 119, 0, 0, 121, 0, 0, 0, 0,
- 0, 0, 7, 121, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 122, 122, 0, 0,
+ 2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 112, 0, 0, 0, 0, 0,
+ 0, 2, 2, 61, 18, 48, 23, 113, 102, 102, 102, 114, 115, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 116, 116, 116, 11, 116,
+ 116, 15, 116, 116, 116, 26, 0, 40, 0, 0, 0, 117, 51, 11, 5, 0,
+ 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 6, 119,
+ 120, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120,
+ 121, 120, 120, 120, 120, 120, 120, 120, 120, 0, 0, 122, 0, 0, 0, 0,
+ 0, 0, 7, 122, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 123, 123, 0, 0,
0, 2, 2, 2, 2, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
- 123, 0, 122, 122, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2,
+ 124, 0, 123, 123, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2,
2, 2, 65, 19, 16, 0, 0, 31, 0, 2, 2, 0, 0, 0, 0, 0,
- 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 124, 23, 23, 23, 23,
- 23, 23, 23, 125, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 126, 115,
- 0, 2, 2, 2, 127, 20, 59, 20, 112, 102, 128, 0, 0, 0, 0, 0,
- 0, 11, 129, 2, 2, 2, 2, 2, 2, 2, 130, 23, 22, 20, 48, 131,
- 132, 133, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2,
- 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 134, 135, 136, 0, 0, 0,
- 0, 2, 137, 2, 2, 2, 2, 138, 0, 30, 2, 42, 5, 0, 79, 15,
- 2, 53, 22, 139, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 140, 21, 25, 0, 0, 141, 142, 0, 0, 0,
- 0, 2, 65, 45, 23, 80, 47, 143, 0, 81, 81, 81, 81, 81, 81, 81,
- 81, 0, 0, 0, 0, 0, 0, 0, 6, 119, 119, 119, 119, 120, 0, 0,
+ 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 125, 23, 23, 23, 23,
+ 23, 23, 23, 126, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 127, 116,
+ 0, 2, 2, 2, 128, 20, 59, 20, 113, 102, 129, 0, 0, 0, 0, 0,
+ 0, 11, 130, 2, 2, 2, 2, 2, 2, 2, 131, 23, 22, 20, 48, 132,
+ 133, 134, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2,
+ 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 135, 136, 137, 0, 0, 0,
+ 0, 2, 138, 2, 2, 2, 2, 139, 0, 30, 2, 42, 5, 0, 79, 15,
+ 2, 53, 22, 140, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 141, 21, 25, 0, 0, 142, 143, 0, 0, 0,
+ 0, 2, 65, 45, 23, 80, 47, 144, 0, 81, 81, 81, 81, 81, 81, 81,
+ 81, 0, 0, 0, 0, 0, 0, 0, 6, 120, 120, 120, 120, 121, 0, 0,
0, 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 2, 30, 2, 2, 2,
- 2, 2, 30, 2, 2, 2, 30, 9, 0, 127, 20, 27, 31, 0, 0, 144,
- 145, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0,
- 146, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0,
+ 2, 2, 30, 2, 2, 2, 30, 9, 0, 128, 20, 27, 31, 0, 0, 145,
+ 146, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0,
+ 147, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 30, 2, 2, 9, 2, 2, 11, 41, 0, 0, 0,
0, 2, 2, 2, 0, 27, 22, 22, 30, 2, 2, 2, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 115, 115, 115, 115,
- 115, 147, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 116, 116, 116, 116,
+ 116, 148, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0,
0, 9, 2, 2, 9, 2, 2, 2, 2, 30, 2, 9, 0, 30, 2, 0,
- 0, 148, 149, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20,
- 20, 20, 22, 22, 133, 0, 0, 0, 0, 0, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0,
- 152, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0,
+ 0, 149, 150, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20,
+ 20, 20, 22, 22, 134, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 152,
+ 152, 152, 152, 152, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0,
+ 153, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0,
0, 0, 31, 0, 0, 0, 0, 0, 0, 11, 49, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 127, 20, 22, 153, 22, 21, 154, 155, 2, 2, 2, 2,
- 2, 0, 0, 65, 156, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0,
- 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 157, 0, 0, 56, 158, 31,
- 159, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23,
- 19, 22, 22, 160, 44, 0, 0, 0, 49, 127, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 128, 20, 22, 154, 22, 21, 155, 156, 2, 2, 2, 2,
+ 2, 0, 0, 65, 157, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0,
+ 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 158, 0, 0, 56, 159, 31,
+ 160, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23,
+ 19, 22, 22, 161, 44, 0, 0, 0, 49, 128, 0, 0, 0, 0, 0, 0,
0, 2, 2, 2, 9, 9, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2,
- 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 161, 31, 0,
+ 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 162, 31, 0,
0, 11, 11, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 58, 17,
23, 16, 23, 47, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 0,
2, 2, 23, 0, 11, 11, 11, 46, 0, 11, 11, 46, 0, 0, 0, 0,
0, 2, 2, 2, 2, 2, 30, 0, 9, 2, 2, 2, 30, 45, 59, 20,
- 20, 31, 33, 32, 32, 25, 162, 29, 163, 164, 37, 0, 0, 0, 0, 0,
+ 20, 31, 33, 32, 32, 25, 163, 29, 164, 165, 37, 0, 0, 0, 0, 0,
0, 12, 26, 0, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20,
- 22, 23, 125, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0,
- 165, 166, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25,
- 159, 11, 167, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 65, 25, 20, 20, 0, 48, 48, 11, 168, 37, 0, 0, 0, 0, 0, 0,
+ 22, 23, 126, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0,
+ 166, 167, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25,
+ 160, 11, 168, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
+ 65, 25, 20, 20, 0, 48, 48, 11, 169, 37, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82,
- 168, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 169,
- 25, 20, 22, 22, 167, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43,
- 135, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 168, 37, 0,
+ 169, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 170,
+ 25, 20, 22, 22, 168, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43,
+ 136, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 169, 37, 0,
0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2,
- 2, 23, 23, 18, 32, 33, 12, 170, 164, 171, 172, 0, 0, 0, 0, 0,
+ 2, 23, 23, 18, 32, 33, 12, 171, 165, 172, 173, 0, 0, 0, 0, 0,
0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23,
- 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 139, 2,
- 2, 2, 173, 174, 11, 15, 175, 61, 176, 0, 0, 1, 146, 0, 0, 0,
- 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 157, 157, 157, 177, 177,
- 177, 177, 177, 177, 15, 178, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11,
- 168, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0,
+ 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 140, 2,
+ 2, 2, 174, 175, 11, 15, 176, 61, 177, 0, 0, 1, 147, 0, 0, 0,
+ 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 158, 158, 158, 178, 178,
+ 178, 178, 178, 178, 15, 179, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11,
+ 169, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0,
0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22,
- 27, 11, 158, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2,
+ 27, 11, 159, 180, 181, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2,
2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0,
- 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2,
- 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 142, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 155, 0, 0, 183, 183, 183, 183, 183, 183, 183,
- 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189,
- 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0,
- 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192,
- 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2,
+ 0, 2, 182, 66, 47, 0, 0, 0, 0, 11, 183, 2, 2, 2, 2, 2,
+ 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 156, 0, 0, 184, 184, 184, 184, 184, 184, 184,
+ 184, 185, 185, 185, 186, 187, 185, 184, 184, 188, 184, 184, 189, 190, 190, 190,
+ 190, 190, 190, 190, 0, 0, 0, 0, 0, 184, 184, 184, 184, 184, 191, 0,
+ 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 192, 193,
+ 194, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0,
- 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0,
+ 58, 195, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 0, 0, 0, 40, 116, 26, 0, 0, 0, 0, 0,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0,
+ 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 120, 120, 120, 121, 0,
0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11,
11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2,
@@ -301,17 +302,18 @@ hb_use_u8[3343] =
FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB,
CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv,
VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv,
- VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,
- VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O,
- H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv,
- MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw,
- B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw,
- B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv,
- O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,
- CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst,
- R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw,
- IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR,
- G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw,
+ VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, RK, RK, VBlw, FAbv,VMPre,VMPre,FMAbv,
+ CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB,
+ SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,
+ CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv,
+ FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O,
+ IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv,
+ IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst,
+ O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv,
+ VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv,
+ IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE,
+ J, HR, G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O,
+ VBlw,
};
static const uint16_t
hb_use_u16[856] =
@@ -387,7 +389,7 @@ hb_use_get_category (unsigned u)
#else
static const uint8_t
-hb_use_u8[3655] =
+hb_use_u8[3657] =
{
16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
@@ -507,89 +509,89 @@ hb_use_u8[3655] =
48, 48, 22, 108, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 109, 110,
110, 110, 110, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2,
2, 60, 61, 59, 25, 22, 111, 61, 2, 2, 2, 2, 107, 22, 23, 45,
- 45, 102, 14, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 112,
- 102, 102, 102, 113, 114, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30,
- 2, 11, 46, 115, 115, 115, 11, 115, 115, 15, 115, 115, 115, 26, 0, 40,
- 0, 0, 0, 116, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0,
- 0, 0, 0, 0, 0, 0, 6, 118, 119, 42, 42, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119,
- 119, 0, 0, 121, 0, 0, 0, 0, 0, 0, 7, 121, 0, 0, 0, 0,
+ 45, 102, 112, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 113,
+ 102, 102, 102, 114, 115, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30,
+ 2, 11, 46, 116, 116, 116, 11, 116, 116, 15, 116, 116, 116, 26, 0, 40,
+ 0, 0, 0, 117, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0,
+ 0, 0, 0, 0, 0, 0, 6, 119, 120, 42, 42, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 120, 120, 121, 120, 120, 120, 120, 120, 120, 120,
+ 120, 0, 0, 122, 0, 0, 0, 0, 0, 0, 7, 122, 0, 0, 0, 0,
0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 0, 123, 0, 122, 122, 0, 0, 0, 0,
+ 0, 0, 0, 0, 123, 123, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0,
+ 30, 0, 0, 0, 0, 0, 0, 0, 124, 0, 123, 123, 0, 0, 0, 0,
0, 2, 53, 2, 108, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31,
0, 2, 2, 0, 0, 0, 0, 0, 0, 29, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 124, 23, 23, 23, 23, 23, 23, 23, 125, 0, 0, 0, 0,
+ 2, 2, 2, 125, 23, 23, 23, 23, 23, 23, 23, 126, 0, 0, 0, 0,
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 0, 0,
- 52, 2, 2, 2, 22, 22, 126, 115, 0, 2, 2, 2, 127, 20, 59, 20,
- 112, 102, 128, 0, 0, 0, 0, 0, 0, 11, 129, 2, 2, 2, 2, 2,
- 2, 2, 130, 23, 22, 20, 48, 131, 132, 133, 0, 0, 0, 0, 0, 0,
+ 52, 2, 2, 2, 22, 22, 127, 116, 0, 2, 2, 2, 128, 20, 59, 20,
+ 113, 102, 129, 0, 0, 0, 0, 0, 0, 11, 130, 2, 2, 2, 2, 2,
+ 2, 2, 131, 23, 22, 20, 48, 132, 133, 134, 0, 0, 0, 0, 0, 0,
0, 2, 2, 52, 30, 2, 2, 2, 2, 2, 2, 2, 2, 10, 22, 59,
- 99, 76, 134, 135, 136, 0, 0, 0, 0, 2, 137, 2, 2, 2, 2, 138,
- 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 139, 52, 53, 2, 2,
- 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 140, 21,
- 25, 0, 0, 141, 142, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 143,
+ 99, 76, 135, 136, 137, 0, 0, 0, 0, 2, 138, 2, 2, 2, 2, 139,
+ 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 140, 52, 53, 2, 2,
+ 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 141, 21,
+ 25, 0, 0, 142, 143, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 144,
0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0,
- 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2,
+ 6, 120, 120, 120, 120, 121, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2,
2, 2, 9, 2, 30, 2, 2, 2, 2, 2, 30, 2, 2, 2, 30, 9,
- 0, 127, 20, 27, 31, 0, 0, 144, 145, 2, 2, 30, 2, 30, 2, 2,
- 2, 2, 2, 2, 0, 14, 37, 0, 146, 2, 2, 13, 37, 0, 30, 2,
+ 0, 128, 20, 27, 31, 0, 0, 145, 146, 2, 2, 30, 2, 30, 2, 2,
+ 2, 2, 2, 2, 0, 14, 37, 0, 147, 2, 2, 13, 37, 0, 30, 2,
2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2,
9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22,
30, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38,
- 0, 2, 2, 2, 115, 115, 115, 115, 115, 147, 2, 9, 0, 0, 0, 0,
+ 0, 2, 2, 2, 116, 116, 116, 116, 116, 148, 2, 9, 0, 0, 0, 0,
0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2,
- 2, 30, 2, 9, 0, 30, 2, 0, 0, 148, 149, 150, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 133, 0, 0, 0,
- 0, 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 2, 2, 2, 2,
- 2, 53, 52, 53, 0, 0, 0, 0, 152, 11, 74, 2, 2, 2, 2, 2,
+ 2, 30, 2, 9, 0, 30, 2, 0, 0, 149, 150, 151, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 134, 0, 0, 0,
+ 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 2, 2, 2, 2,
+ 2, 53, 52, 53, 0, 0, 0, 0, 153, 11, 74, 2, 2, 2, 2, 2,
2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0,
- 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 20, 22, 153,
- 22, 21, 154, 155, 2, 2, 2, 2, 2, 0, 0, 65, 156, 0, 0, 0,
+ 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 20, 22, 154,
+ 22, 21, 155, 156, 2, 2, 2, 2, 2, 0, 0, 65, 157, 0, 0, 0,
0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 65, 25, 20, 20, 20, 22,
- 22, 108, 157, 0, 0, 56, 158, 31, 159, 30, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 160, 44, 0, 0, 0,
- 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2,
+ 22, 108, 158, 0, 0, 56, 159, 31, 160, 30, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 161, 44, 0, 0, 0,
+ 49, 128, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2,
30, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2,
- 10, 18, 19, 21, 22, 161, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9,
+ 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9,
30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34,
0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46,
0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0,
- 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 162, 29,
- 163, 164, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0,
- 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 125, 15, 17, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0,
- 0, 18, 19, 20, 20, 66, 99, 25, 159, 11, 167, 9, 0, 0, 0, 0,
+ 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 163, 29,
+ 164, 165, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0,
+ 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 126, 15, 17, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 0, 0, 166, 167, 0, 0, 0, 0, 0, 0,
+ 0, 18, 19, 20, 20, 66, 99, 25, 160, 11, 168, 9, 0, 0, 0, 0,
0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11,
- 168, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20,
- 0, 23, 19, 20, 20, 21, 16, 82, 168, 38, 0, 0, 0, 0, 0, 0,
- 0, 2, 2, 2, 2, 2, 10, 169, 25, 20, 22, 22, 167, 9, 0, 0,
- 0, 2, 2, 2, 2, 2, 9, 43, 135, 23, 22, 20, 76, 21, 22, 0,
+ 169, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20,
+ 0, 23, 19, 20, 20, 21, 16, 82, 169, 38, 0, 0, 0, 0, 0, 0,
+ 0, 2, 2, 2, 2, 2, 10, 170, 25, 20, 22, 22, 168, 9, 0, 0,
+ 0, 2, 2, 2, 2, 2, 9, 43, 136, 23, 22, 20, 76, 21, 22, 0,
0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18,
- 19, 20, 21, 22, 105, 168, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2,
- 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 170,
- 164, 171, 172, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2,
+ 19, 20, 21, 22, 105, 169, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2,
+ 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 171,
+ 165, 172, 173, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2,
2, 65, 25, 20, 20, 0, 22, 23, 29, 108, 0, 33, 0, 0, 0, 0,
- 0, 52, 20, 22, 22, 22, 139, 2, 2, 2, 173, 174, 11, 15, 175, 61,
- 176, 0, 0, 1, 146, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2,
- 2, 2, 2, 157, 157, 157, 177, 177, 177, 177, 177, 177, 15, 178, 0, 30,
- 0, 22, 20, 20, 31, 22, 22, 11, 168, 0, 61, 61, 61, 61, 61, 61,
+ 0, 52, 20, 22, 22, 22, 140, 2, 2, 2, 174, 175, 11, 15, 176, 61,
+ 177, 0, 0, 1, 147, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2,
+ 2, 2, 2, 158, 158, 158, 178, 178, 178, 178, 178, 178, 15, 179, 0, 30,
+ 0, 22, 20, 20, 31, 22, 22, 11, 169, 0, 61, 61, 61, 61, 61, 61,
61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2,
- 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 158, 179, 180, 0, 0, 0,
+ 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 159, 180, 181, 0, 0, 0,
0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23,
- 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 181, 66, 47, 0, 0, 0,
- 0, 11, 182, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0,
- 48, 16, 142, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 155, 0,
- 0, 183, 183, 183, 183, 183, 183, 183, 183, 184, 184, 184, 185, 186, 184, 183,
- 183, 187, 183, 183, 188, 189, 189, 189, 189, 189, 189, 189, 0, 0, 0, 0,
- 0, 183, 183, 183, 183, 183, 190, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 22, 22, 22, 22, 22, 22, 191, 192, 193, 11, 11, 11, 46, 0, 0, 0,
+ 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 182, 66, 47, 0, 0, 0,
+ 0, 11, 183, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0,
+ 48, 16, 143, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 156, 0,
+ 0, 184, 184, 184, 184, 184, 184, 184, 184, 185, 185, 185, 186, 187, 185, 184,
+ 184, 188, 184, 184, 189, 190, 190, 190, 190, 190, 190, 190, 0, 0, 0, 0,
+ 0, 184, 184, 184, 184, 184, 191, 0, 0, 2, 2, 2, 2, 2, 2, 2,
+ 22, 22, 22, 22, 22, 22, 192, 193, 194, 11, 11, 11, 46, 0, 0, 0,
0, 29, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 47,
- 0, 2, 2, 2, 2, 2, 9, 0, 58, 194, 20, 20, 20, 20, 20, 20,
+ 0, 2, 2, 2, 2, 2, 9, 0, 58, 195, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0,
- 40, 115, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
+ 40, 116, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, 2, 2, 2, 0, 58,
- 37, 0, 6, 119, 119, 119, 120, 0, 0, 11, 11, 11, 49, 2, 2, 2,
+ 37, 0, 6, 120, 120, 120, 121, 0, 0, 11, 11, 11, 49, 2, 2, 2,
0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22,
22, 2, 2, 2, 2, 2, 2, 2, 20, 2, 2, 44, 44, 44, 92, 0,
@@ -607,17 +609,17 @@ hb_use_u8[3655] =
FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB,CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst,
FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv,
SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst,
- IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ,
- WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B,
- VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre,
- MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst,
- VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N,
- N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,
- VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,
- CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS,
- SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, G,
- G, J, J, J, SB, SE, J, HR, G, G, HM, HM, HM, G, O, MPre,
- MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw,
+ IS, RK, RK, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ,
+ CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv,
+ VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw,
+ MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS,
+ O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS,
+ B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw,
+ VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,CMBlw, IS, R,FMAbv, B, CS,
+ CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,
+ VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,
+ VMPst, G, G, J, J, J, SB, SE, J, HR, G, G, HM, HM, HM, G,
+ O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw,
};
static const uint16_t
hb_use_u16[486] =
@@ -683,6 +685,7 @@ hb_use_get_category (unsigned u)
#undef N
#undef O
#undef R
+#undef RK
#undef SB
#undef SE
#undef SUB
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh
index 326e0191277..66ba9f1b023 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh
@@ -6,8 +6,8 @@
*
* on files with these headers:
*
- * <meta name="updated_at" content="2024-05-31 05:41 PM" />
- * File-Date: 2024-05-16
+ * <meta name="updated_at" content="2024-07-07 12:57 AM" />
+ * File-Date: 2024-06-14
*/
#ifndef HB_OT_TAG_TABLE_HH
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
index 2b1921c28f0..39aaee5baa7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh
@@ -34,9 +34,6 @@
#include "hb.hh"
-// Hack. See: https://github.com/harfbuzz/harfbuzz/pull/4529#discussion_r1769638033
-#define _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR ((hb_unicode_general_category_t) 30)
-
extern HB_INTERNAL const uint8_t _hb_modified_combining_class[256];
/*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc
index 5bc1c7b7556..33ea2c9b588 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc
@@ -217,7 +217,7 @@ layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index
{
hb_font_extents_t font_extents;
hb_font_get_extents_for_direction (font, HB_DIRECTION_LTR, &font_extents);
- hb_glyph_extents_t extents = {0};
+ hb_glyph_extents_t extents = {0, 0, 0, 0};
if (!hb_font_get_glyph_extents (font, gid, &extents))
{
printf ("Skip gid: %u\n", gid);
@@ -267,7 +267,7 @@ dump_glyphs (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index)
{
hb_font_extents_t font_extents;
hb_font_get_extents_for_direction (font, HB_DIRECTION_LTR, &font_extents);
- hb_glyph_extents_t extents = {0};
+ hb_glyph_extents_t extents = {0, 0, 0, 0};
if (!hb_font_get_glyph_extents (font, gid, &extents))
{
printf ("Skip gid: %u\n", gid);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
index 9ba5ce7163a..5ca15d90e2e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build
@@ -346,7 +346,7 @@ hb_wasm_headers = files()
# System-dependent sources and headers
-hb_coretext_sources = files('hb-coretext.cc')
+hb_coretext_sources = files('hb-coretext-shape.cc', 'hb-coretext-font.cc')
hb_coretext_headers = files('hb-coretext.h')
hb_directwrite_sources = files('hb-directwrite.cc')
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
index 1bb4ed9501b..4b0c7f200ed 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt
@@ -77,11 +77,12 @@ AA35   ; Top # Mn       CHAM CONSONANT SIGN
10F83 ; Bottom # Mn OLD UYGHUR COMBINING DOT BELOW
10F84 ; Bottom # Mn OLD UYGHUR COMBINING TWO DOTS ABOVE # Overriden, ccc controls order
10F85 ; Bottom # Mn OLD UYGHUR COMBINING TWO DOTS BELOW
+113CF ; Bottom # Mc TULU-TIGALARI SIGN LOOPED VIRAMA # Issue #17
16F4F ; Bottom # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F51..16F87 ; Bottom # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
16F8F..16F92 ; Bottom # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
-1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model
-1E5EF ; Bottom # Mn OL ONAL SIGN IKIR
+1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model
+1E5EF ; Bottom # Mn OL ONAL SIGN IKIR
# ================================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
index 309ed587568..fcd22e63dc7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt
@@ -54,7 +54,6 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA
# Indic_Syllabic_Category=Nukta
0F71 ; Nukta # Mn TIBETAN VOWEL SIGN AA # Reassigned to get this before an above vowel, but see #22
-1BF2..1BF3 ; Nukta # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20
113CF ; Nukta # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
# ================================================
diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac
index fec6ff24cc8..c5bfc25d798 100644
--- a/Build/source/libs/harfbuzz/version.ac
+++ b/Build/source/libs/harfbuzz/version.ac
@@ -8,4 +8,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [10.0.1])
+m4_define([harfbuzz_version], [10.1.0])