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