首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iPad应用程序中包含同一家族的多个字体

在iPad应用程序中包含同一家族的多个字体
EN

Stack Overflow用户
提问于 2011-03-08 10:47:05
回答 2查看 2.3K关注 0票数 8

当我必须包含同一字体家族中的多个字体时,我在iPad应用程序中使用自定义字体有问题。

基本上,有些字体会像其他字体一样呈现,特别是粗体字体。在我的例子中,我有以下四种字体:

Tungsten-Medium (ok)

Tungsten-Black (ok)

钨-Bold

Tungsten-Semibold

系统发现了所有这些,实际上我对介质黑色没有问题,但是当我选择粗体半粗体时,结果是黑色<代码>E 217字体!

这个问题影响到本地组件,如UILabel和UITextField,但也影响到我在应用程序中使用的带有自定义csshtml文档。

我在项目资源和Info.plist文件中正确地设置了所有内容,甚至尝试以ttf格式转换字体,但是结果没有改变。

我使用的是iOS SDK4.2forandiPad应用程序,重要的是要知道,在这个os之前(在3.2中),我的字体被正确呈现了!

到目前为止,我找到的唯一可行的解决方案是编辑字体和,为每个字体设置一个不同的字体系列,但这意味着代码和html内部要做大量工作,因此我将避免这种情况。

我该试试什么?

EN

回答 2

Stack Overflow用户

发布于 2011-03-10 16:38:06

我找到了一个解决方案--阅读其他论坛。老实说,我认为这与其说是一个真正的解决方案,不如说是一个解决办法。

我使用字体管理器工具(Transtype pro)来编辑字体元数据。我为每种字体设置了一个特定的"OT字体系列“,该字段的值与"PS字体名称”相同。这避免了在不触及代码的情况下混淆同一家族字体的框架。

很丑,但很管用。

票数 3
EN

Stack Overflow用户

发布于 2011-08-11 09:25:58

我创建了一个方法,用于读取特定家族的fontsArray中的字体描述,并返回适当的字体。

代码语言:javascript
复制
- (UIFont*) getFontWithFamilyName:(NSString*)familyName bold:(Boolean)bold italic:(Boolean)italic size:(uint)size {
    NSArray *fonts = [UIFont fontNamesForFamilyName:familyName];
    for (NSString *fname in fonts) {
       UIFont *font = [UIFont fontWithName:fname size:size];
       Boolean isBold = [[font description] rangeOfString:@"bold"].location != NSNotFound;
       Boolean isItalic = [[font description] rangeOfString:@"italic"].location != NSNotFound;
       if (isBold == bold && isItalic == italic) {
          return font;
       }
    }
    //-- font was not found, provide system font bold or normal
    if (bold) {
       return [UIFont boldSystemFontOfSize:size];
    } else {
       return [UIFont systemFontOfSize:size];
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5231391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档