[subset] support option "--notdef-outline"

pull/3034/head
Qunxin Liu 4 years ago committed by Behdad Esfahbod
parent 10ad185932
commit d07f789ae3
  1. 5
      src/hb-ot-glyf-table.hh
  2. 4
      src/hb-ot-var-gvar-table.hh
  3. 15
      src/hb-subset-input.cc
  4. 14
      src/hb-subset-input.hh
  5. 1
      src/hb-subset-plan.cc
  6. 1
      src/hb-subset-plan.hh
  7. 7
      src/hb-subset.h
  8. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf
  9. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,63.ttf
  10. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.61.ttf
  11. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.62.ttf
  12. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.63.ttf
  13. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.default.retain-all-codepoint.ttf
  14. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf
  15. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf
  16. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf
  17. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.62.ttf
  18. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.63.ttf
  19. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.retain-all-codepoint.ttf
  20. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,62,63.ttf
  21. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,63.ttf
  22. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61.ttf
  23. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.62.ttf
  24. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.63.ttf
  25. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.retain-all-codepoint.ttf
  26. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,62,63.ttf
  27. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,63.ttf
  28. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61.ttf
  29. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.62.ttf
  30. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.63.ttf
  31. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.gids.retain-all-codepoint.ttf
  32. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,62,63.ttf
  33. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,63.ttf
  34. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61.ttf
  35. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.62.ttf
  36. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.63.ttf
  37. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.retain-all-codepoint.ttf
  38. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,62,63.ttf
  39. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,63.ttf
  40. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61.ttf
  41. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.62.ttf
  42. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.63.ttf
  43. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.retain-all-codepoint.ttf
  44. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf
  45. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf
  46. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf
  47. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.62.ttf
  48. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.63.ttf
  49. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.retain-all-codepoint.ttf
  50. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,62,63.ttf
  51. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,63.ttf
  52. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61.ttf
  53. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.62.ttf
  54. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.63.ttf
  55. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.retain-all-codepoint.ttf
  56. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,62,63.ttf
  57. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,63.ttf
  58. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61.ttf
  59. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.62.ttf
  60. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.63.ttf
  61. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.retain-all-codepoint.ttf
  62. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.61,62,63.ttf
  63. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.61,63.ttf
  64. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.61.ttf
  65. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.62.ttf
  66. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.63.ttf
  67. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.notdef-outline.retain-all-codepoint.ttf
  68. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,62,63.ttf
  69. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf
  70. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61.ttf
  71. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.62.ttf
  72. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.63.ttf
  73. BIN
      test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.retain-all-codepoint.ttf
  74. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.61,62,63.ttf
  75. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.61,63.ttf
  76. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.61.ttf
  77. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.62.ttf
  78. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.63.ttf
  79. BIN
      test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.notdef-outline.retain-all-codepoint.ttf
  80. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.61,62,63.ttf
  81. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.61,63.ttf
  82. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.61.ttf
  83. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.62.ttf
  84. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.63.ttf
  85. BIN
      test/subset/data/expected/basics/Roboto-Regular.abc.notdef-outline.retain-all-codepoint.ttf
  86. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.default.61,62.ttf
  87. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.default.61,FEFA.ttf
  88. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf
  89. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf
  90. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.default.FEFA.ttf
  91. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints-retain-gids.61,62.ttf
  92. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints-retain-gids.61,FEFA.ttf
  93. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints-retain-gids.FEE6,FECF.ttf
  94. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf
  95. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints-retain-gids.FEFA.ttf
  96. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints.61,62.ttf
  97. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf
  98. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf
  99. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf
  100. BIN
      test/subset/data/expected/cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf
  101. Some files were not shown because too many files have changed in this diff Show More

@ -209,7 +209,10 @@ struct glyf
if (!plan->old_gid_for_new_gid (new_gid, &subset_glyph.old_gid))
return subset_glyph;
subset_glyph.source_glyph = glyf.glyph_for_gid (subset_glyph.old_gid, true);
if (new_gid == 0 && !plan->notdef_outline)
subset_glyph.source_glyph = Glyph ();
else
subset_glyph.source_glyph = glyf.glyph_for_gid (subset_glyph.old_gid, true);
if (plan->drop_hints) subset_glyph.drop_hints_bytes ();
else subset_glyph.dest_start = subset_glyph.source_glyph.get_bytes ();

@ -419,7 +419,7 @@ struct gvar
out->glyphCount = num_glyphs;
unsigned int subset_data_size = 0;
for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++)
for (hb_codepoint_t gid = c->plan->notdef_outline ? 0 : 1; gid < num_glyphs; gid++)
{
hb_codepoint_t old_gid;
if (!c->plan->old_gid_for_new_gid (gid, &old_gid)) continue;
@ -449,7 +449,7 @@ struct gvar
out->dataZ = subset_data - (char *) out;
unsigned int glyph_offset = 0;
for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++)
for (hb_codepoint_t gid = c->plan->notdef_outline ? 0 : 1; gid < num_glyphs; gid++)
{
hb_codepoint_t old_gid;
hb_bytes_t var_data_bytes = c->plan->old_gid_for_new_gid (gid, &old_gid)

@ -55,6 +55,7 @@ hb_subset_input_create_or_fail ()
input->retain_gids = false;
input->name_legacy = false;
input->overlaps_flag = false;
input->notdef_outline = false;
input->retain_all_layout_features = false;
hb_tag_t default_drop_tables[] = {
@ -349,3 +350,17 @@ hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input)
{
return subset_input->overlaps_flag;
}
HB_EXTERN void
hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
hb_bool_t notdef_outline)
{
subset_input->notdef_outline = notdef_outline;
}
HB_EXTERN hb_bool_t
hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input)
{
return subset_input->notdef_outline;
}

@ -45,12 +45,14 @@ struct hb_subset_input_t
hb_set_t *drop_tables;
hb_set_t *layout_features;
bool drop_hints;
bool desubroutinize;
bool retain_gids;
bool name_legacy;
bool overlaps_flag;
bool retain_all_layout_features;
//use hb_bool_t to be consistent with G option parser
hb_bool_t drop_hints;
hb_bool_t desubroutinize;
hb_bool_t retain_gids;
hb_bool_t name_legacy;
hb_bool_t overlaps_flag;
hb_bool_t notdef_outline;
hb_bool_t retain_all_layout_features;
/* TODO
*
* features

@ -401,6 +401,7 @@ hb_subset_plan_create (hb_face_t *face,
plan->retain_gids = input->retain_gids;
plan->name_legacy = input->name_legacy;
plan->overlaps_flag = input->overlaps_flag;
plan->notdef_outline = input->notdef_outline;
plan->retain_all_layout_features = input->retain_all_layout_features;
plan->unicodes = hb_set_create ();
plan->name_ids = hb_set_reference (input->name_ids);

@ -45,6 +45,7 @@ struct hb_subset_plan_t
bool retain_gids : 1;
bool name_legacy : 1;
bool overlaps_flag : 1;
bool notdef_outline : 1;
bool retain_all_layout_features : 1;
// For each cp that we'd like to retain maps to the corresponding gid.

@ -103,6 +103,13 @@ hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input,
HB_EXTERN hb_bool_t
hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input);
HB_EXTERN void
hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
hb_bool_t notdef_outline);
HB_EXTERN hb_bool_t
hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input);
/* hb_subset () */
HB_EXTERN hb_face_t *
hb_subset (hb_face_t *source, hb_subset_input_t *input);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save