From 8a5524833ce78484ed38eeacffc476c462a384d8 Mon Sep 17 00:00:00 2001 From: Qunxin Liu Date: Thu, 27 Oct 2022 09:43:07 -0700 Subject: [PATCH 01/13] [instance] update OS2/.usWeightClass and .usWidthClass when no-prune-unicode-ranges option is enabled --- src/hb-ot-os2-table.hh | 23 +++++++++--------- ....retain-all-codepoint.wght=150,wdth=80.ttf | Bin 0 -> 114200 bytes ....retain-all-codepoint.wght=300,wdth=90.ttf | Bin 0 -> 114300 bytes test/subset/data/tests/full_instance.tests | 1 + 4 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=150,wdth=80.ttf create mode 100644 test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=300,wdth=90.ttf diff --git a/src/hb-ot-os2-table.hh b/src/hb-ot-os2-table.hh index c6e8fad6f..5b017d56a 100644 --- a/src/hb-ot-os2-table.hh +++ b/src/hb-ot-os2-table.hh @@ -212,17 +212,6 @@ struct OS2 TRACE_SUBSET (this); OS2 *os2_prime = c->serializer->embed (this); if (unlikely (!os2_prime)) return_trace (false); - if (c->plan->flags & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES) - return_trace (true); - - /* when --gids option is not used, no need to do collect_mapping that is - * iterating all codepoints in each subtable, which is not efficient */ - uint16_t min_cp, max_cp; - find_min_and_max_codepoint (c->plan->unicodes, &min_cp, &max_cp); - os2_prime->usFirstCharIndex = min_cp; - os2_prime->usLastCharIndex = max_cp; - - _update_unicode_ranges (c->plan->unicodes, os2_prime->ulUnicodeRange); if (c->plan->user_axes_location->has (HB_TAG ('w','g','h','t')) && !c->plan->pinned_at_default) @@ -244,6 +233,18 @@ struct OS2 return_trace (false); } + if (c->plan->flags & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES) + return_trace (true); + + /* when --gids option is not used, no need to do collect_mapping that is + * iterating all codepoints in each subtable, which is not efficient */ + uint16_t min_cp, max_cp; + find_min_and_max_codepoint (c->plan->unicodes, &min_cp, &max_cp); + os2_prime->usFirstCharIndex = min_cp; + os2_prime->usLastCharIndex = max_cp; + + _update_unicode_ranges (c->plan->unicodes, os2_prime->ulUnicodeRange); + return_trace (true); } diff --git a/test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=150,wdth=80.ttf b/test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=150,wdth=80.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ca2aeeff6e314d44c9c9ad93a76bace4fcd65332 GIT binary patch literal 114200 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

