[subset] minor on switch statements
This commit is contained in:
parent
b1f63109c6
commit
a8593339e2
166
src/hb-subset.cc
166
src/hb-subset.cc
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue