gpt4 book ai didi

ios - 在 iOS 上以小型大写字母排版字体

转载 作者:技术小花猫 更新时间:2023-10-29 10:56:52 25 4
gpt4 key购买 nike

在 iOS 上,我通过将自定义字体的文件名(一个 .otf 文件)添加到 info.plist 文件然后使用这行代码在我的项目中加载自定义字体:

UIFont myFont * = [UIFont fontWithName:titleFontName size:titleFontSize];

我获得了可以在 UILabel 和 UITextView 中使用的字体。

我怎样才能让这个字体只显示在小型大写字母中?如果我在 Photoshop 中使用它,可以打开小型大写字母开关,将所有单词排版为小型大写字母(因此,我得出结论,字体没有任何缺失)。我怎样才能在 iOS 上获得类似的效果?

由于其他原因,将我的字符串转换为大写不是一个可行的选择。

更多信息:该字体在其家族中只有一个成员,正如我使用以下代码所理解的那样,该家族中没有独立的小型大写字母成员。

 for (NSString * familyName in [UIFont familyNames]) {

NSLog(@"---------------- %@ ---------------", familyName);
for (NSString * fontName in[UIFont fontNamesForFamilyName:familyName] )
NSLog(@"- %@", fontName);
}

最佳答案

通过开放式功能在字体中启用小型大写字母。在 iOS 7 中,我们可以使用字体描述符来访问开放类型功能并启用小型大写字母。

This question介绍了如何使用核心文本打开小型大写字母,但同样可以轻松地为 UIFonts 和 UIKit View 完成。您需要创建一个 UIFontDescriptor 并将 UIFontDescriptorFeatureSettingsAttribute 设置为您要启用的功能的字典数组。

每个字体特征字典都包含一个用于指定特征类型的键和值,以及一个用于特征选择器的键和值。根据您使用的字体,您需要找到与小型大写字母对应的正确值。您可以在注释部分记录的数组中找到它们。

UIFont 类别

此类别将生成启用小型大写字母的 UIFont 对象。您需要添加正确的字体名称。

#import "UIFont+SmallCaps.h"
#import <CoreText/CoreText.h>

@implementation UIFont (SmallCaps)

+ (UIFont *) applicationSmallCapsFontWithSize:(CGFloat) size {
/*
// Use this to log all of the properties for a particular font
UIFont *font = [UIFont fontWithName: fontName size: fontSize];
CFArrayRef fontProperties = CTFontCopyFeatures ( ( __bridge CTFontRef ) font ) ;
NSLog(@"properties = %@", fontProperties);
*/

NSArray *fontFeatureSettings = @[ @{ UIFontFeatureTypeIdentifierKey: @(kLowerCaseType),
UIFontFeatureSelectorIdentifierKey : @(kLowerCaseSmallCapsSelector) } ];

NSDictionary *fontAttributes = @{ UIFontDescriptorFeatureSettingsAttribute: fontFeatureSettings ,
UIFontDescriptorNameAttribute: FONT_NAME } ;

UIFontDescriptor *fontDescriptor = [ [UIFontDescriptor alloc] initWithFontAttributes: fontAttributes ];

return [UIFont fontWithDescriptor:fontDescriptor size:size];
}

@end

关于ios - 在 iOS 上以小型大写字母排版字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com