I use the following snippet to get the font features:
let font = UIFont.systemFont(ofSize: 16)
let features: NSArray = CTFontCopyFeatures(font)!
print("properties = \(features)")
So If I see this:
{
CTFeatureTypeExclusive = 1;
CTFeatureTypeIdentifier = 22;
CTFeatureTypeName = "Text Spacing";
CTFeatureTypeSelectors = (
{
CTFeatureSelectorDefault = 1;
CTFeatureSelectorIdentifier = 7;
CTFeatureSelectorName = "No Change";
},
{
CTFeatureSelectorIdentifier = 8;
CTFeatureSelectorName = "No Kerning";
}
);
I can translate that into Swift as:
let fontDescriptorFeatureSettings = [
[ UIFontDescriptor.FeatureKey.featureIdentifier : 22,
UIFontDescriptor.FeatureKey.typeIdentifier : 8], ]
This successfully disables kerning for me.
In the same snippet, I see:
{
CTFeatureOpenTypeTag = cv05;
CTFeatureSampleText = I;
CTFeatureTooltipText = "\U00a9 2015-2022 Apple Inc. All rights reserved.";
CTFeatureTypeExclusive = 1;
CTFeatureTypeName = "Seriffed Capital I";
CTFeatureTypeSelectors = (
{
CTFeatureOpenTypeValue = 0;
CTFeatureSelectorDefault = 1;
CTFeatureSelectorName = Off;
},
{
CTFeatureOpenTypeValue = 1;
CTFeatureSelectorName = On;
}
);
How do I translate that into Swift to get a Seriffed 'I'?
The issue for me is the absence of:
CTFeatureTypeIdentifier