如何创建具有特殊字体属性的灯光系统字体

Posted

技术标签:

【中文标题】如何创建具有特殊字体属性的灯光系统字体【英文标题】:How to create light system font with special font attributes 【发布时间】:2016-09-13 02:59:40 【问题描述】:

我需要创建一个 UIFont,它是:

    旧金山 重量轻 使用不区分大小写的字体属性(显示与数字垂直对齐的“/”字形)

我正在使用此代码来解决它:

UIFontDescriptor *fontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
NSArray *additionalFontSettings = @[@UIFontFeatureTypeIdentifierKey: @(kCaseSensitiveLayoutType), UIFontFeatureSelectorIdentifierKey: @(kCaseSensitiveLayoutOnSelector)];
fontDescriptor = [fontDescriptor fontDescriptorByAddingAttributes:@UIFontDescriptorFeatureSettingsAttribute: additionalFontSettings, UIFontDescriptorTraitsAttribute: @UIFontWeightTrait : @(UIFontWeightLight)];
return [UIFont fontWithDescriptor:fontDescriptor size:50];

我在启用了正确功能的情况下获得了正确的字体,但我无法获得要遵守的字体粗细。我需要系统字体的轻量级。我如何做到这一点?

【问题讨论】:

不是以preferredFontDescriptorWithTextStyle开头,而是以systemFontOfSize:weight:开头呢? @matt 该方法仅适用于UIFont,不适用于UIFontDescriptor 我知道。这就是我的观点。 AFAIK,如果不使用UIFontDescriptor,就无法添加我所需的字体功能? 我没有说不要使用字体描述符。我用字体说start 【参考方案1】:

事实证明,马特的暗示是对的。我忘记了您可以从现有的UIFont 派生UIFontDescriptor

因此,像这样创建描述符是可行的:

UIFont *lightFont = [UIFont systemFontOfSize:50 weight:UIFontWeightLight];
UIFontDescriptor *fontDescriptor = lightFont.fontDescriptor;

【讨论】:

以上是关于如何创建具有特殊字体属性的灯光系统字体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中使用自定义字体?

在基于 Debian 的系统上,如何找到字体具有字形的 Unicode 代码点?

web开发——在网页中引用字体包(.ttf),即嵌入特殊字体

font的基本知识

如何在具有保留字符宽度的 HTML 中使用等宽字体显示特殊的 unicode 字符

windows 文本字体api