[subset] Fix namerecord ordering
This will fix inconsistency with fontTools.
Also according to the spec, namerecords must be sorted
first by platform ID, then by platform-specific ID,
then by language ID, and then by name ID.
diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh
index 7147484..0da5671 100644
--- a/src/hb-ot-name-table.hh
+++ b/src/hb-ot-name-table.hh
@@ -116,6 +116,29 @@
return (p == 0 ||
(p == 3 && (e == 0 || e == 1 || e == 10)));
}
+
+ static int cmp (const void *pa, const void *pb)
+ {
+ const NameRecord *a = (const NameRecord *)pa;
+ const NameRecord *b = (const NameRecord *)pb;
+
+ if (a->platformID != b->platformID)
+ return a->platformID < b->platformID ? -1 : +1;
+
+ if (a->encodingID != b->encodingID)
+ return a->encodingID < b->encodingID ? -1 : +1;
+
+ if (a->languageID != b->languageID)
+ return a->languageID < b->languageID ? -1 : +1;
+
+ if (a->nameID != b->nameID)
+ return a->nameID < b->nameID ? -1 : +1;
+
+ if (a->length != b->length)
+ return a->length < b->length ? -1 : +1;
+
+ return 0;
+ }
bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
@@ -200,7 +223,19 @@
const void *dst_string_pool = &(this + this->stringOffset);
- c->copy_all (it, src_string_pool, dst_string_pool);
+ NameRecord *name_records = (NameRecord *) calloc (it.len (), NameRecord::static_size);
+ hb_array_t<NameRecord> records (name_records, it.len ());
+
+ for (const NameRecord& record : it)
+ {
+ memcpy (name_records, &record, NameRecord::static_size);
+ name_records++;
+ }
+
+ records.qsort ();
+
+ c->copy_all (records, src_string_pool, dst_string_pool);
+ free (records.arrayZ);
if (unlikely (c->ran_out_of_room)) return_trace (false);
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,62,63.ttf
new file mode 100644
index 0000000..dbed582
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,63.ttf
new file mode 100644
index 0000000..5913420
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61.ttf
new file mode 100644
index 0000000..3635f68
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.62.ttf
new file mode 100644
index 0000000..91fcad8
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.63.ttf
new file mode 100644
index 0000000..737cbdc
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.retain-all-codepoint.ttf
new file mode 100644
index 0000000..9744bc3
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.default.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,62,63.ttf
new file mode 100644
index 0000000..bf8264b
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,63.ttf
new file mode 100644
index 0000000..c64172a
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61.ttf
new file mode 100644
index 0000000..9b26144
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.62.ttf
new file mode 100644
index 0000000..d737cd7
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.63.ttf
new file mode 100644
index 0000000..5e4d494
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.retain-all-codepoint.ttf
new file mode 100644
index 0000000..892ccb8
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints-retain-gids.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,62,63.ttf
new file mode 100644
index 0000000..bf8264b
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,63.ttf
new file mode 100644
index 0000000..bc54940
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61.ttf
new file mode 100644
index 0000000..9b26144
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.62.ttf
new file mode 100644
index 0000000..32cf9f7
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.63.ttf
new file mode 100644
index 0000000..776e758
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.retain-all-codepoint.ttf
new file mode 100644
index 0000000..892ccb8
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.drop-hints.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,62,63.ttf
new file mode 100644
index 0000000..a7af973
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,63.ttf
new file mode 100644
index 0000000..ac780db
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61.ttf
new file mode 100644
index 0000000..c4321d1
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.62.ttf
new file mode 100644
index 0000000..4c553ca
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.63.ttf
new file mode 100644
index 0000000..5234b74
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.retain-all-codepoint.ttf
new file mode 100644
index 0000000..9d22541
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-ids.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,62,63.ttf
new file mode 100644
index 0000000..9bb2a9d
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,63.ttf
new file mode 100644
index 0000000..7373aa3
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61.ttf
new file mode 100644
index 0000000..26fe19e
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.62.ttf
new file mode 100644
index 0000000..02cd270
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.63.ttf
new file mode 100644
index 0000000..64a892e
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.retain-all-codepoint.ttf
new file mode 100644
index 0000000..d5d4238
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-languages.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,62,63.ttf
new file mode 100644
index 0000000..dbed582
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,63.ttf
new file mode 100644
index 0000000..5913420
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61.ttf
new file mode 100644
index 0000000..3635f68
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.62.ttf
new file mode 100644
index 0000000..91fcad8
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.63.ttf
new file mode 100644
index 0000000..737cbdc
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.retain-all-codepoint.ttf
new file mode 100644
index 0000000..9744bc3
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.name-legacy.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,62,63.ttf
new file mode 100644
index 0000000..dbed582
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,62,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,63.ttf
new file mode 100644
index 0000000..47e72c6
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61,63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61.ttf
new file mode 100644
index 0000000..3635f68
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.61.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.62.ttf
new file mode 100644
index 0000000..57f7ec7
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.62.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.63.ttf
new file mode 100644
index 0000000..d0426a0
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.63.ttf
Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.retain-all-codepoint.ttf
new file mode 100644
index 0000000..9744bc3
--- /dev/null
+++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.retain-gids.retain-all-codepoint.ttf
Binary files differ
diff --git a/test/subset/data/expected/japanese/Mplus1p-Regular.default.25771.ttf b/test/subset/data/expected/japanese/Mplus1p-Regular.default.25771.ttf
index e7fe616..1dcfeec 100644
--- a/test/subset/data/expected/japanese/Mplus1p-Regular.default.25771.ttf
+++ b/test/subset/data/expected/japanese/Mplus1p-Regular.default.25771.ttf
Binary files differ
diff --git a/test/subset/data/expected/japanese/Mplus1p-Regular.drop-hints.25771.ttf b/test/subset/data/expected/japanese/Mplus1p-Regular.drop-hints.25771.ttf
index 4670bf0..5bdc97b 100644
--- a/test/subset/data/expected/japanese/Mplus1p-Regular.drop-hints.25771.ttf
+++ b/test/subset/data/expected/japanese/Mplus1p-Regular.drop-hints.25771.ttf
Binary files differ
diff --git a/test/subset/data/fonts/NanumMyeongjo-Regular-subset.ttf b/test/subset/data/fonts/NanumMyeongjo-Regular-subset.ttf
new file mode 100644
index 0000000..73b395e
--- /dev/null
+++ b/test/subset/data/fonts/NanumMyeongjo-Regular-subset.ttf
Binary files differ
diff --git a/test/subset/data/tests/basics.tests b/test/subset/data/tests/basics.tests
index 738c2b3..6dd819b 100644
--- a/test/subset/data/tests/basics.tests
+++ b/test/subset/data/tests/basics.tests
@@ -1,6 +1,7 @@
FONTS:
Roboto-Regular.abc.ttf
Comfortaa-Regular-new.ttf
+NanumMyeongjo-Regular-subset.ttf
PROFILES:
default.txt