[subset] minor on switch statements

This commit is contained in:
Ebrahim Byagowi 2020-02-05 15:00:25 +03:30
parent b1f63109c6
commit a8593339e2
1 changed files with 55 additions and 111 deletions

View File

@ -154,135 +154,79 @@ _should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag)
if (plan->drop_tables->has (tag))
return true;
switch (tag) {
case HB_TAG ('c', 'v', 'a', 'r'): /* hint table, fallthrough */
case HB_TAG ('c', 'v', 't', ' '): /* hint table, fallthrough */
case HB_TAG ('f', 'p', 'g', 'm'): /* hint table, fallthrough */
case HB_TAG ('p', 'r', 'e', 'p'): /* hint table, fallthrough */
case HB_TAG ('h', 'd', 'm', 'x'): /* hint table, fallthrough */
case HB_TAG ('V', 'D', 'M', 'X'): /* hint table, fallthrough */
return plan->drop_hints;
switch (tag)
{
case HB_TAG ('c','v','a','r'): /* hint table, fallthrough */
case HB_TAG ('c','v','t',' '): /* hint table, fallthrough */
case HB_TAG ('f','p','g','m'): /* hint table, fallthrough */
case HB_TAG ('p','r','e','p'): /* hint table, fallthrough */
case HB_TAG ('h','d','m','x'): /* hint table, fallthrough */
case HB_TAG ('V','D','M','X'): /* hint table, fallthrough */
return plan->drop_hints;
#ifdef HB_NO_SUBSET_LAYOUT
// Drop Layout Tables if requested.
case HB_OT_TAG_GDEF:
case HB_OT_TAG_GPOS:
case HB_OT_TAG_GSUB:
case HB_TAG ('m', 'o', 'r', 'x'):
case HB_TAG ('m', 'o', 'r', 't'):
case HB_TAG ('k', 'e', 'r', 'x'):
case HB_TAG ('k', 'e', 'r', 'n'):
return true;
case HB_OT_TAG_GDEF:
case HB_OT_TAG_GPOS:
case HB_OT_TAG_GSUB:
case HB_TAG ('m','o','r','x'):
case HB_TAG ('m','o','r','t'):
case HB_TAG ('k','e','r','x'):
case HB_TAG ('k','e','r','n'):
return true;
#endif
default:
return false;
default:
return false;
}
}
static bool
_subset_table (hb_subset_plan_t *plan,
hb_tag_t tag)
_subset_table (hb_subset_plan_t *plan, hb_tag_t tag)
{
DEBUG_MSG(SUBSET, nullptr, "begin subset %c%c%c%c", HB_UNTAG (tag));
bool result = true;
switch (tag) {
case HB_OT_TAG_glyf:
result = _subset<const OT::glyf> (plan);
break;
case HB_OT_TAG_hdmx:
result = _subset<const OT::hdmx> (plan);
break;
case HB_OT_TAG_name:
result = _subset<const OT::name> (plan);
break;
case HB_OT_TAG_head: {
if (_is_table_present (plan->source, HB_OT_TAG_glyf) && !_should_drop_table (plan, HB_OT_TAG_glyf))
{
DEBUG_MSG(SUBSET, nullptr, "skip head, handled by glyf");
return true;
}
result = _subset<const OT::head> (plan);
break;
}
case HB_OT_TAG_hhea:
DEBUG_MSG(SUBSET, nullptr, "skip hhea handled by hmtx");
return true;
case HB_OT_TAG_hmtx:
result = _subset<const OT::hmtx> (plan);
break;
case HB_OT_TAG_vhea:
DEBUG_MSG(SUBSET, nullptr, "skip vhea handled by vmtx");
return true;
case HB_OT_TAG_vmtx:
result = _subset<const OT::vmtx> (plan);
break;
case HB_OT_TAG_maxp:
result = _subset<const OT::maxp> (plan);
break;
case HB_OT_TAG_sbix:
result = _subset<const OT::sbix> (plan);
break;
case HB_OT_TAG_loca:
DEBUG_MSG(SUBSET, nullptr, "skip loca handled by glyf");
return true;
case HB_OT_TAG_cmap:
result = _subset<const OT::cmap> (plan);
break;
case HB_OT_TAG_OS2:
result = _subset<const OT::OS2> (plan);
break;
case HB_OT_TAG_post:
result = _subset<const OT::post> (plan);
break;
case HB_OT_TAG_COLR:
result = _subset<const OT::COLR> (plan);
break;
DEBUG_MSG (SUBSET, nullptr, "subset %c%c%c%c", HB_UNTAG (tag));
switch (tag)
{
case HB_OT_TAG_glyf: return _subset<const OT::glyf> (plan);
case HB_OT_TAG_hdmx: return _subset<const OT::hdmx> (plan);
case HB_OT_TAG_name: return _subset<const OT::name> (plan);
case HB_OT_TAG_head:
if (_is_table_present (plan->source, HB_OT_TAG_glyf) && !_should_drop_table (plan, HB_OT_TAG_glyf))
return true; /* skip head, handled by glyf */
return _subset<const OT::head> (plan);
case HB_OT_TAG_hhea: return true; /* skip hhea, handled by hmtx */
case HB_OT_TAG_hmtx: return _subset<const OT::hmtx> (plan);
case HB_OT_TAG_vhea: return true; /* skip vhea, handled by vmtx */
case HB_OT_TAG_vmtx: return _subset<const OT::vmtx> (plan);
case HB_OT_TAG_maxp: return _subset<const OT::maxp> (plan);
case HB_OT_TAG_sbix: return _subset<const OT::sbix> (plan);
case HB_OT_TAG_loca: return true; /* skip loca, handled by glyf */
case HB_OT_TAG_cmap: return _subset<const OT::cmap> (plan);
case HB_OT_TAG_OS2 : return _subset<const OT::OS2 > (plan);
case HB_OT_TAG_post: return _subset<const OT::post> (plan);
case HB_OT_TAG_COLR: return _subset<const OT::COLR> (plan);
#ifndef HB_NO_SUBSET_CFF
case HB_OT_TAG_cff1:
result = _subset<const OT::cff1> (plan);
break;
case HB_OT_TAG_cff2:
result = _subset<const OT::cff2> (plan);
break;
case HB_OT_TAG_VORG:
result = _subset<const OT::VORG> (plan);
break;
case HB_OT_TAG_cff1: return _subset<const OT::cff1> (plan);
case HB_OT_TAG_cff2: return _subset<const OT::cff2> (plan);
case HB_OT_TAG_VORG: return _subset<const OT::VORG> (plan);
#endif
#ifndef HB_NO_SUBSET_LAYOUT
case HB_OT_TAG_GDEF:
result = _subset<const OT::GDEF> (plan);
break;
case HB_OT_TAG_GSUB:
result = _subset<const OT::GSUB> (plan);
break;
case HB_OT_TAG_GPOS:
result = _subset<const OT::GPOS> (plan);
break;
case HB_OT_TAG_gvar:
result = _subset<const OT::gvar> (plan);
break;
case HB_OT_TAG_HVAR:
result = _subset<const OT::HVAR> (plan);
break;
case HB_OT_TAG_VVAR:
result = _subset<const OT::VVAR> (plan);
break;
case HB_OT_TAG_GDEF: return _subset<const OT::GDEF> (plan);
case HB_OT_TAG_GSUB: return _subset<const OT::GSUB> (plan);
case HB_OT_TAG_GPOS: return _subset<const OT::GPOS> (plan);
case HB_OT_TAG_gvar: return _subset<const OT::gvar> (plan);
case HB_OT_TAG_HVAR: return _subset<const OT::HVAR> (plan);
case HB_OT_TAG_VVAR: return _subset<const OT::VVAR> (plan);
#endif
default:
hb_blob_t *source_table = hb_face_reference_table (plan->source, tag);
if (likely (source_table))
result = plan->add_table (tag, source_table);
else
result = false;
hb_blob_destroy (source_table);
break;
default:
hb_blob_t *source_table = hb_face_reference_table (plan->source, tag);
bool result = plan->add_table (tag, source_table);
hb_blob_destroy (source_table);
return result;
}
DEBUG_MSG(SUBSET, nullptr, "subset %c%c%c%c %s", HB_UNTAG (tag), result ? "ok" : "FAILED");
return result;
}
/**