Special-case 'smcp' when checking for exposed AAT features.
This may be implemented by selectors under either LETTER_CASE or LOWER_CASE feature types in AAT, so we need to check for the presence of either one. Fixes #2307.
This commit is contained in:
parent
120d86fa18
commit
1faf0caae1
|
@ -53,7 +53,17 @@ void hb_aat_map_builder_t::add_feature (hb_tag_t tag, unsigned value)
|
||||||
|
|
||||||
const hb_aat_feature_mapping_t *mapping = hb_aat_layout_find_feature_mapping (tag);
|
const hb_aat_feature_mapping_t *mapping = hb_aat_layout_find_feature_mapping (tag);
|
||||||
if (!mapping) return;
|
if (!mapping) return;
|
||||||
if (!face->table.feat->exposes_feature (mapping->aatFeatureType)) return;
|
if (!face->table.feat->exposes_feature (mapping->aatFeatureType))
|
||||||
|
{
|
||||||
|
// Special case: Chain::compile_flags will fall back to the deprecated version of
|
||||||
|
// small-caps if necessary, so we need to check for that possibility.
|
||||||
|
if (mapping->aatFeatureType == HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE &&
|
||||||
|
mapping->selectorToEnable == HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS)
|
||||||
|
{
|
||||||
|
if (!face->table.feat->exposes_feature (HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE)) return;
|
||||||
|
}
|
||||||
|
else return;
|
||||||
|
}
|
||||||
|
|
||||||
feature_info_t *info = features.push();
|
feature_info_t *info = features.push();
|
||||||
info->type = mapping->aatFeatureType;
|
info->type = mapping->aatFeatureType;
|
||||||
|
|
Loading…
Reference in New Issue