;e$Vm 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=300,wdth=90.ttf b/test/subset/data/expected/full_instance/Roboto-Variable.no-prune-unicode-ranges.retain-all-codepoint.wght=300,wdth=90.ttf new file mode 100644 index 0000000000000000000000000000000000000000..04be94efe94c9a36fb3a89b8abcf0c6e0dadfd7d GIT binary patch literal 114300 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 z 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/tests/full_instance.tests b/test/subset/data/tests/full_instance.tests index 1b0867387..f99e5ebe9 100644 --- a/test/subset/data/tests/full_instance.tests +++ b/test/subset/data/tests/full_instance.tests @@ -3,6 +3,7 @@ Roboto-Variable.ttf PROFILES: default.txt +no-prune-unicode-ranges.txt SUBSETS: * From d88269c827895b38f99f7cf741fa60210d4d5169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 28 Oct 2022 22:17:15 +0300 Subject: [PATCH 02/13] freetype: Fix function signatures to match without casts Clang 16 has got a new stricter warning for casts of function types (see https://github.com/llvm/llvm-project/commit/1aad641c793090b4d036c03e737df2ebe2c32c57). This new warning gets included as part of the existing error diagnostic setting of -Wcast-function-type. This fixes errors like these: ../src/hb-ft.cc:1011:34: error: cast from 'void (*)(FT_Face)' (aka 'void (*)(FT_FaceRec_ *)') to 'FT_Generic_Finalizer' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- src/hb-ft.cc | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/hb-ft.cc b/src/hb-ft.cc index bcc1dd080..1626b9a15 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -732,16 +732,18 @@ hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED, static int _hb_ft_move_to (const FT_Vector *to, - hb_draw_session_t *drawing) + void *arg) { + hb_draw_session_t *drawing = (hb_draw_session_t *) arg; drawing->move_to (to->x, to->y); return FT_Err_Ok; } static int _hb_ft_line_to (const FT_Vector *to, - hb_draw_session_t *drawing) + void *arg) { + hb_draw_session_t *drawing = (hb_draw_session_t *) arg; drawing->line_to (to->x, to->y); return FT_Err_Ok; } @@ -749,8 +751,9 @@ _hb_ft_line_to (const FT_Vector *to, static int _hb_ft_conic_to (const FT_Vector *control, const FT_Vector *to, - hb_draw_session_t *drawing) + void *arg) { + hb_draw_session_t *drawing = (hb_draw_session_t *) arg; drawing->quadratic_to (control->x, control->y, to->x, to->y); return FT_Err_Ok; @@ -760,8 +763,9 @@ static int _hb_ft_cubic_to (const FT_Vector *control1, const FT_Vector *control2, const FT_Vector *to, - hb_draw_session_t *drawing) + void *arg) { + hb_draw_session_t *drawing = (hb_draw_session_t *) arg; drawing->cubic_to (control1->x, control1->y, control2->x, control2->y, to->x, to->y); @@ -787,10 +791,10 @@ hb_ft_get_glyph_shape (hb_font_t *font HB_UNUSED, return; const FT_Outline_Funcs outline_funcs = { - (FT_Outline_MoveToFunc) _hb_ft_move_to, - (FT_Outline_LineToFunc) _hb_ft_line_to, - (FT_Outline_ConicToFunc) _hb_ft_conic_to, - (FT_Outline_CubicToFunc) _hb_ft_cubic_to, + _hb_ft_move_to, + _hb_ft_line_to, + _hb_ft_conic_to, + _hb_ft_cubic_to, 0, /* shift */ 0, /* delta */ }; @@ -975,8 +979,9 @@ hb_ft_face_create_referenced (FT_Face ft_face) } static void -hb_ft_face_finalize (FT_Face ft_face) +hb_ft_face_finalize (void *arg) { + FT_Face ft_face = (FT_Face) arg; hb_face_destroy ((hb_face_t *) ft_face->generic.data); } @@ -1008,7 +1013,7 @@ hb_ft_face_create_cached (FT_Face ft_face) ft_face->generic.finalizer (ft_face); ft_face->generic.data = hb_ft_face_create (ft_face, nullptr); - ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize; + ft_face->generic.finalizer = hb_ft_face_finalize; } return hb_face_reference ((hb_face_t *) ft_face->generic.data); @@ -1217,8 +1222,9 @@ get_ft_library () } static void -_release_blob (FT_Face ft_face) +_release_blob (void *arg) { + FT_Face ft_face = (FT_Face) arg; hb_blob_destroy ((hb_blob_t *) ft_face->generic.data); } @@ -1271,7 +1277,7 @@ hb_ft_font_set_funcs (hb_font_t *font) ft_face->generic.data = blob; - ft_face->generic.finalizer = (FT_Generic_Finalizer) _release_blob; + ft_face->generic.finalizer = _release_blob; _hb_ft_font_set_funcs (font, ft_face, true); hb_ft_font_set_load_flags (font, FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING); From 60c6b7786d9f4651ae2803bfc4ff4435b38a5bc6 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 28 Oct 2022 14:19:39 -0600 Subject: [PATCH 03/13] Disable -Wcast-function-type-strict https://github.com/harfbuzz/harfbuzz/pull/3859#issuecomment-1295409126 --- src/hb.hh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hb.hh b/src/hb.hh index 8ec638a2b..410d090d3 100644 --- a/src/hb.hh +++ b/src/hb.hh @@ -126,6 +126,7 @@ /* Ignored intentionally. */ #ifndef HB_NO_PRAGMA_GCC_DIAGNOSTIC_IGNORED #pragma GCC diagnostic ignored "-Wclass-memaccess" +#pragma GCC diagnostic ignored "-Wcast-function-type-strict" // https://github.com/harfbuzz/harfbuzz/pull/3859#issuecomment-1295409126 #pragma GCC diagnostic ignored "-Wformat-nonliteral" #pragma GCC diagnostic ignored "-Wformat-zero-length" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" From a0f999cd95834dce7f98f34890aaccb44c3179d5 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 29 Oct 2022 11:13:40 -0600 Subject: [PATCH 04/13] [config] Rename HB_NO_VARIATIONS2 to HB_NO_AVAR2 --- src/hb-config.hh | 2 +- src/hb-ot-var-avar-table.hh | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hb-config.hh b/src/hb-config.hh index d56617f6a..67e8fe822 100644 --- a/src/hb-config.hh +++ b/src/hb-config.hh @@ -104,7 +104,7 @@ #ifdef HB_NO_BORING_EXPANSION #define HB_NO_BEYOND_64K -#define HB_NO_VARIATIONS2 +#define HB_NO_AVAR2 #endif #ifdef HB_DISABLE_DEPRECATED diff --git a/src/hb-ot-var-avar-table.hh b/src/hb-ot-var-avar-table.hh index f60bc4a3c..cc5c5c006 100644 --- a/src/hb-ot-var-avar-table.hh +++ b/src/hb-ot-var-avar-table.hh @@ -143,7 +143,7 @@ struct avar TRACE_SANITIZE (this); if (!(version.sanitize (c) && (version.major == 1 -#ifndef HB_NO_VARIATIONS2 +#ifndef HB_NO_AVAR2 || version.major == 2 #endif ) && @@ -159,7 +159,7 @@ struct avar map = &StructAfter (*map); } -#ifndef HB_NO_VARIATIONS2 +#ifndef HB_NO_AVAR2 if (version.major < 2) return_trace (true); @@ -182,7 +182,7 @@ struct avar map = &StructAfter (*map); } -#ifndef HB_NO_VARIATIONS2 +#ifndef HB_NO_AVAR2 if (version.major < 2) return; From 6a47ef34b1ac5c1afc94a37dc7d2bcbe2013975e Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 29 Oct 2022 11:14:27 -0600 Subject: [PATCH 05/13] [config] If not HB_EXPERIMENTAL, then HB_NO_BEYOND_64K --- src/hb-config.hh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/hb-config.hh b/src/hb-config.hh index 67e8fe822..a5243d1fb 100644 --- a/src/hb-config.hh +++ b/src/hb-config.hh @@ -35,6 +35,10 @@ #include "config.h" #endif +#ifndef HB_EXPERIMENTAL +#define HB_NO_BEYOND_64K +#endif + #ifndef HB_BORING_EXPANSION #define HB_NO_BORING_EXPANSION #endif From 02b76393efa4ca9a335cc08473bdb744be721bda Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 29 Oct 2022 11:15:03 -0600 Subject: [PATCH 06/13] [config] Re-enable BORING_EXPANSION Only the non-experimental parts (currently avar2) are enabled by default. --- src/OT/Layout/Common/Coverage.hh | 34 ++++++++++++++-------------- src/OT/Layout/GPOS/MarkBasePos.hh | 4 ++-- src/OT/Layout/GPOS/MarkLigPos.hh | 4 ++-- src/OT/Layout/GPOS/MarkMarkPos.hh | 4 ++-- src/OT/Layout/GPOS/PairPos.hh | 4 ++-- src/OT/Layout/GSUB/AlternateSubst.hh | 4 ++-- src/OT/Layout/GSUB/LigatureSubst.hh | 4 ++-- src/OT/Layout/GSUB/MultipleSubst.hh | 4 ++-- src/OT/Layout/GSUB/SingleSubst.hh | 8 +++---- src/graph/classdef-graph.hh | 2 +- src/graph/coverage-graph.hh | 2 +- src/graph/gsubgpos-graph.hh | 4 ++-- src/graph/markbasepos-graph.hh | 4 ++-- src/graph/pairpos-graph.hh | 4 ++-- src/hb-config.hh | 4 ---- 15 files changed, 43 insertions(+), 47 deletions(-) diff --git a/src/OT/Layout/Common/Coverage.hh b/src/OT/Layout/Common/Coverage.hh index eef89a287..a7befd61c 100644 --- a/src/OT/Layout/Common/Coverage.hh +++ b/src/OT/Layout/Common/Coverage.hh @@ -49,7 +49,7 @@ struct Coverage HBUINT16 format; /* Format identifier */ CoverageFormat1_3 format1; CoverageFormat2_4 format2; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K CoverageFormat1_3format3; CoverageFormat2_4format4; #endif @@ -65,7 +65,7 @@ struct Coverage { case 1: return_trace (u.format1.sanitize (c)); case 2: return_trace (u.format2.sanitize (c)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return_trace (u.format3.sanitize (c)); case 4: return_trace (u.format4.sanitize (c)); #endif @@ -87,7 +87,7 @@ struct Coverage switch (u.format) { case 1: return u.format1.get_coverage (glyph_id); case 2: return u.format2.get_coverage (glyph_id); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.get_coverage (glyph_id); case 4: return u.format4.get_coverage (glyph_id); #endif @@ -100,7 +100,7 @@ struct Coverage switch (u.format) { case 1: return u.format1.get_population (); case 2: return u.format2.get_population (); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.get_population (); case 4: return u.format4.get_population (); #endif @@ -127,7 +127,7 @@ struct Coverage } u.format = count <= num_ranges * 3 ? 1 : 2; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K if (count && last > 0xFFFFu) u.format += 2; #endif @@ -136,7 +136,7 @@ struct Coverage { case 1: return_trace (u.format1.serialize (c, glyphs)); case 2: return_trace (u.format2.serialize (c, glyphs)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return_trace (u.format3.serialize (c, glyphs)); case 4: return_trace (u.format4.serialize (c, glyphs)); #endif @@ -166,7 +166,7 @@ struct Coverage { case 1: return u.format1.intersects (glyphs); case 2: return u.format2.intersects (glyphs); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.intersects (glyphs); case 4: return u.format4.intersects (glyphs); #endif @@ -179,7 +179,7 @@ struct Coverage { case 1: return u.format1.intersects_coverage (glyphs, index); case 2: return u.format2.intersects_coverage (glyphs, index); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.intersects_coverage (glyphs, index); case 4: return u.format4.intersects_coverage (glyphs, index); #endif @@ -196,7 +196,7 @@ struct Coverage { case 1: return u.format1.collect_coverage (glyphs); case 2: return u.format2.collect_coverage (glyphs); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.collect_coverage (glyphs); case 4: return u.format4.collect_coverage (glyphs); #endif @@ -212,7 +212,7 @@ struct Coverage { case 1: return u.format1.intersect_set (glyphs, intersect_glyphs); case 2: return u.format2.intersect_set (glyphs, intersect_glyphs); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.intersect_set (glyphs, intersect_glyphs); case 4: return u.format4.intersect_set (glyphs, intersect_glyphs); #endif @@ -231,7 +231,7 @@ struct Coverage { case 1: u.format1.init (c_.u.format1); return; case 2: u.format2.init (c_.u.format2); return; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: u.format3.init (c_.u.format3); return; case 4: u.format4.init (c_.u.format4); return; #endif @@ -244,7 +244,7 @@ struct Coverage { case 1: return u.format1.__more__ (); case 2: return u.format2.__more__ (); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.__more__ (); case 4: return u.format4.__more__ (); #endif @@ -257,7 +257,7 @@ struct Coverage { case 1: u.format1.__next__ (); break; case 2: u.format2.__next__ (); break; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: u.format3.__next__ (); break; case 4: u.format4.__next__ (); break; #endif @@ -273,7 +273,7 @@ struct Coverage { case 1: return u.format1.get_glyph (); case 2: return u.format2.get_glyph (); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3.get_glyph (); case 4: return u.format4.get_glyph (); #endif @@ -287,7 +287,7 @@ struct Coverage { case 1: return u.format1 != o.u.format1; case 2: return u.format2 != o.u.format2; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return u.format3 != o.u.format3; case 4: return u.format4 != o.u.format4; #endif @@ -302,7 +302,7 @@ struct Coverage { case 1: it.u.format1 = u.format1.__end__ (); break; case 2: it.u.format2 = u.format2.__end__ (); break; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: it.u.format3 = u.format3.__end__ (); break; case 4: it.u.format4 = u.format4.__end__ (); break; #endif @@ -314,7 +314,7 @@ struct Coverage private: unsigned int format; union { -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K CoverageFormat2_4::iter_t format4; /* Put this one first since it's larger; helps shut up compiler. */ CoverageFormat1_3::iter_t format3; #endif diff --git a/src/OT/Layout/GPOS/MarkBasePos.hh b/src/OT/Layout/GPOS/MarkBasePos.hh index c99b6b2e4..edf7099c0 100644 --- a/src/OT/Layout/GPOS/MarkBasePos.hh +++ b/src/OT/Layout/GPOS/MarkBasePos.hh @@ -13,7 +13,7 @@ struct MarkBasePos union { HBUINT16 format; /* Format identifier */ MarkBasePosFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K MarkBasePosFormat1_2 format2; #endif } u; @@ -26,7 +26,7 @@ struct MarkBasePos if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GPOS/MarkLigPos.hh b/src/OT/Layout/GPOS/MarkLigPos.hh index 8a4de9ffa..09152fd87 100644 --- a/src/OT/Layout/GPOS/MarkLigPos.hh +++ b/src/OT/Layout/GPOS/MarkLigPos.hh @@ -13,7 +13,7 @@ struct MarkLigPos union { HBUINT16 format; /* Format identifier */ MarkLigPosFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K MarkLigPosFormat1_2 format2; #endif } u; @@ -26,7 +26,7 @@ struct MarkLigPos if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GPOS/MarkMarkPos.hh b/src/OT/Layout/GPOS/MarkMarkPos.hh index 74b5105c4..4118fc304 100644 --- a/src/OT/Layout/GPOS/MarkMarkPos.hh +++ b/src/OT/Layout/GPOS/MarkMarkPos.hh @@ -13,7 +13,7 @@ struct MarkMarkPos union { HBUINT16 format; /* Format identifier */ MarkMarkPosFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K MarkMarkPosFormat1_2 format2; #endif } u; @@ -26,7 +26,7 @@ struct MarkMarkPos if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GPOS/PairPos.hh b/src/OT/Layout/GPOS/PairPos.hh index 72bfc43dc..9823768cb 100644 --- a/src/OT/Layout/GPOS/PairPos.hh +++ b/src/OT/Layout/GPOS/PairPos.hh @@ -15,7 +15,7 @@ struct PairPos HBUINT16 format; /* Format identifier */ PairPosFormat1_3 format1; PairPosFormat2_4 format2; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K PairPosFormat1_3 format3; PairPosFormat2_4 format4; #endif @@ -30,7 +30,7 @@ struct PairPos switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return_trace (c->dispatch (u.format3, std::forward (ds)...)); case 4: return_trace (c->dispatch (u.format4, std::forward (ds)...)); #endif diff --git a/src/OT/Layout/GSUB/AlternateSubst.hh b/src/OT/Layout/GSUB/AlternateSubst.hh index 37406179a..9d7cd6fdd 100644 --- a/src/OT/Layout/GSUB/AlternateSubst.hh +++ b/src/OT/Layout/GSUB/AlternateSubst.hh @@ -14,7 +14,7 @@ struct AlternateSubst union { HBUINT16 format; /* Format identifier */ AlternateSubstFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K AlternateSubstFormat1_2 format2; #endif } u; @@ -27,7 +27,7 @@ struct AlternateSubst if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GSUB/LigatureSubst.hh b/src/OT/Layout/GSUB/LigatureSubst.hh index 63707972a..7ba19e844 100644 --- a/src/OT/Layout/GSUB/LigatureSubst.hh +++ b/src/OT/Layout/GSUB/LigatureSubst.hh @@ -14,7 +14,7 @@ struct LigatureSubst union { HBUINT16 format; /* Format identifier */ LigatureSubstFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K LigatureSubstFormat1_2 format2; #endif } u; @@ -27,7 +27,7 @@ struct LigatureSubst if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GSUB/MultipleSubst.hh b/src/OT/Layout/GSUB/MultipleSubst.hh index 852ca3eac..95710ed2b 100644 --- a/src/OT/Layout/GSUB/MultipleSubst.hh +++ b/src/OT/Layout/GSUB/MultipleSubst.hh @@ -14,7 +14,7 @@ struct MultipleSubst union { HBUINT16 format; /* Format identifier */ MultipleSubstFormat1_2 format1; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K MultipleSubstFormat1_2 format2; #endif } u; @@ -28,7 +28,7 @@ struct MultipleSubst if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); #endif default:return_trace (c->default_return_value ()); diff --git a/src/OT/Layout/GSUB/SingleSubst.hh b/src/OT/Layout/GSUB/SingleSubst.hh index 6942e6997..7da810316 100644 --- a/src/OT/Layout/GSUB/SingleSubst.hh +++ b/src/OT/Layout/GSUB/SingleSubst.hh @@ -16,7 +16,7 @@ struct SingleSubst HBUINT16 format; /* Format identifier */ SingleSubstFormat1_3 format1; SingleSubstFormat2_4 format2; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K SingleSubstFormat1_3 format3; SingleSubstFormat2_4 format4; #endif @@ -32,7 +32,7 @@ struct SingleSubst switch (u.format) { case 1: return_trace (c->dispatch (u.format1, std::forward (ds)...)); case 2: return_trace (c->dispatch (u.format2, std::forward (ds)...)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return_trace (c->dispatch (u.format3, std::forward (ds)...)); case 4: return_trace (c->dispatch (u.format4, std::forward (ds)...)); #endif @@ -55,7 +55,7 @@ struct SingleSubst format = 1; hb_codepoint_t mask = 0xFFFFu; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K if (+ glyphs | hb_map_retains_sorting (hb_first) | hb_filter ([] (hb_codepoint_t gid) { return gid > 0xFFFFu; })) @@ -78,7 +78,7 @@ struct SingleSubst | hb_map_retains_sorting (hb_first), delta)); case 2: return_trace (u.format2.serialize (c, glyphs)); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: return_trace (u.format3.serialize (c, + glyphs | hb_map_retains_sorting (hb_first), diff --git a/src/graph/classdef-graph.hh b/src/graph/classdef-graph.hh index 0bda76ac2..c2e24a706 100644 --- a/src/graph/classdef-graph.hh +++ b/src/graph/classdef-graph.hh @@ -112,7 +112,7 @@ struct ClassDef : public OT::ClassDef { case 1: return ((ClassDefFormat1*)this)->sanitize (vertex); case 2: return ((ClassDefFormat2*)this)->sanitize (vertex); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K // Not currently supported case 3: case 4: diff --git a/src/graph/coverage-graph.hh b/src/graph/coverage-graph.hh index 3c1022f09..49d093631 100644 --- a/src/graph/coverage-graph.hh +++ b/src/graph/coverage-graph.hh @@ -136,7 +136,7 @@ struct Coverage : public OT::Layout::Common::Coverage { case 1: return ((CoverageFormat1*)this)->sanitize (vertex); case 2: return ((CoverageFormat2*)this)->sanitize (vertex); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K // Not currently supported case 3: case 4: diff --git a/src/graph/gsubgpos-graph.hh b/src/graph/gsubgpos-graph.hh index e8d5bef9a..9213cf599 100644 --- a/src/graph/gsubgpos-graph.hh +++ b/src/graph/gsubgpos-graph.hh @@ -355,7 +355,7 @@ struct GSTAR : public OT::GSUBGPOS { switch (u.version.major) { case 1: return u.version1.get_lookup_list_offset (); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: return u.version2.get_lookup_list_offset (); #endif default: return 0; @@ -374,7 +374,7 @@ struct GSTAR : public OT::GSUBGPOS { switch (u.version.major) { case 1: find_lookups (graph, lookups); break; -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: find_lookups (graph, lookups); break; #endif } diff --git a/src/graph/markbasepos-graph.hh b/src/graph/markbasepos-graph.hh index e42a6042c..9b01b5d86 100644 --- a/src/graph/markbasepos-graph.hh +++ b/src/graph/markbasepos-graph.hh @@ -477,7 +477,7 @@ struct MarkBasePos : public OT::Layout::GPOS_impl::MarkBasePos switch (u.format) { case 1: return ((MarkBasePosFormat1*)(&u.format1))->split_subtables (c, parent_index, this_index); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: HB_FALLTHROUGH; // Don't split 24bit PairPos's. #endif @@ -494,7 +494,7 @@ struct MarkBasePos : public OT::Layout::GPOS_impl::MarkBasePos switch (u.format) { case 1: return ((MarkBasePosFormat1*)(&u.format1))->sanitize (vertex); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 2: HB_FALLTHROUGH; #endif default: diff --git a/src/graph/pairpos-graph.hh b/src/graph/pairpos-graph.hh index 8040778ea..041e5069b 100644 --- a/src/graph/pairpos-graph.hh +++ b/src/graph/pairpos-graph.hh @@ -611,7 +611,7 @@ struct PairPos : public OT::Layout::GPOS_impl::PairPos return ((PairPosFormat1*)(&u.format1))->split_subtables (c, parent_index, this_index); case 2: return ((PairPosFormat2*)(&u.format2))->split_subtables (c, parent_index, this_index); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: HB_FALLTHROUGH; case 4: HB_FALLTHROUGH; // Don't split 24bit PairPos's. @@ -631,7 +631,7 @@ struct PairPos : public OT::Layout::GPOS_impl::PairPos return ((PairPosFormat1*)(&u.format1))->sanitize (vertex); case 2: return ((PairPosFormat2*)(&u.format2))->sanitize (vertex); -#ifndef HB_NO_BORING_EXPANSION +#ifndef HB_NO_BEYOND_64K case 3: HB_FALLTHROUGH; case 4: HB_FALLTHROUGH; #endif diff --git a/src/hb-config.hh b/src/hb-config.hh index a5243d1fb..09197c16a 100644 --- a/src/hb-config.hh +++ b/src/hb-config.hh @@ -39,10 +39,6 @@ #define HB_NO_BEYOND_64K #endif -#ifndef HB_BORING_EXPANSION -#define HB_NO_BORING_EXPANSION -#endif - #ifdef HB_TINY #define HB_LEAN #define HB_MINI From 0e4f579493c42e34931277dc32aec75d0044af14 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Oct 2022 13:51:24 -0600 Subject: [PATCH 07/13] [util/hb-view] Default HB_DRAW to 1 See comments. --- util/helper-cairo.hh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/util/helper-cairo.hh b/util/helper-cairo.hh index 6df92e560..37bde1896 100644 --- a/util/helper-cairo.hh +++ b/util/helper-cairo.hh @@ -71,7 +71,17 @@ helper_cairo_use_hb_draw (const font_options_t *font_opts) { const char *env = getenv ("HB_DRAW"); if (!env) +#if 1 + /* Following branch disabled because we prefer our + * OpenType extensions working, ie going through hb-draw, + * over avoiding the obscure cairo bug. */ + return true; +#else + /* Older cairo had a bug in rendering COLRv0 fonts in + * right-to-left direction. */ return cairo_version () >= CAIRO_VERSION_ENCODE (1, 17, 5); +#endif + return atoi (env); } From 2ee42bbac2e2c85e946db525a8241d32d6b01459 Mon Sep 17 00:00:00 2001 From: Lorenz Wildberg Date: Tue, 1 Nov 2022 13:00:18 +0100 Subject: [PATCH 08/13] hb_variation_to_string: Fix GIR annotation --- src/hb-common.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hb-common.cc b/src/hb-common.cc index bbb6cd552..daaa7658c 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -1136,7 +1136,7 @@ get_C_locale () /** * hb_variation_to_string: * @variation: an #hb_variation_t to convert - * @buf: (array length=size) (out): output string + * @buf: (array length=size) (out caller-allocates): output string * @size: the allocated size of @buf * * Converts an #hb_variation_t into a `NULL`-terminated string in the format From fc935fb81b04cce3753b0502897944792be47a19 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Nov 2022 14:39:33 -0600 Subject: [PATCH 09/13] Fix snprintf use https://github.com/harfbuzz/harfbuzz/pull/3495#issuecomment-1299107964 --- src/OT/Layout/GSUB/Ligature.hh | 2 +- src/OT/Layout/GSUB/Sequence.hh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OT/Layout/GSUB/Ligature.hh b/src/OT/Layout/GSUB/Ligature.hh index 6caa80e05..cdb35f525 100644 --- a/src/OT/Layout/GSUB/Ligature.hh +++ b/src/OT/Layout/GSUB/Ligature.hh @@ -118,7 +118,7 @@ struct Ligature match_positions[i] += delta; if (i) *p++ = ','; - snprintf (p, sizeof(buf), "%u", match_positions[i]); + snprintf (p, sizeof(buf) - (p - buf), "%u", match_positions[i]); p += strlen(p); } diff --git a/src/OT/Layout/GSUB/Sequence.hh b/src/OT/Layout/GSUB/Sequence.hh index abf1c643f..e2190078b 100644 --- a/src/OT/Layout/GSUB/Sequence.hh +++ b/src/OT/Layout/GSUB/Sequence.hh @@ -117,7 +117,7 @@ struct Sequence { if (buf < p) *p++ = ','; - snprintf (p, sizeof(buf), "%u", i); + snprintf (p, sizeof(buf) - (p - buf), "%u", i); p += strlen(p); } From d1f445ec1e6518d2d135eca13e791a79a824025a Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 2 Nov 2022 12:24:04 -0600 Subject: [PATCH 10/13] [name] Typo --- src/hb-ot-name.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hb-ot-name.cc b/src/hb-ot-name.cc index c35ac5b3d..3051828ae 100644 --- a/src/hb-ot-name.cc +++ b/src/hb-ot-name.cc @@ -82,7 +82,7 @@ hb_ot_name_convert_utf (hb_bytes_t bytes, if (text_size && *text_size) { - (*text_size)--; /* Same room for NUL-termination. */ + (*text_size)--; /* Save room for NUL-termination. */ const typename out_utf_t::codepoint_t *dst_end = text + *text_size; while (src < src_end && dst < dst_end) From dbb7f47b19e60551ef4707f6a2cb60f1bd8334dd Mon Sep 17 00:00:00 2001 From: Qunxin Liu Date: Thu, 3 Nov 2022 11:55:41 -0700 Subject: [PATCH 11/13] fix bug in hb_hashmap_t has() interface It was not working when the value type is hb_bytes_t because hb_array_t overloaded operator & --- src/hb-map.hh | 2 +- src/test-map.cc | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/hb-map.hh b/src/hb-map.hh index 8302e3f8c..30a8e627d 100644 --- a/src/hb-map.hh +++ b/src/hb-map.hh @@ -221,7 +221,7 @@ struct hb_hashmap_t unsigned int i = bucket_for (key); if (items[i].is_real () && items[i] == key) { - if (vp) *vp = &items[i].value; + if (vp) *vp = std::addressof (items[i].value); return true; } else diff --git a/src/test-map.cc b/src/test-map.cc index 357a8b01b..861166ef6 100644 --- a/src/test-map.cc +++ b/src/test-map.cc @@ -240,5 +240,15 @@ main (int argc, char **argv) m1->set (2,4); assert (!m.has (p2)); } + /* Test value type with hb_bytes_t. */ + { + hb_hashmap_t m; + char c_str[] = "Test"; + hb_bytes_t bytes (c_str, 4); + + m.set (1, bytes); + assert (m.has (1)); + } + return 0; } From 2822b589bc837fae6f66233e2cf2eef0f6ce8470 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Thu, 3 Nov 2022 19:49:49 +0000 Subject: [PATCH 12/13] [subset] Include instancing tests in distribution. Automatically enable them when the experimental api is enabled. --- test/subset/data/Makefile.am | 5 +++++ test/subset/data/Makefile.sources | 5 +++++ test/subset/meson.build | 19 ++++++++++++------- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 8ee692359..e6d2325ee 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -7,6 +7,7 @@ SUBDIRS = repack_tests EXTRA_DIST += \ $(TESTS) \ + $(DISABLED_TESTS) \ expected/32bit_var_store \ expected/basics \ expected/full-font \ @@ -55,6 +56,10 @@ EXTRA_DIST += \ expected/math \ expected/math_coverage_offset \ expected/post \ + expected/full_instance \ + expected/instance_feature_variations \ + expected/instantiate_glyf \ + expected/pin_all_at_default \ fonts \ profiles \ $(NULL) diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index 798db64f2..83f3e5ab0 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources @@ -57,5 +57,10 @@ TESTS = \ XFAIL_TESTS = \ $(NULL) +# Disabled because instancing is only available w/ experimental API on. DISABLED_TESTS = \ + tests/full_instance.tests \ + tests/instance_feature_variations.tests \ + tests/instantiate_glyf.tests \ + tests/pin_all_at_default.tests \ $(NULL) diff --git a/test/subset/meson.build b/test/subset/meson.build index 319d8bb21..f9b765a41 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -40,8 +40,8 @@ tests = [ 'colr_glyphs', 'math', 'math_coverage_offset', -# TODO: re-enable once colrv1 subsetting is stabilized. -# 'colrv1.notoemoji', + # TODO: re-enable once colrv1 subsetting is stabilized. + # 'colrv1.notoemoji', 'colrv1', 'colr_with_components', 'cbdt', @@ -49,13 +49,18 @@ tests = [ 'glyph_names', 'post', '32bit_var_store', -# instacing tests, enable when --instance is not experimental -# 'pin_all_at_default', -# 'instantiate_glyf', -# 'full_instance', -# 'instance_feature_variations', ] +if get_option('experimental_api') + # instacing tests, only supported in experimental api + tests += [ + 'pin_all_at_default', + 'instantiate_glyf', + 'full_instance', + 'instance_feature_variations', + ] +endif + repack_tests = [ 'basic', 'prioritization', From f53ef69d5941514b06f5afbcd83709cf724eb74d Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 4 Nov 2022 16:00:34 -0600 Subject: [PATCH 13/13] [indic] Order left-matras inside-out Fixes https://github.com/harfbuzz/harfbuzz/issues/3863 --- src/hb-ot-shaper-indic.cc | 28 +++++++++++++++++- src/hb-ot-shaper-myanmar.cc | 27 +++++++++++++++++ ...8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf | Bin 0 -> 3000 bytes ...32bb734d4c6c898a44506547d19768f0eba6a6.ttf | Bin 0 -> 2512 bytes .../in-house/tests/indic-special-cases.tests | 2 ++ .../data/in-house/tests/myanmar-misc.tests | 1 + 6 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 test/shape/data/in-house/fonts/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf create mode 100644 test/shape/data/in-house/fonts/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf diff --git a/src/hb-ot-shaper-indic.cc b/src/hb-ot-shaper-indic.cc index 55509c110..1f6ae5237 100644 --- a/src/hb-ot-shaper-indic.cc +++ b/src/hb-ot-shaper-indic.cc @@ -742,14 +742,40 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, /* Sit tight, rock 'n roll! */ hb_stable_sort (info + start, end - start, compare_indic_order); - /* Find base again */ + + /* Find base again; also flip left-matra sequence. */ + unsigned first_left_matra = end; + unsigned last_left_matra = end; base = end; for (unsigned int i = start; i < end; i++) + { if (info[i].indic_position() == POS_BASE_C) { base = i; break; } + else if (info[i].indic_position() == POS_PRE_M) + { + if (first_left_matra == end) + first_left_matra = i; + last_left_matra = i; + } + } + /* https://github.com/harfbuzz/harfbuzz/issues/3863 */ + if (first_left_matra < last_left_matra) + { + /* No need to merge clusters, handled later. */ + buffer->reverse_range (first_left_matra, last_left_matra + 1); + /* Reverse back nuktas, etc. */ + unsigned i = first_left_matra; + for (unsigned j = i; j <= last_left_matra; j++) + if (info[j].indic_category() == I_Cat(M)) + { + buffer->reverse_range (i, j + 1); + i = j + 1; + } + } + /* Things are out-of-control for post base positions, they may shuffle * around like crazy. In old-spec mode, we move halants around, so in * that case merge all clusters after base. Otherwise, check the sort diff --git a/src/hb-ot-shaper-myanmar.cc b/src/hb-ot-shaper-myanmar.cc index 78bd8de52..1039bdfeb 100644 --- a/src/hb-ot-shaper-myanmar.cc +++ b/src/hb-ot-shaper-myanmar.cc @@ -270,6 +270,33 @@ initial_reordering_consonant_syllable (hb_buffer_t *buffer, /* Sit tight, rock 'n roll! */ buffer->sort (start, end, compare_myanmar_order); + + /* Flip left-matra sequence. */ + unsigned first_left_matra = end; + unsigned last_left_matra = end; + for (unsigned int i = start; i < end; i++) + { + if (info[i].myanmar_position() == POS_PRE_M) + { + if (first_left_matra == end) + first_left_matra = i; + last_left_matra = i; + } + } + /* https://github.com/harfbuzz/harfbuzz/issues/3863 */ + if (first_left_matra < last_left_matra) + { + /* No need to merge clusters, done already? */ + buffer->reverse_range (first_left_matra, last_left_matra + 1); + /* Reverse back VS, etc. */ + unsigned i = first_left_matra; + for (unsigned j = i; j <= last_left_matra; j++) + if (info[j].myanmar_category() == M_Cat(VPre)) + { + buffer->reverse_range (i, j + 1); + i = j + 1; + } + } } static void diff --git a/test/shape/data/in-house/fonts/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf b/test/shape/data/in-house/fonts/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c9f9426a824d3dd3df001e4cd2462b9c60b4af6 GIT binary patch literal 3000 zcmb7GeQZ*X89LEks>2qwHkOs%`S4qf+6DX!FNfwe(y0(Bzj2+cU7zrUr zRcq6{X3$Go>?O4EpYo|UmFDk@&!o~|kGQ>1EFw_#b5`6qo;9=kcL&H78*FOI90(5@_?1@ju zkF@_G3S|}rt~)puKU{gf@-_Gy0p4{8@|Vn`uL3K;+mq?zhu*VYyiTNl8GAlULY{l= z@(CjCpMc*^CE_FH^GXEtr_hh2z|fs87=hmh_N2z9X3Pf*lfVan>(UbkTsVQ!VoWXMmOQ_*f$Fw?}_PWSl_^(ZdsyQ%`T(2wO7t&{G&h57QVOrCEA~enYo_ zdHwjTJxgZ=Y2Q=%_okmV{548ZU}-PylkRXq{tV-pTPevgr^Unf8|XB~ix{f4qKIT* zMiTfESXD)~bS#;g;)=&crc#V+0LYnq3U#qBpIVyLKEpY8J$k``m5)Q;s@cD;;}*#> zuNi&#Z1-uto^Lz3uzV^%t$jwj4NxaMasjtg0mR^6Lk8jd6|ga+U#bdBt74|ZdJ{u0 z@+M{|=?H5)<0_F8Up2G^*d%h3jCNy(vD?^RD4_N$^!yj|zng!5{@uH>VX)B7{Zc^8 zl|ouA<}%?25wnfJSfjiLyn^ar#OqM1s?gwCc)S>;`Vv{8$7{gf3N2QR&~gdu8^EoA z4Q`j*p3b6yRd;-s73n4PpXecVW&0?=dV$wGnKd*~Y+xY9qNqT>+D|#dz6%8r zqvVvvK`XF}KJusV{bCJNxH_ZmOky(AFfG$DJu~Q!j*t4=TEprZ+*Vw7sB7qcbq#N+ z7@eLtmPk*ICdd8$k;HU-EhESoA{G;Q;8_9=kVSAUs1c8-Amr?c^szB?R*jrN#-&W0 z?vv8qxMQdQ1*e%eK{h`}jhaHiu^3N!=E~{L0cp8PmXtDfrr%MKiged@X8yX7_Y8ff4Mc6Rjyq4*^J46Kn!$yZf@>&mRYSLUS6#%xwEqZ;l9_%436c^i*8Sr00ibuTPB>zcay9@)RX_8ynw<)*w#cVMbe zewVE~w-&R8>lb0_^4wxRD`_-^Ra>yayG61Q?|BD+%ia))1OwIfDxDrwIOKKL>-6_o z-C>7Ca@Tvk;gFC!^j)bnQlm_>P_B!pLrDF5e zhL)i~;2Z6ZwspFSR$F_tvoX-;vgW@HuMK}RuCE>H^Q8itl;KS+K5t`9{_~HV7Ny$T z*B0q-(#sEMbfK1TFye`@Sd3WyOd(pRExbc!yb7UWs0b{7##QZ56i2n|d1rmSv&QA( z_d3dcR?bK|aknx`B0~k4qL((S+Zwe0eDFP~VL2y_$GCRkBVGr|D{7)AiM>g$;&kKD zd{54hlN9U^)JYDvPe$@Qdxu+;M0ST=cDL2dW?sJf`yY2FVkh7D*@4H8cT`*Ulvlp_ z+#}4I9F#LneTO;%{oz_?=-v%Jt25{x+M9nP7F)*Q5ngz#qf|z|BF%7HdWy7m)h52z zWvHa8ug6!-P^1mw#^|L9O4A4pQ3C&YMyZ7RfJcCjg8MMm5t^bDs08RFs43i*6PPEk zGmh9Mapxp(-*7q(jW`{F=4RRrZW30~g0lzc2y{oWZyenXAbP*}m8>Z%_LQ%*sQib; zRSR1wMg#c8a0!&G{XenY9cjtJ|B7cDGC54gMYd{PcvgODr7-e~K{|o_)5u$)2axkY bWUNpRIBBfASE@NFPy)5#6`IC8LcV_kHEa<* literal 0 HcmV?d00001 diff --git a/test/shape/data/in-house/fonts/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf b/test/shape/data/in-house/fonts/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e0325bb0c0b41f08c281b7fc61198bb434411273 GIT binary patch literal 2512 zcma)7T~Hg>6+XM#)z4ag2uVm7WFg6t3__qEBw=I_f*^x!oHah7NiI>K<&8W zy1~s$GM#Cs(?>rgnNA;^X&?H~hs-z+nardQ>2KWWj~!=>8=PbY#wI|8Z1uY!e z)4Q{K&v(u}=X~ef-MhpQkqHlhoSFU?2FOA@5jO^Hedcs_6j%aI0BbX&FQtF~#^)!A z6gPnvj*s__Y`kIkB@w?4d?GvA7XHDr!tY>D0-qlp>m6JF*X>wsw%B>Ykyq3{vX^KXCoMJh#`<#t{XeYc8|v! z!kWj470f9yZ{SwJ_A+L5bq$L_Ern=A*NsLb3s3Ug^_4~V=V3OvuES4Tz6WV0DAg*soa?2{N!oW%l`n|K@l zTTD*yVOSyu1&AwLErii0*&RJ%7Vg`#R~DhG_;Ii)(PB>SW|W%A1y3kY1G81%3t*A}vjh%~EmWYn7(BdGGe^+aLVl{^uJi>rU~>qc1l~rBYF`wMmbcU+dw@f+I}|IuvTYxKm$m zH;{HY#&HUbK@tT8m7hH=m6a@qR<*wJ*E@Ia{QbdKk4t*H-Tv_5!*yP3@qqM8=>x)~hk#KBRuk!7# z*Ym&ebh!qv5075!Z#wFYH2N&TkwjuFXz@4jDMz@u)@cqlj9zFNNd}K64|;spPK{sd z^A4PoY$G$B~XR(Zj5}q<9QKvsvz%n>3K#z60z*o0s66cou20+V~br4vBR!_ zwIe@tY@)BW&(PlE_a?k1d%H)}9f{SuPbB@BxM85?g-Pk~K*$|CEGea?)`r#|mp$S= z>~I?-i^F2}SdZI$R!2*nE$nx<_q!RlD7dA-EyTF(=TvE^Or+9Z)@#;xMr$BBHR#V= z%cgQ^!+^fMuQfap@}BPYCtD1*o={UyqOS2^deGfAobl@V@>0vmi${mA4;~o|d79%5 z;cp!aPaHG*9W{1Slcm4TU2F0l>KbpuZtLhR_N59M$mckJRp!Wrv#z4&Nl)8VSwa2u z>#8i^tiDl|MXIOis;s0S9j(at;I%+<9Q;Eh@>FH?JTNv(jY3lfcl*HzGrbU{<~dUl+hGA!TNC-&q)gY E8(K5OZ~y=R literal 0 HcmV?d00001 diff --git a/test/shape/data/in-house/tests/indic-special-cases.tests b/test/shape/data/in-house/tests/indic-special-cases.tests index 016f8947f..99ba13b30 100644 --- a/test/shape/data/in-house/tests/indic-special-cases.tests +++ b/test/shape/data/in-house/tests/indic-special-cases.tests @@ -2,3 +2,5 @@ ../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf;;U+0CB0,U+200D,U+0CCD,U+0C95;[gid2=0+1334|gid6=0+358] ../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf;;U+0CB0,U+0CCD,U+200D,U+0C95;[gid2=0+1334|gid6=0+358] ../fonts/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf;;U+0C1A,U+0C3F,U+0C32,U+0C4D,U+0C15,U+0C42,U+0C30,U+0C4D;[civoweltelu=0+766|latelu=2+709|uuvowelsigntelu=2+661|kasubscripttelu=2+483|rahalanttelu=6+593] +../fonts/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf;;U+0915,U+093F,U+094E,U+093C;[uni094E=0+273|uni093C=0+0|ivowelsign03deva=0+259|uni0915=0+762] +../fonts/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf;;U+0915,U+093F,U+093C,U+094E;[uni094E=0+273|ivowelsign00deva=0+259|uni093C=0+0|uni0915=0+762] diff --git a/test/shape/data/in-house/tests/myanmar-misc.tests b/test/shape/data/in-house/tests/myanmar-misc.tests index 527386394..8ba0be472 100644 --- a/test/shape/data/in-house/tests/myanmar-misc.tests +++ b/test/shape/data/in-house/tests/myanmar-misc.tests @@ -1 +1,2 @@ ../fonts/065b01e54f35f0d849fd43bd5b936212739a50cb.ttf;;U+101A,U+1035;[ya_e_above=0+1000] +../fonts/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf;;U+1000,U+1031,U+1084;[e_shn=0+592|_e=0+618|ka=0+1124]