summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc')
-rw-r--r--chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc32
1 files changed, 23 insertions, 9 deletions
diff --git a/chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc b/chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
index a32405a8219..50209ffb0ee 100644
--- a/chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
+++ b/chromium/third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
@@ -119,6 +119,7 @@ override_features_myanmar (hb_ot_shape_planner_t *plan)
enum syllable_type_t {
consonant_syllable,
+ punctuation_cluster,
broken_cluster,
non_myanmar_cluster,
};
@@ -143,7 +144,8 @@ enum myanmar_category_t {
OT_VBlw = 27,
OT_VPre = 28,
OT_VPst = 29,
- OT_VS = 30 /* Variation selectors */
+ OT_VS = 30, /* Variation selectors */
+ OT_P = 31 /* Punctuation */
};
@@ -186,6 +188,10 @@ set_myanmar_properties (hb_glyph_info_t &info)
switch (u)
{
+ case 0x104E:
+ cat = (indic_category_t) OT_C; /* The spec says C, IndicSyllableCategory doesn't have. */
+ break;
+
case 0x002D: case 0x00A0: case 0x00D7: case 0x2012:
case 0x2013: case 0x2014: case 0x2015: case 0x2022:
case 0x25CC: case 0x25FB: case 0x25FC: case 0x25FD:
@@ -243,6 +249,10 @@ set_myanmar_properties (hb_glyph_info_t &info)
case 0x108F: case 0x109A: case 0x109B: case 0x109C:
cat = (indic_category_t) OT_SM;
break;
+
+ case 0x104A: case 0x104B:
+ cat = (indic_category_t) OT_P;
+ break;
}
if (cat == OT_M)
@@ -406,6 +416,16 @@ initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
}
static void
+initial_reordering_punctuation_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+static void
initial_reordering_non_myanmar_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_face_t *face HB_UNUSED,
hb_buffer_t *buffer HB_UNUSED,
@@ -425,6 +445,7 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
switch (syllable_type) {
case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
+ case punctuation_cluster: initial_reordering_punctuation_cluster (plan, face, buffer, start, end); return;
case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
case non_myanmar_cluster: initial_reordering_non_myanmar_cluster (plan, face, buffer, start, end); return;
}
@@ -520,13 +541,6 @@ final_reordering (const hb_ot_shape_plan_t *plan,
}
-static hb_ot_shape_normalization_mode_t
-normalization_preference_myanmar (const hb_segment_properties_t *props HB_UNUSED)
-{
- return HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT;
-}
-
-
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
{
"myanmar",
@@ -535,7 +549,7 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- normalization_preference_myanmar,
+ HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
NULL, /* decompose */
NULL, /* compose */
setup_masks_myanmar,