summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src/src
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-06-01 08:54:42 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-06-01 08:54:42 +0000
commitc3b919224b2b02826bddf55535535ab47638844d (patch)
tree728f7d1ab81bbbed0c1e777c2c63bcc516d8810a /Build/source/libs/harfbuzz/harfbuzz-src/src
parent6232e1d5fac4d935744926829f80d53a750cbf0b (diff)
harfbuzz-2.5.1
git-svn-id: svn://tug.org/texlive/trunk@51283 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src')
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py14
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py7
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh21
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh22
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh26
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh55
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh609
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl20
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh2
20 files changed, 458 insertions, 375 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
index 3d5b8d26cc3..3f821802d7d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py
@@ -10,11 +10,11 @@ if len (sys.argv) != 2:
# https://github.com/harfbuzz/packtab
-# https://github.com/harfbuzz/youseedy
-import youseedy, packTab
+import packTab
+import packTab.ucdxml
-ucdxml = youseedy.load_ucdxml(sys.argv[1])
-ucd = youseedy.ucdxml_get_repertoire(ucdxml)
+ucdxml = packTab.ucdxml.load_ucdxml(sys.argv[1])
+ucd = packTab.ucdxml.ucdxml_get_repertoire(ucdxml)
gc = [u['gc'] for u in ucd]
@@ -88,9 +88,9 @@ print('#include "hb.hh"')
print()
code = packTab.Code('_hb_ucd')
-sc_array, _, _ = code.addArray('hb_script_t', 'sc_map', sc_array)
-dm1_array, _, _ = code.addArray('hb_codepoint_t', 'dm1_map', dm1_array)
-dm2_array, _, _ = code.addArray('uint64_t', 'dm2_map', dm2_array)
+sc_array, _ = code.addArray('hb_script_t', 'sc_map', sc_array)
+dm1_array, _ = code.addArray('hb_codepoint_t', 'dm1_map', dm1_array)
+dm2_array, _ = code.addArray('uint64_t', 'dm2_map', dm2_array)
code.print_c(linkage='static inline')
for compression in (DEFAULT, COMPACT):
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 c86bdbbdca5..820838cf8eb 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
@@ -214,7 +214,9 @@ def is_CONS_SUB(U, UISC, UGC):
def is_CONS_WITH_STACKER(U, UISC, UGC):
return UISC == Consonant_With_Stacker
def is_HALANT(U, UISC, UGC):
- return UISC in [Virama, Invisible_Stacker] and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC)
+ return (UISC in [Virama, Invisible_Stacker]
+ and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC)
+ and not is_SAKOT(U, UISC, UGC))
def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC):
# https://github.com/harfbuzz/harfbuzz/issues/1102
# https://github.com/harfbuzz/harfbuzz/issues/1379
@@ -240,6 +242,8 @@ def is_Reserved(U, UISC, UGC):
return UGC == 'Cn'
def is_REPHA(U, UISC, UGC):
return UISC in [Consonant_Preceding_Repha, Consonant_Prefixed]
+def is_SAKOT(U, UISC, UGC):
+ return U == 0x1A60
def is_SYM(U, UISC, UGC):
if U == 0x25CC: return False #SPEC-DRAFT
#SPEC-DRAFT return UGC in [So, Sc] or UISC == Symbol_Letter
@@ -279,6 +283,7 @@ use_mapping = {
'Rsv': is_Reserved,
'R': is_REPHA,
'S': is_SYM,
+ 'Sk': is_SAKOT,
'SM': is_SYM_MOD,
'VS': is_VARIATION_SELECTOR,
'V': is_VOWEL,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
index 007db9e40c5..38104fdb82e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh
@@ -167,10 +167,21 @@ template <unsigned Pos=1, typename Appl, typename V>
auto hb_partial (Appl&& a, V&& v) HB_AUTO_RETURN
(( hb_partial_t<Pos, Appl, V> (a, v) ))
+/* The following hacky replacement version is to make Visual Stuiod build:. */ \
+/* https://github.com/harfbuzz/harfbuzz/issues/1730 */ \
+#ifdef _MSC_VER
#define HB_PARTIALIZE(Pos) \
template <typename _T> \
- auto operator () (_T&& _v) const HB_AUTO_RETURN (hb_partial<Pos> (this, hb_forward<_T> (_v))) \
+ decltype(auto) operator () (_T&& _v) const \
+ { return hb_partial<Pos> (this, hb_forward<_T> (_v)); } \
static_assert (true, "")
+#else
+#define HB_PARTIALIZE(Pos) \
+ template <typename _T> \
+ auto operator () (_T&& _v) const HB_AUTO_RETURN \
+ (hb_partial<Pos> (this, hb_forward<_T> (_v))) \
+ static_assert (true, "")
+#endif
struct
@@ -807,7 +818,7 @@ struct hb_bitwise_and
static constexpr bool passthru_left = false;
static constexpr bool passthru_right = false;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & b)
}
HB_FUNCOBJ (hb_bitwise_and);
struct hb_bitwise_or
@@ -815,7 +826,7 @@ struct hb_bitwise_or
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = true;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a | b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a | b)
}
HB_FUNCOBJ (hb_bitwise_or);
struct hb_bitwise_xor
@@ -823,7 +834,7 @@ struct hb_bitwise_xor
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = true;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a ^ b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a ^ b)
}
HB_FUNCOBJ (hb_bitwise_xor);
struct hb_bitwise_sub
@@ -831,7 +842,7 @@ struct hb_bitwise_sub
static constexpr bool passthru_left = true;
static constexpr bool passthru_right = false;
template <typename T> auto
- operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & ~b)
+ operator () (const T &a, const T &b) const HB_AUTO_RETURN (a & ~b)
}
HB_FUNCOBJ (hb_bitwise_sub);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
index a82ce6cf3c7..45413d5e73d 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic.hh
@@ -216,7 +216,7 @@ static_assert ((sizeof (long) == sizeof (void *)), "");
#define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */
-#define _hb_memory_barrier()
+#define _hb_memory_barrier() do {} while (0)
#define hb_atomic_int_impl_add(AI, V) ((*(AI) += (V)) - (V))
@@ -227,7 +227,7 @@ static_assert ((sizeof (long) == sizeof (void *)), "");
#define hb_atomic_int_impl_add(AI, V) ((*(AI) += (V)) - (V))
-#define _hb_memory_barrier()
+#define _hb_memory_barrier() do {} while (0)
#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
index a760e731796..cbbfa26810a 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex.hh
@@ -48,6 +48,17 @@
/* Defined externally, i.e. in config.h; must have typedef'ed hb_mutex_impl_t as well. */
+#elif !defined(HB_NO_MT) && (defined(HAVE_PTHREAD) || defined(__APPLE__))
+
+#include <pthread.h>
+typedef pthread_mutex_t hb_mutex_impl_t;
+#define HB_MUTEX_IMPL_INIT PTHREAD_MUTEX_INITIALIZER
+#define hb_mutex_impl_init(M) pthread_mutex_init (M, nullptr)
+#define hb_mutex_impl_lock(M) pthread_mutex_lock (M)
+#define hb_mutex_impl_unlock(M) pthread_mutex_unlock (M)
+#define hb_mutex_impl_finish(M) pthread_mutex_destroy (M)
+
+
#elif !defined(HB_NO_MT) && defined(_WIN32)
#include <windows.h>
@@ -63,17 +74,6 @@ typedef CRITICAL_SECTION hb_mutex_impl_t;
#define hb_mutex_impl_finish(M) DeleteCriticalSection (M)
-#elif !defined(HB_NO_MT) && (defined(HAVE_PTHREAD) || defined(__APPLE__))
-
-#include <pthread.h>
-typedef pthread_mutex_t hb_mutex_impl_t;
-#define HB_MUTEX_IMPL_INIT PTHREAD_MUTEX_INITIALIZER
-#define hb_mutex_impl_init(M) pthread_mutex_init (M, nullptr)
-#define hb_mutex_impl_lock(M) pthread_mutex_lock (M)
-#define hb_mutex_impl_unlock(M) pthread_mutex_unlock (M)
-#define hb_mutex_impl_finish(M) pthread_mutex_destroy (M)
-
-
#elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
#if defined(HAVE_SCHED_H) && defined(HAVE_SCHED_YIELD)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
index 896f7a0155f..de2d25638a3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh
@@ -298,20 +298,24 @@ struct OffsetTo : Offset<OffsetType, has_null>
}
template <typename ...Ts>
- bool serialize_subset (hb_subset_context_t *c, const Type &src, const void *base, Ts&&... ds)
+ bool serialize_subset (hb_subset_context_t *c,
+ const OffsetTo& src,
+ const void *src_base,
+ const void *dst_base,
+ Ts&&... ds)
{
*this = 0;
- if (has_null && &src == _hb_has_null<Type, has_null>::get_null ())
+ if (src.is_null ())
return false;
auto *s = c->serializer;
s->push ();
- bool ret = c->dispatch (src, hb_forward<Ts> (ds)...);
+ bool ret = c->dispatch (src_base+src, hb_forward<Ts> (ds)...);
if (ret || !has_null)
- s->add_link (*this, s->pop_pack (), base);
+ s->add_link (*this, s->pop_pack (), dst_base);
else
s->pop_discard ();
@@ -320,17 +324,21 @@ struct OffsetTo : Offset<OffsetType, has_null>
/* TODO: Somehow merge this with previous function into a serialize_dispatch(). */
template <typename ...Ts>
- bool serialize_copy (hb_serialize_context_t *c, const Type &src, const void *base, Ts&&... ds)
+ bool serialize_copy (hb_serialize_context_t *c,
+ const OffsetTo& src,
+ const void *src_base,
+ const void *dst_base,
+ Ts&&... ds)
{
*this = 0;
- if (has_null && &src == _hb_has_null<Type, has_null>::get_null ())
+ if (src.is_null ())
return false;
c->push ();
- bool ret = c->copy (src, hb_forward<Ts> (ds)...);
+ bool ret = c->copy (src_base+src, hb_forward<Ts> (ds)...);
- c->add_link (*this, c->pop_pack (), base);
+ c->add_link (*this, c->pop_pack (), dst_base);
return ret;
}
@@ -679,7 +687,7 @@ struct OffsetListOf : OffsetArrayOf<Type>
if (unlikely (!out)) return_trace (false);
unsigned int count = this->len;
for (unsigned int i = 0; i < count; i++)
- out->arrayZ[i].serialize_subset (c, (*this)[i], out);
+ out->arrayZ[i].serialize_subset (c, this->arrayZ[i], this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
index bce51b71e78..bc72f8a7016 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-deprecated.h
@@ -40,6 +40,10 @@ HB_BEGIN_DECLS
#ifndef HB_DISABLE_DEPRECATED
+/* https://github.com/harfbuzz/harfbuzz/issues/1734 */
+#define HB_MATH_GLYPH_PART_FLAG_EXTENDER HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER
+
+
/* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t
hb_ot_layout_table_choose_script (hb_face_t *face,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
index 6113dbcf89a..1ac9f6ba204 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh
@@ -85,7 +85,7 @@ struct glyf
static bool
_add_loca_and_head (hb_subset_plan_t * plan, Iterator padded_offsets)
{
- unsigned int max_offset = + padded_offsets | hb_reduce (hb_max, 0);
+ unsigned max_offset = + padded_offsets | hb_reduce(hb_add, 0);
unsigned num_offsets = padded_offsets.len () + 1;
bool use_short_loca = max_offset < 0x1FFFF;
unsigned entry_size = use_short_loca ? 2 : 4;
@@ -93,6 +93,8 @@ struct glyf
if (unlikely (!loca_prime_data)) return false;
+ DEBUG_MSG(SUBSET, nullptr, "loca entry_size %d num_offsets %d max_offset %d size %d", entry_size, num_offsets, max_offset, entry_size * num_offsets);
+
if (use_short_loca)
_write_loca (padded_offsets, 1, hb_array ((HBUINT16*) loca_prime_data, num_offsets));
else
@@ -164,6 +166,7 @@ struct glyf
| hb_map (&SubsetGlyph::padded_size)
;
+ if (c->serializer->in_error ()) return_trace (false);
return_trace (c->serializer->check_success (_add_loca_and_head (c->plan, padded_offsets)));
}
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 bd728ecad6c..f801f5af896 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
@@ -142,7 +142,7 @@ struct RecordListOf : RecordArrayOf<Type>
if (unlikely (!out)) return_trace (false);
unsigned int count = this->len;
for (unsigned int i = 0; i < count; i++)
- out->get_offset (i).serialize_subset (c, (*this)[i], out);
+ out->get_offset (i).serialize_subset (c, this->get_offset (i), this, out);
return_trace (true);
}
@@ -279,10 +279,10 @@ struct Script
TRACE_SUBSET (this);
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->defaultLangSys.serialize_copy (c->serializer, this+defaultLangSys, out);
+ out->defaultLangSys.serialize_copy (c->serializer, defaultLangSys, this, out);
unsigned int count = langSys.len;
for (unsigned int i = 0; i < count; i++)
- out->langSys.arrayZ[i].offset.serialize_copy (c->serializer, this+langSys[i].offset, out);
+ out->langSys.arrayZ[i].offset.serialize_copy (c->serializer, langSys[i].offset, this, out);
return_trace (true);
}
@@ -732,7 +732,7 @@ struct Lookup
OffsetArrayOf<TSubTable>& out_subtables = out->get_subtables<TSubTable> ();
unsigned int count = subTable.len;
for (unsigned int i = 0; i < count; i++)
- out_subtables[i].serialize_subset (c, this+subtables[i], out, get_type ());
+ out_subtables[i].serialize_subset (c, subtables[i], this, out, get_type ());
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
index ac1bddb2e0a..0fca9947dd5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh
@@ -442,16 +442,16 @@ struct GDEF
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->glyphClassDef.serialize_subset (c, this+glyphClassDef, out);
- out->attachList = 0;//TODO(subset) serialize_subset (c, this+attachList, out);
- out->ligCaretList = 0;//TODO(subset) serialize_subset (c, this+ligCaretList, out);
- out->markAttachClassDef.serialize_subset (c, this+markAttachClassDef, out);
+ out->glyphClassDef.serialize_subset (c, glyphClassDef, this, out);
+ out->attachList = 0;//TODO(subset) serialize_subset (c, attachList, this, out);
+ out->ligCaretList = 0;//TODO(subset) serialize_subset (c, ligCaretList, this, out);
+ out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this, out);
if (version.to_int () >= 0x00010002u)
- out->markGlyphSetsDef = 0;// TODO(subset) serialize_subset (c, this+markGlyphSetsDef, out);
+ out->markGlyphSetsDef = 0;// TODO(subset) serialize_subset (c, markGlyphSetsDef, this, out);
if (version.to_int () >= 0x00010003u)
- out->varStore = 0;// TODO(subset) serialize_subset (c, this+varStore, out);
+ out->varStore = 0;// TODO(subset) serialize_subset (c, varStore, this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
index 0e1966e98e8..f532f9dff28 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
@@ -87,8 +87,7 @@ struct SingleSubstFormat1
}
template<typename Iterator,
- hb_requires (hb_is_sorted_source_of (Iterator,
- hb_codepoint_t))>
+ hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
Iterator glyphs,
unsigned delta)
@@ -181,7 +180,7 @@ struct SingleSubstFormat2
template<typename Iterator,
hb_requires (hb_is_sorted_source_of (Iterator,
- const hb_codepoint_pair_t))>
+ hb_codepoint_pair_t))>
bool serialize (hb_serialize_context_t *c,
Iterator it)
{
@@ -339,8 +338,10 @@ struct Sequence
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
- hb_array_t<const GlyphID> subst)
+ Iterator subst)
{
TRACE_SERIALIZE (this);
return_trace (substitute.serialize (c, subst));
@@ -515,8 +516,10 @@ struct AlternateSet
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
- hb_array_t<const GlyphID> alts)
+ Iterator alts)
{
TRACE_SERIALIZE (this);
return_trace (alternates.serialize (c, alts));
@@ -729,9 +732,11 @@ struct Ligature
return_trace (true);
}
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
bool serialize (hb_serialize_context_t *c,
GlyphID ligature,
- hb_array_t<const GlyphID> components /* Starting from second */)
+ Iterator components /* Starting from second */)
{
TRACE_SERIALIZE (this);
if (unlikely (!c->extend_min (*this))) return_trace (false);
@@ -1282,7 +1287,7 @@ struct SubstLookup : Lookup
HB_INTERNAL static bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
SubTable& serialize_subtable (hb_serialize_context_t *c,
- unsigned int i)
+ unsigned int i)
{ return get_subtables<SubTable> ()[i].serialize (c, this); }
bool serialize_single (hb_serialize_context_t *c,
@@ -1292,9 +1297,8 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
-
- return_trace (serialize_subtable (c, 0).u.single
- .serialize (c, hb_zip (glyphs, substitutes)));
+ return_trace (serialize_subtable (c, 0).u.single.
+ serialize (c, hb_zip (glyphs, substitutes)));
}
bool serialize_multiple (hb_serialize_context_t *c,
@@ -1305,10 +1309,11 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.multiple.serialize (c,
- glyphs,
- substitute_len_list,
- substitute_glyphs_list));
+ return_trace (serialize_subtable (c, 0).u.multiple.
+ serialize (c,
+ glyphs,
+ substitute_len_list,
+ substitute_glyphs_list));
}
bool serialize_alternate (hb_serialize_context_t *c,
@@ -1319,10 +1324,11 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.alternate.serialize (c,
- glyphs,
- alternate_len_list,
- alternate_glyphs_list));
+ return_trace (serialize_subtable (c, 0).u.alternate.
+ serialize (c,
+ glyphs,
+ alternate_len_list,
+ alternate_glyphs_list));
}
bool serialize_ligature (hb_serialize_context_t *c,
@@ -1335,12 +1341,13 @@ struct SubstLookup : Lookup
{
TRACE_SERIALIZE (this);
if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.ligature.serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- ligatures_list,
- component_count_list,
- component_list));
+ return_trace (serialize_subtable (c, 0).u.ligature.
+ serialize (c,
+ first_glyphs,
+ ligature_per_first_glyph_count_list,
+ ligatures_list,
+ component_count_list,
+ component_list));
}
template <typename context_t>
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
index 7d395b5d84d..4bc3d7e157e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
@@ -2684,18 +2684,19 @@ struct GSUBGPOS
auto *out = c->serializer->embed (*this);
if (unlikely (!out)) return_trace (false);
- out->scriptList.serialize_subset (c, this+scriptList, out);
- out->featureList.serialize_subset (c, this+featureList, out);
+ out->scriptList.serialize_subset (c, scriptList, this, out);
+ out->featureList.serialize_subset (c, featureList, this, out);
typedef OffsetListOf<TLookup> TLookupList;
/* TODO Use intersects() to count how many subtables survive? */
CastR<OffsetTo<TLookupList>> (out->lookupList)
.serialize_subset (c,
- this+CastR<OffsetTo<TLookupList>> (lookupList),
+ CastR<OffsetTo<TLookupList>> (lookupList),
+ this,
out);
if (version.to_int () >= 0x00010001u)
- out->featureVars.serialize_copy (c->serializer, this+featureVars, out);
+ out->featureVars.serialize_copy (c->serializer, featureVars, this, out);
return_trace (true);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
index dd622640410..0b16e0b9b3e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
@@ -462,7 +462,7 @@ struct MathGlyphPartRecord
out.end_connector_length = font->em_scale (endConnectorLength, scale);
out.full_advance = font->em_scale (fullAdvance, scale);
- static_assert ((unsigned int) HB_MATH_GLYPH_PART_FLAG_EXTENDER ==
+ static_assert ((unsigned int) HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER ==
(unsigned int) PartFlags::Extender, "");
out.flags = (hb_ot_math_glyph_part_flags_t)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
index d88aef8e949..7b2befbceea 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math.h
@@ -151,14 +151,14 @@ typedef struct hb_ot_math_glyph_variant_t {
* Since: 1.3.3
*/
typedef enum { /*< flags >*/
- HB_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */
+ HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */
} hb_ot_math_glyph_part_flags_t;
/**
* hb_ot_math_glyph_part_t:
* @glyph: The glyph index of the variant part
* @start_connector_length: The length of the connector on the starting side of the variant part
- * @end_connection_length: The length of the conector on the ending side of the variant part
+ * @end_connection_length: The length of the connector on the ending side of the variant part
* @full_advance: The total advance of the part
* @flags: #hb_ot_math_glyph_part_flags_t flags for the part
*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
index 4eda46789ee..68d7b3a65a8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh
@@ -104,7 +104,7 @@ struct NameRecord
TRACE_SERIALIZE (this);
auto *out = c->embed (this);
if (unlikely (!out)) return_trace (nullptr);
- out->offset.serialize_copy (c, src_base + offset, dst_base, length);
+ out->offset.serialize_copy (c, offset, src_base, dst_base, length);
return_trace (out);
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
index 39c20dec869..01fe3d788ac 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
@@ -36,39 +36,42 @@
#line 38 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
- 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 47u, 21u, 21u, 11u, 47u, 11u, 47u,
- 1u, 15u, 1u, 1u, 11u, 47u, 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u,
- 45u, 46u, 46u, 46u, 24u, 47u, 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u,
- 22u, 47u, 22u, 47u, 22u, 47u, 22u, 47u, 11u, 47u, 1u, 47u, 11u, 47u, 13u, 21u,
- 4u, 4u, 13u, 13u, 11u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 11u, 47u, 11u, 47u,
- 22u, 47u, 23u, 47u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 47u,
- 24u, 47u, 24u, 47u, 23u, 47u, 23u, 47u, 23u, 47u, 22u, 47u, 22u, 47u, 22u, 47u,
- 22u, 47u, 11u, 47u, 1u, 47u, 1u, 15u, 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u,
- 1u, 47u, 11u, 47u, 41u, 42u, 42u, 42u, 21u, 42u, 1u, 5u, 0
+ 12u, 48u, 1u, 15u, 1u, 1u, 12u, 48u, 1u, 1u, 0u, 48u, 21u, 21u, 11u, 48u,
+ 11u, 48u, 1u, 15u, 1u, 1u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
+ 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u,
+ 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u,
+ 1u, 48u, 11u, 48u, 13u, 21u, 4u, 4u, 13u, 13u, 11u, 48u, 11u, 48u, 41u, 42u,
+ 42u, 42u, 11u, 48u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u,
+ 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u, 23u, 48u,
+ 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 1u, 15u,
+ 4u, 4u, 13u, 21u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u,
+ 21u, 42u, 1u, 5u, 0
};
static const char _use_syllable_machine_key_spans[] = {
- 33, 15, 1, 33, 48, 1, 37, 37,
- 15, 1, 37, 26, 25, 24, 23, 22,
- 2, 1, 24, 24, 24, 25, 25, 25,
- 26, 26, 26, 26, 37, 47, 37, 9,
- 1, 1, 37, 37, 2, 1, 37, 37,
- 26, 25, 24, 23, 22, 2, 1, 24,
- 24, 24, 25, 25, 25, 26, 26, 26,
- 26, 37, 47, 15, 1, 9, 1, 33,
- 47, 37, 2, 1, 22, 5
+ 37, 15, 1, 37, 1, 49, 1, 38,
+ 38, 15, 1, 38, 27, 26, 24, 23,
+ 22, 2, 1, 25, 25, 25, 1, 25,
+ 26, 26, 26, 27, 27, 27, 27, 38,
+ 48, 38, 9, 1, 1, 38, 38, 2,
+ 1, 38, 38, 27, 26, 24, 23, 22,
+ 2, 1, 25, 25, 25, 25, 26, 26,
+ 26, 27, 27, 27, 27, 38, 48, 15,
+ 1, 9, 1, 37, 48, 38, 2, 1,
+ 22, 5
};
static const short _use_syllable_machine_index_offsets[] = {
- 0, 34, 50, 52, 86, 135, 137, 175,
- 213, 229, 231, 269, 296, 322, 347, 371,
- 394, 397, 399, 424, 449, 474, 500, 526,
- 552, 579, 606, 633, 660, 698, 746, 784,
- 794, 796, 798, 836, 874, 877, 879, 917,
- 955, 982, 1008, 1033, 1057, 1080, 1083, 1085,
- 1110, 1135, 1160, 1186, 1212, 1238, 1265, 1292,
- 1319, 1346, 1384, 1432, 1448, 1450, 1460, 1462,
- 1496, 1544, 1582, 1585, 1587, 1610
+ 0, 38, 54, 56, 94, 96, 146, 148,
+ 187, 226, 242, 244, 283, 311, 338, 363,
+ 387, 410, 413, 415, 441, 467, 493, 495,
+ 521, 548, 575, 602, 630, 658, 686, 714,
+ 753, 802, 841, 851, 853, 855, 894, 933,
+ 936, 938, 977, 1016, 1044, 1071, 1096, 1120,
+ 1143, 1146, 1148, 1174, 1200, 1226, 1252, 1279,
+ 1306, 1333, 1361, 1389, 1417, 1445, 1484, 1533,
+ 1549, 1551, 1561, 1563, 1601, 1650, 1689, 1692,
+ 1694, 1717
};
static const char _use_syllable_machine_indicies[] = {
@@ -76,237 +79,253 @@ static const char _use_syllable_machine_indicies[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 3, 2, 2, 2, 2, 2,
+ 1, 0, 0, 0, 1, 0, 3, 2,
2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 3, 2, 6, 5, 5, 5,
+ 2, 2, 2, 2, 4, 2, 3, 2,
+ 6, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 6, 5, 7, 8,
- 9, 7, 10, 11, 9, 9, 9, 9,
- 9, 3, 12, 13, 9, 14, 7, 7,
- 15, 16, 9, 9, 17, 18, 19, 20,
- 21, 22, 23, 17, 24, 25, 26, 27,
- 28, 29, 9, 30, 31, 32, 9, 33,
- 34, 35, 36, 37, 38, 39, 9, 41,
- 40, 43, 1, 42, 42, 44, 42, 42,
- 42, 42, 42, 45, 46, 47, 48, 49,
- 50, 51, 52, 46, 53, 45, 54, 55,
- 56, 57, 42, 58, 59, 60, 42, 42,
- 42, 42, 61, 62, 63, 64, 42, 43,
- 1, 42, 42, 44, 42, 42, 42, 42,
- 42, 65, 46, 47, 48, 49, 50, 51,
- 52, 46, 53, 54, 54, 55, 56, 57,
- 42, 58, 59, 60, 42, 42, 42, 42,
- 61, 62, 63, 64, 42, 43, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 67, 66, 43, 66, 43,
- 1, 42, 42, 44, 42, 42, 42, 42,
- 42, 42, 46, 47, 48, 49, 50, 51,
- 52, 46, 53, 54, 54, 55, 56, 57,
- 42, 58, 59, 60, 42, 42, 42, 42,
- 61, 62, 63, 64, 42, 46, 47, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 55, 56, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 47, 62, 63, 64, 42,
- 47, 48, 49, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 58, 59,
- 60, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 48, 49, 50, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 62,
- 63, 64, 42, 49, 50, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 62,
- 63, 64, 42, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 62, 63, 42, 63, 42, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 58, 59, 60, 42,
- 42, 42, 42, 42, 62, 63, 64, 42,
- 48, 49, 50, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 59, 60,
- 42, 42, 42, 42, 42, 62, 63, 64,
- 42, 48, 49, 50, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42,
- 60, 42, 42, 42, 42, 42, 62, 63,
- 64, 42, 47, 48, 49, 50, 42, 42,
- 42, 42, 42, 42, 55, 56, 57, 42,
- 58, 59, 60, 42, 42, 42, 42, 47,
- 62, 63, 64, 42, 47, 48, 49, 50,
- 42, 42, 42, 42, 42, 42, 42, 56,
- 57, 42, 58, 59, 60, 42, 42, 42,
- 42, 47, 62, 63, 64, 42, 47, 48,
- 49, 50, 42, 42, 42, 42, 42, 42,
- 42, 42, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 47, 62, 63, 64, 42,
- 46, 47, 48, 49, 50, 42, 52, 46,
- 42, 42, 42, 55, 56, 57, 42, 58,
- 59, 60, 42, 42, 42, 42, 47, 62,
- 63, 64, 42, 46, 47, 48, 49, 50,
- 42, 68, 46, 42, 42, 42, 55, 56,
- 57, 42, 58, 59, 60, 42, 42, 42,
- 42, 47, 62, 63, 64, 42, 46, 47,
- 48, 49, 50, 42, 42, 46, 42, 42,
- 42, 55, 56, 57, 42, 58, 59, 60,
- 42, 42, 42, 42, 47, 62, 63, 64,
- 42, 46, 47, 48, 49, 50, 51, 52,
- 46, 42, 42, 42, 55, 56, 57, 42,
- 58, 59, 60, 42, 42, 42, 42, 47,
- 62, 63, 64, 42, 43, 1, 42, 42,
- 44, 42, 42, 42, 42, 42, 42, 46,
- 47, 48, 49, 50, 51, 52, 46, 53,
- 42, 54, 55, 56, 57, 42, 58, 59,
- 60, 42, 42, 42, 42, 61, 62, 63,
- 64, 42, 43, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 67, 66, 66, 66, 66, 66, 66, 66,
- 47, 48, 49, 50, 66, 66, 66, 66,
- 66, 66, 66, 66, 66, 66, 58, 59,
- 60, 66, 66, 66, 66, 66, 62, 63,
- 64, 66, 43, 1, 42, 42, 44, 42,
- 42, 42, 42, 42, 42, 46, 47, 48,
- 49, 50, 51, 52, 46, 53, 45, 54,
- 55, 56, 57, 42, 58, 59, 60, 42,
- 42, 42, 42, 61, 62, 63, 64, 42,
- 70, 69, 69, 69, 69, 69, 69, 69,
- 71, 69, 10, 72, 70, 69, 43, 1,
- 42, 42, 44, 42, 42, 42, 42, 42,
- 73, 46, 47, 48, 49, 50, 51, 52,
- 46, 53, 45, 54, 55, 56, 57, 42,
- 58, 59, 60, 42, 74, 75, 42, 61,
- 62, 63, 64, 42, 43, 1, 42, 42,
- 44, 42, 42, 42, 42, 42, 42, 46,
- 47, 48, 49, 50, 51, 52, 46, 53,
- 45, 54, 55, 56, 57, 42, 58, 59,
- 60, 42, 74, 75, 42, 61, 62, 63,
- 64, 42, 74, 75, 76, 75, 76, 3,
- 6, 77, 77, 78, 77, 77, 77, 77,
- 77, 79, 17, 18, 19, 20, 21, 22,
- 23, 17, 24, 26, 26, 27, 28, 29,
- 77, 30, 31, 32, 77, 77, 77, 77,
- 36, 37, 38, 39, 77, 3, 6, 77,
- 77, 78, 77, 77, 77, 77, 77, 77,
- 17, 18, 19, 20, 21, 22, 23, 17,
- 24, 26, 26, 27, 28, 29, 77, 30,
- 31, 32, 77, 77, 77, 77, 36, 37,
- 38, 39, 77, 17, 18, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 27, 28,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 18, 37, 38, 39, 77, 18, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 30, 31, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 19, 20, 21, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 37, 38, 39,
- 77, 20, 21, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 37, 38, 39,
- 77, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 37, 38, 77, 38, 77, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 30, 31, 32, 77, 77, 77,
- 77, 77, 37, 38, 39, 77, 19, 20,
- 21, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 31, 32, 77, 77,
- 77, 77, 77, 37, 38, 39, 77, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 18, 19, 20, 21, 77, 77, 77, 77,
- 77, 77, 27, 28, 29, 77, 30, 31,
- 32, 77, 77, 77, 77, 18, 37, 38,
- 39, 77, 18, 19, 20, 21, 77, 77,
- 77, 77, 77, 77, 77, 28, 29, 77,
- 30, 31, 32, 77, 77, 77, 77, 18,
- 37, 38, 39, 77, 18, 19, 20, 21,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 18, 37, 38, 39, 77, 17, 18,
- 19, 20, 21, 77, 23, 17, 77, 77,
- 77, 27, 28, 29, 77, 30, 31, 32,
- 77, 77, 77, 77, 18, 37, 38, 39,
- 77, 17, 18, 19, 20, 21, 77, 80,
- 17, 77, 77, 77, 27, 28, 29, 77,
- 30, 31, 32, 77, 77, 77, 77, 18,
- 37, 38, 39, 77, 17, 18, 19, 20,
- 21, 77, 77, 17, 77, 77, 77, 27,
- 28, 29, 77, 30, 31, 32, 77, 77,
- 77, 77, 18, 37, 38, 39, 77, 17,
- 18, 19, 20, 21, 22, 23, 17, 77,
- 77, 77, 27, 28, 29, 77, 30, 31,
- 32, 77, 77, 77, 77, 18, 37, 38,
- 39, 77, 3, 6, 77, 77, 78, 77,
- 77, 77, 77, 77, 77, 17, 18, 19,
- 20, 21, 22, 23, 17, 24, 77, 26,
- 27, 28, 29, 77, 30, 31, 32, 77,
- 77, 77, 77, 36, 37, 38, 39, 77,
- 3, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 4, 77,
- 77, 77, 77, 77, 77, 77, 18, 19,
- 20, 21, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 30, 31, 32, 77,
- 77, 77, 77, 77, 37, 38, 39, 77,
- 3, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 4, 81,
- 82, 77, 13, 77, 77, 77, 77, 77,
- 77, 77, 83, 77, 13, 77, 6, 81,
+ 6, 5, 5, 5, 6, 5, 7, 5,
+ 8, 9, 10, 8, 11, 12, 10, 10,
+ 10, 10, 10, 3, 13, 14, 10, 15,
+ 8, 8, 16, 17, 10, 10, 18, 19,
+ 20, 21, 22, 23, 24, 18, 25, 26,
+ 27, 28, 29, 30, 10, 31, 32, 33,
+ 10, 34, 35, 36, 37, 38, 39, 40,
+ 13, 10, 42, 41, 44, 1, 43, 43,
+ 45, 43, 43, 43, 43, 43, 46, 47,
+ 48, 49, 50, 51, 52, 53, 47, 54,
+ 46, 55, 56, 57, 58, 43, 59, 60,
+ 61, 43, 43, 43, 43, 62, 63, 64,
+ 65, 1, 43, 44, 1, 43, 43, 45,
+ 43, 43, 43, 43, 43, 66, 47, 48,
+ 49, 50, 51, 52, 53, 47, 54, 55,
+ 55, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 62, 63, 64, 65,
+ 1, 43, 44, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 68, 67, 44, 67, 44, 1, 43, 43,
+ 45, 43, 43, 43, 43, 43, 43, 47,
+ 48, 49, 50, 51, 52, 53, 47, 54,
+ 55, 55, 56, 57, 58, 43, 59, 60,
+ 61, 43, 43, 43, 43, 62, 63, 64,
+ 65, 1, 43, 47, 48, 49, 50, 51,
+ 43, 43, 43, 43, 43, 43, 56, 57,
+ 58, 43, 59, 60, 61, 43, 43, 43,
+ 43, 48, 63, 64, 65, 69, 43, 48,
+ 49, 50, 51, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 59, 60, 61,
+ 43, 43, 43, 43, 43, 63, 64, 65,
+ 69, 43, 49, 50, 51, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 63,
+ 64, 65, 43, 50, 51, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 63,
+ 64, 65, 43, 51, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 63, 64,
+ 65, 43, 63, 64, 43, 64, 43, 49,
+ 50, 51, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 59, 60, 61, 43,
+ 43, 43, 43, 43, 63, 64, 65, 69,
+ 43, 49, 50, 51, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 60,
+ 61, 43, 43, 43, 43, 43, 63, 64,
+ 65, 69, 43, 49, 50, 51, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 61, 43, 43, 43, 43, 43,
+ 63, 64, 65, 69, 43, 71, 70, 49,
+ 50, 51, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 63, 64, 65, 69,
+ 43, 48, 49, 50, 51, 43, 43, 43,
+ 43, 43, 43, 56, 57, 58, 43, 59,
+ 60, 61, 43, 43, 43, 43, 48, 63,
+ 64, 65, 69, 43, 48, 49, 50, 51,
+ 43, 43, 43, 43, 43, 43, 43, 57,
+ 58, 43, 59, 60, 61, 43, 43, 43,
+ 43, 48, 63, 64, 65, 69, 43, 48,
+ 49, 50, 51, 43, 43, 43, 43, 43,
+ 43, 43, 43, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 47, 48, 49, 50, 51, 43,
+ 53, 47, 43, 43, 43, 56, 57, 58,
+ 43, 59, 60, 61, 43, 43, 43, 43,
+ 48, 63, 64, 65, 69, 43, 47, 48,
+ 49, 50, 51, 43, 72, 47, 43, 43,
+ 43, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 47, 48, 49, 50, 51, 43,
+ 43, 47, 43, 43, 43, 56, 57, 58,
+ 43, 59, 60, 61, 43, 43, 43, 43,
+ 48, 63, 64, 65, 69, 43, 47, 48,
+ 49, 50, 51, 52, 53, 47, 43, 43,
+ 43, 56, 57, 58, 43, 59, 60, 61,
+ 43, 43, 43, 43, 48, 63, 64, 65,
+ 69, 43, 44, 1, 43, 43, 45, 43,
+ 43, 43, 43, 43, 43, 47, 48, 49,
+ 50, 51, 52, 53, 47, 54, 43, 55,
+ 56, 57, 58, 43, 59, 60, 61, 43,
+ 43, 43, 43, 62, 63, 64, 65, 1,
+ 43, 44, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 68,
+ 67, 67, 67, 67, 67, 67, 67, 48,
+ 49, 50, 51, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 59, 60, 61,
+ 67, 67, 67, 67, 67, 63, 64, 65,
+ 69, 67, 44, 1, 43, 43, 45, 43,
+ 43, 43, 43, 43, 43, 47, 48, 49,
+ 50, 51, 52, 53, 47, 54, 46, 55,
+ 56, 57, 58, 43, 59, 60, 61, 43,
+ 43, 43, 43, 62, 63, 64, 65, 1,
+ 43, 74, 73, 73, 73, 73, 73, 73,
+ 73, 75, 73, 11, 76, 74, 73, 44,
+ 1, 43, 43, 45, 43, 43, 43, 43,
+ 43, 77, 47, 48, 49, 50, 51, 52,
+ 53, 47, 54, 46, 55, 56, 57, 58,
+ 43, 59, 60, 61, 43, 78, 79, 43,
+ 62, 63, 64, 65, 1, 43, 44, 1,
+ 43, 43, 45, 43, 43, 43, 43, 43,
+ 43, 47, 48, 49, 50, 51, 52, 53,
+ 47, 54, 46, 55, 56, 57, 58, 43,
+ 59, 60, 61, 43, 78, 79, 43, 62,
+ 63, 64, 65, 1, 43, 78, 79, 80,
+ 79, 80, 3, 6, 81, 81, 82, 81,
+ 81, 81, 81, 81, 83, 18, 19, 20,
+ 21, 22, 23, 24, 18, 25, 27, 27,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 37, 38, 39, 40, 6,
+ 81, 3, 6, 81, 81, 82, 81, 81,
+ 81, 81, 81, 81, 18, 19, 20, 21,
+ 22, 23, 24, 18, 25, 27, 27, 28,
+ 29, 30, 81, 31, 32, 33, 81, 81,
+ 81, 81, 37, 38, 39, 40, 6, 81,
+ 18, 19, 20, 21, 22, 81, 81, 81,
+ 81, 81, 81, 28, 29, 30, 81, 31,
+ 32, 33, 81, 81, 81, 81, 19, 38,
+ 39, 40, 84, 81, 19, 20, 21, 22,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 31, 32, 33, 81, 81, 81,
+ 81, 81, 38, 39, 40, 84, 81, 20,
+ 21, 22, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 38, 39, 40, 81,
+ 21, 22, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 6, 81,
- 8, 77, 77, 77, 8, 77, 77, 77,
- 77, 77, 3, 6, 13, 77, 78, 77,
- 77, 77, 77, 77, 77, 17, 18, 19,
- 20, 21, 22, 23, 17, 24, 25, 26,
- 27, 28, 29, 77, 30, 31, 32, 77,
- 33, 34, 77, 36, 37, 38, 39, 77,
- 3, 6, 77, 77, 78, 77, 77, 77,
- 77, 77, 77, 17, 18, 19, 20, 21,
- 22, 23, 17, 24, 25, 26, 27, 28,
- 29, 77, 30, 31, 32, 77, 77, 77,
- 77, 36, 37, 38, 39, 77, 33, 34,
- 77, 34, 77, 74, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 74,
- 75, 76, 8, 81, 81, 81, 8, 81,
- 0
+ 81, 81, 81, 81, 38, 39, 40, 81,
+ 22, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 38, 39, 40, 81, 38,
+ 39, 81, 39, 81, 20, 21, 22, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 31, 32, 33, 81, 81, 81, 81,
+ 81, 38, 39, 40, 84, 81, 20, 21,
+ 22, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 32, 33, 81, 81,
+ 81, 81, 81, 38, 39, 40, 84, 81,
+ 20, 21, 22, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 33,
+ 81, 81, 81, 81, 81, 38, 39, 40,
+ 84, 81, 20, 21, 22, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 38,
+ 39, 40, 84, 81, 19, 20, 21, 22,
+ 81, 81, 81, 81, 81, 81, 28, 29,
+ 30, 81, 31, 32, 33, 81, 81, 81,
+ 81, 19, 38, 39, 40, 84, 81, 19,
+ 20, 21, 22, 81, 81, 81, 81, 81,
+ 81, 81, 29, 30, 81, 31, 32, 33,
+ 81, 81, 81, 81, 19, 38, 39, 40,
+ 84, 81, 19, 20, 21, 22, 81, 81,
+ 81, 81, 81, 81, 81, 81, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 18, 19, 20,
+ 21, 22, 81, 24, 18, 81, 81, 81,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 19, 38, 39, 40, 84,
+ 81, 18, 19, 20, 21, 22, 81, 85,
+ 18, 81, 81, 81, 28, 29, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 18, 19, 20,
+ 21, 22, 81, 81, 18, 81, 81, 81,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 19, 38, 39, 40, 84,
+ 81, 18, 19, 20, 21, 22, 23, 24,
+ 18, 81, 81, 81, 28, 29, 30, 81,
+ 31, 32, 33, 81, 81, 81, 81, 19,
+ 38, 39, 40, 84, 81, 3, 6, 81,
+ 81, 82, 81, 81, 81, 81, 81, 81,
+ 18, 19, 20, 21, 22, 23, 24, 18,
+ 25, 81, 27, 28, 29, 30, 81, 31,
+ 32, 33, 81, 81, 81, 81, 37, 38,
+ 39, 40, 6, 81, 3, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 4, 81, 81, 81, 81, 81,
+ 81, 81, 19, 20, 21, 22, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81,
+ 31, 32, 33, 81, 81, 81, 81, 81,
+ 38, 39, 40, 84, 81, 3, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 4, 86, 87, 81, 14,
+ 81, 81, 81, 81, 81, 81, 81, 88,
+ 81, 14, 81, 6, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 6, 86, 86, 86, 6,
+ 86, 9, 81, 81, 81, 9, 81, 81,
+ 81, 81, 81, 3, 6, 14, 81, 82,
+ 81, 81, 81, 81, 81, 81, 18, 19,
+ 20, 21, 22, 23, 24, 18, 25, 26,
+ 27, 28, 29, 30, 81, 31, 32, 33,
+ 81, 34, 35, 81, 37, 38, 39, 40,
+ 6, 81, 3, 6, 81, 81, 82, 81,
+ 81, 81, 81, 81, 81, 18, 19, 20,
+ 21, 22, 23, 24, 18, 25, 26, 27,
+ 28, 29, 30, 81, 31, 32, 33, 81,
+ 81, 81, 81, 37, 38, 39, 40, 6,
+ 81, 34, 35, 81, 35, 81, 78, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 78, 79, 80, 9, 86, 86,
+ 86, 9, 86, 0
};
static const char _use_syllable_machine_trans_targs[] = {
- 4, 8, 4, 38, 2, 4, 1, 5,
- 6, 4, 31, 34, 59, 60, 63, 64,
- 68, 40, 41, 42, 43, 44, 53, 54,
- 56, 65, 57, 50, 51, 52, 47, 48,
- 49, 66, 67, 69, 58, 45, 46, 4,
- 4, 4, 4, 7, 0, 30, 11, 12,
- 13, 14, 15, 24, 25, 27, 28, 21,
- 22, 23, 18, 19, 20, 29, 16, 17,
- 4, 10, 4, 9, 26, 4, 32, 33,
- 4, 35, 36, 37, 4, 4, 3, 39,
- 55, 4, 61, 62
+ 5, 9, 5, 41, 2, 5, 1, 53,
+ 6, 7, 5, 34, 37, 63, 64, 67,
+ 68, 72, 43, 44, 45, 46, 47, 57,
+ 58, 60, 69, 61, 54, 55, 56, 50,
+ 51, 52, 70, 71, 73, 62, 48, 49,
+ 5, 5, 5, 5, 8, 0, 33, 12,
+ 13, 14, 15, 16, 27, 28, 30, 31,
+ 24, 25, 26, 19, 20, 21, 32, 17,
+ 18, 5, 11, 5, 10, 22, 5, 23,
+ 29, 5, 35, 36, 5, 38, 39, 40,
+ 5, 5, 3, 42, 4, 59, 5, 65,
+ 66
};
static const char _use_syllable_machine_trans_actions[] = {
- 1, 0, 2, 3, 0, 4, 0, 0,
- 7, 8, 0, 7, 9, 0, 9, 3,
+ 1, 0, 2, 3, 0, 4, 0, 5,
+ 0, 5, 8, 0, 5, 9, 0, 9,
+ 3, 0, 5, 5, 0, 0, 0, 5,
+ 5, 5, 3, 3, 5, 5, 5, 5,
+ 5, 5, 0, 0, 0, 3, 0, 0,
+ 10, 11, 12, 13, 5, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 3, 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0, 0, 10,
- 11, 12, 13, 7, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 14, 7, 15, 0, 0, 16, 0, 0,
- 17, 7, 0, 0, 18, 19, 0, 3,
- 0, 20, 0, 0
+ 0, 14, 5, 15, 0, 0, 16, 0,
+ 0, 17, 0, 0, 18, 5, 0, 0,
+ 19, 20, 0, 3, 0, 5, 21, 0,
+ 0
};
static const char _use_syllable_machine_to_state_actions[] = {
- 0, 0, 0, 0, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 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,
@@ -314,11 +333,11 @@ 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
};
static const char _use_syllable_machine_from_state_actions[] = {
- 0, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 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,
@@ -326,33 +345,35 @@ 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, 0, 0,
+ 0, 0
};
static const short _use_syllable_machine_eof_trans[] = {
- 1, 3, 3, 6, 0, 41, 43, 43,
- 67, 67, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 67, 43, 70,
- 73, 70, 43, 43, 77, 77, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 82, 78, 78, 78, 82,
- 78, 78, 78, 78, 77, 82
+ 1, 3, 3, 6, 6, 0, 42, 44,
+ 44, 68, 68, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 71, 44,
+ 44, 44, 44, 44, 44, 44, 44, 44,
+ 68, 44, 74, 77, 74, 44, 44, 81,
+ 81, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 87,
+ 82, 82, 82, 87, 82, 82, 82, 82,
+ 81, 87
};
-static const int use_syllable_machine_start = 4;
-static const int use_syllable_machine_first_final = 4;
+static const int use_syllable_machine_start = 5;
+static const int use_syllable_machine_first_final = 5;
static const int use_syllable_machine_error = -1;
-static const int use_syllable_machine_en_main = 4;
+static const int use_syllable_machine_en_main = 5;
#line 38 "hb-ot-shape-complex-use-machine.rl"
-#line 150 "hb-ot-shape-complex-use-machine.rl"
+#line 162 "hb-ot-shape-complex-use-machine.rl"
#define found_syllable(syllable_type) \
@@ -371,7 +392,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 375 "hb-ot-shape-complex-use-machine.hh"
+#line 396 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@@ -379,7 +400,7 @@ find_syllables (hb_buffer_t *buffer)
act = 0;
}
-#line 170 "hb-ot-shape-complex-use-machine.rl"
+#line 182 "hb-ot-shape-complex-use-machine.rl"
p = 0;
@@ -387,7 +408,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
-#line 391 "hb-ot-shape-complex-use-machine.hh"
+#line 412 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@@ -397,11 +418,11 @@ find_syllables (hb_buffer_t *buffer)
goto _test_eof;
_resume:
switch ( _use_syllable_machine_from_state_actions[cs] ) {
- case 6:
+ case 7:
#line 1 "NONE"
{ts = p;}
break;
-#line 405 "hb-ot-shape-complex-use-machine.hh"
+#line 426 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@@ -419,73 +440,77 @@ _eof_trans:
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
- case 7:
+ case 5:
#line 1 "NONE"
{te = p+1;}
break;
case 12:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
+#line 150 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (independent_cluster); }}
break;
case 14:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (standard_cluster); }}
break;
case 10:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
case 8:
-#line 146 "hb-ot-shape-complex-use-machine.rl"
+#line 158 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (non_cluster); }}
break;
case 11:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
+#line 150 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (independent_cluster); }}
break;
case 15:
-#line 140 "hb-ot-shape-complex-use-machine.rl"
+#line 151 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
break;
+ case 16:
+#line 152 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
+ break;
case 13:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (standard_cluster); }}
break;
- case 17:
-#line 142 "hb-ot-shape-complex-use-machine.rl"
+ case 18:
+#line 154 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
break;
- case 16:
-#line 143 "hb-ot-shape-complex-use-machine.rl"
+ case 17:
+#line 155 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (numeral_cluster); }}
break;
- case 18:
-#line 144 "hb-ot-shape-complex-use-machine.rl"
+ case 19:
+#line 156 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
- case 19:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+ case 20:
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
- case 20:
-#line 146 "hb-ot-shape-complex-use-machine.rl"
+ case 21:
+#line 158 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (non_cluster); }}
break;
case 1:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+#line 153 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
break;
case 4:
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+#line 157 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
break;
case 2:
#line 1 "NONE"
{ switch( act ) {
- case 7:
+ case 8:
{{p = ((te))-1;} found_syllable (broken_cluster); }
break;
- case 8:
+ case 9:
{{p = ((te))-1;} found_syllable (non_cluster); }
break;
}
@@ -494,25 +519,25 @@ _eof_trans:
case 3:
#line 1 "NONE"
{te = p+1;}
-#line 145 "hb-ot-shape-complex-use-machine.rl"
- {act = 7;}
+#line 157 "hb-ot-shape-complex-use-machine.rl"
+ {act = 8;}
break;
case 9:
#line 1 "NONE"
{te = p+1;}
-#line 146 "hb-ot-shape-complex-use-machine.rl"
- {act = 8;}
+#line 158 "hb-ot-shape-complex-use-machine.rl"
+ {act = 9;}
break;
-#line 507 "hb-ot-shape-complex-use-machine.hh"
+#line 532 "hb-ot-shape-complex-use-machine.hh"
}
_again:
switch ( _use_syllable_machine_to_state_actions[cs] ) {
- case 5:
+ case 6:
#line 1 "NONE"
{ts = 0;}
break;
-#line 516 "hb-ot-shape-complex-use-machine.hh"
+#line 541 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
@@ -528,7 +553,7 @@ _again:
}
-#line 178 "hb-ot-shape-complex-use-machine.rl"
+#line 190 "hb-ot-shape-complex-use-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
index 2a1b90d8fc6..aca7ea68345 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
@@ -68,6 +68,7 @@ VS = 21; # VARIATION_SELECTOR
#VM = 40; # VOWEL_MOD
CS = 43; # CONS_WITH_STACKER
HVM = 44; # HALANT_OR_VOWEL_MODIFIER
+Sk = 48; # SAKOT
FAbv = 24; # CONS_FINAL_ABOVE
FBlw = 25; # CONS_FINAL_BELOW
@@ -92,7 +93,7 @@ FMAbv = 45; # CONS_FINAL_MOD UIPC = Top
FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom
FMPst = 47; # CONS_FINAL_MOD UIPC = Not_Applicable
-h = H | HVM; # https://github.com/harfbuzz/harfbuzz/issues/1102
+h = H | HVM | Sk;
# Override: Adhoc ZWJ placement. https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-353169729
consonant_modifiers = CMAbv* CMBlw* ((ZWJ?.h.ZWJ? B | SUB) VS? CMAbv? CMBlw*)*;
@@ -103,11 +104,16 @@ vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
final_consonants = FAbv* FBlw* FPst*;
final_modifiers = FMAbv* FMBlw* | FMPst?;
-complex_syllable_tail =
+complex_syllable_start = (R | CS)? (B | GB) VS?;
+complex_syllable_middle =
consonant_modifiers
medial_consonants
dependent_vowels
vowel_modifiers
+ (Sk B)*
+;
+complex_syllable_tail =
+ complex_syllable_middle
final_consonants
final_modifiers
;
@@ -116,12 +122,17 @@ numeral_cluster_tail = (HN N VS?)+;
symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+;
virama_terminated_cluster =
- (R|CS)? (B | GB) VS?
+ complex_syllable_start
consonant_modifiers
ZWJ?.h.ZWJ?
;
+sakot_terminated_cluster =
+ complex_syllable_start
+ complex_syllable_middle
+ Sk
+;
standard_cluster =
- (R|CS)? (B | GB) VS?
+ complex_syllable_start
complex_syllable_tail
;
broken_cluster =
@@ -138,6 +149,7 @@ other = any;
main := |*
independent_cluster => { found_syllable (independent_cluster); };
virama_terminated_cluster => { found_syllable (virama_terminated_cluster); };
+ sakot_terminated_cluster => { found_syllable (sakot_terminated_cluster); };
standard_cluster => { found_syllable (standard_cluster); };
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
numeral_cluster => { found_syllable (numeral_cluster); };
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
index 93b81521715..024746989b7 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
@@ -33,6 +33,7 @@
#define Rsv USE_Rsv /* Reserved */
#define S USE_S /* SYM */
#define SUB USE_SUB /* CONS_SUB */
+#define Sk USE_Sk /* SAKOT */
#define VS USE_VS /* VARIATION_SELECTOR */
#define WJ USE_WJ /* Word_Joiner */
#define ZWJ USE_ZWJ /* ZWJ */
@@ -305,7 +306,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1A30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O,
- /* 1A60 */ H, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
+ /* 1A60 */ Sk, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FMAbv, FMAbv, O, O, FMBlw,
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
/* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
@@ -822,6 +823,7 @@ hb_use_get_category (hb_codepoint_t u)
#undef Rsv
#undef S
#undef SUB
+#undef Sk
#undef VS
#undef WJ
#undef ZWJ
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
index cbaa519c4b5..2cc5ea27861 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
@@ -246,6 +246,7 @@ data_destroy_use (void *data)
enum syllable_type_t {
independent_cluster,
virama_terminated_cluster,
+ sakot_terminated_cluster,
standard_cluster,
number_joiner_terminated_cluster,
numeral_cluster,
@@ -337,6 +338,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
break;
case virama_terminated_cluster:
+ case sakot_terminated_cluster:
case standard_cluster:
case number_joiner_terminated_cluster:
case numeral_cluster:
@@ -443,6 +445,7 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end)
/* Only a few syllable types need reordering. */
if (unlikely (!(FLAG_UNSAFE (syllable_type) &
(FLAG (virama_terminated_cluster) |
+ FLAG (sakot_terminated_cluster) |
FLAG (standard_cluster) |
FLAG (broken_cluster) |
0))))
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
index b52b853cd9f..ce6645ecd31 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.hh
@@ -73,6 +73,8 @@ enum use_category_t {
/* https://github.com/harfbuzz/harfbuzz/issues/1102 */
USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */
+ USE_Sk = 48, /* SAKOT */
+
USE_FAbv = 24, /* CONS_FINAL_ABOVE */
USE_FBlw = 25, /* CONS_FINAL_BELOW */
USE_FPst = 26, /* CONS_FINAL_POST */