From c1acfe9966b1d2bd74c80de4aefcccc309664822 Mon Sep 17 00:00:00 2001 From: Qunxin Liu Date: Wed, 22 Mar 2023 19:06:58 -0700 Subject: [PATCH] [instancer] bug fix in TupleVariationData get_size () We need to iterate TupleVariationHeader when calculating the total size --- src/hb-ot-var-common.hh | 7 +++++-- ...ABC.default.retain-all-codepoint.wght=300.ttf | Bin 0 -> 5808 bytes ...ABC.default.retain-all-codepoint.wght=700.ttf | Bin 0 -> 5804 bytes test/subset/data/fonts/Muli-ABC.ttf | Bin 0 -> 6996 bytes test/subset/data/tests/apply_cvar_delta.tests | 1 + 5 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=300.ttf create mode 100644 test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=700.ttf create mode 100644 test/subset/data/fonts/Muli-ABC.ttf diff --git a/src/hb-ot-var-common.hh b/src/hb-ot-var-common.hh index 9df798734..2081f1b9b 100644 --- a/src/hb-ot-var-common.hh +++ b/src/hb-ot-var-common.hh @@ -360,9 +360,12 @@ struct TupleVariationData { unsigned total_size = min_size; unsigned count = tupleVarCount; - const TupleVariationHeader& tuple_var_header = get_tuple_var_header(); + const TupleVariationHeader *tuple_var_header = &(get_tuple_var_header()); for (unsigned i = 0; i < count; i++) - total_size += tuple_var_header.get_size (axis_count) + tuple_var_header.get_data_size (); + { + total_size += tuple_var_header->get_size (axis_count) + tuple_var_header->get_data_size (); + tuple_var_header = &tuple_var_header->get_next (axis_count); + } return total_size; } diff --git a/test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=300.ttf b/test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=300.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2680eb2d1b4b86b7ef6b2cc3cd500aba0dd25ff GIT binary patch literal 5808 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=700.ttf b/test/subset/data/expected/apply_cvar_delta/Muli-ABC.default.retain-all-codepoint.wght=700.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d590978aa2bf76c5bb937014a3699b80ccb14f17 GIT binary patch literal 5804 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/fonts/Muli-ABC.ttf b/test/subset/data/fonts/Muli-ABC.ttf new file mode 100644 index 0000000000000000000000000000000000000000..60e652039ad52a40a952a2ffb8d3bc9af7b713fc GIT binary patch literal 6996 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/tests/apply_cvar_delta.tests b/test/subset/data/tests/apply_cvar_delta.tests index 931cdf89b..d19d71a5b 100644 --- a/test/subset/data/tests/apply_cvar_delta.tests +++ b/test/subset/data/tests/apply_cvar_delta.tests @@ -1,5 +1,6 @@ FONTS: Comfortaa-Regular-new.ttf +Muli-ABC.ttf PROFILES: default.txt