[subset] minor on switch statements
This commit is contained in:
parent
b1f63109c6
commit
a8593339e2
124
src/hb-subset.cc
124
src/hb-subset.cc
|
@ -154,7 +154,8 @@ _should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag)
|
|||
if (plan->drop_tables->has (tag))
|
||||
return true;
|
||||
|
||||
switch (tag) {
|
||||
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 */
|
||||
|
@ -181,109 +182,52 @@ _should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag)
|
|||
}
|
||||
|
||||
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: {
|
||||
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))
|
||||
{
|
||||
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;
|
||||
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;
|
||||
bool result = plan->add_table (tag, source_table);
|
||||
hb_blob_destroy (source_table);
|
||||
break;
|
||||
}
|
||||
DEBUG_MSG(SUBSET, nullptr, "subset %c%c%c%c %s", HB_UNTAG (tag), result ? "ok" : "FAILED");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_subset:
|
||||
|
|
Loading…
Reference in New Issue