From e888f642db16f52836cbfec29de43ff20236dc85 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 26 Jan 2017 14:50:14 -0800 Subject: [PATCH] Route Adlam through Arabic shaper Fixes joined Adlam rendering. Fixes https://github.com/googlei18n/noto-fonts/issues/828 --- src/hb-ot-shape-complex-private.hh | 3 +++ test/shaping/Makefile.am | 1 + ...5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf | Bin 0 -> 21160 bytes test/shaping/tests/arabic-like-joining.tests | 1 + 4 files changed, 5 insertions(+) create mode 100644 test/shaping/fonts/sha1sum/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf create mode 100644 test/shaping/tests/arabic-like-joining.tests diff --git a/src/hb-ot-shape-complex-private.hh b/src/hb-ot-shape-complex-private.hh index 39572dfe0..952441b6a 100644 --- a/src/hb-ot-shape-complex-private.hh +++ b/src/hb-ot-shape-complex-private.hh @@ -191,6 +191,9 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) case HB_SCRIPT_MANICHAEAN: case HB_SCRIPT_PSALTER_PAHLAVI: + /* Unicode-9.0 additions */ + case HB_SCRIPT_ADLAM: + /* For Arabic script, use the Arabic shaper even if no OT script tag was found. * This is because we do fallback shaping for Arabic script (and not others). * But note that Arabic shaping is applicable only to horizontal layout; for diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index ea0b28a7e..89578e10b 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -43,6 +43,7 @@ CLEANFILES += \ TESTS = \ tests/arabic-fallback-shaping.tests \ tests/arabic-feature-order.tests \ + tests/arabic-like-joining.tests \ tests/automatic-fractions.tests \ tests/cluster.tests \ tests/color-fonts.tests \ diff --git a/test/shaping/fonts/sha1sum/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf b/test/shaping/fonts/sha1sum/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf new file mode 100644 index 0000000000000000000000000000000000000000..45f16fc1407aa8066ffa52ecf2fd8a889cbd7093 GIT binary patch literal 21160 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