【问题标题】:How to get the UIWebView's equivalent of the iOS 8 system font?如何获得相当于 iOS 8 系统字体的 UIWebView?
【发布时间】:2015-11-14 14:21:09
【问题描述】:

我正在尝试在 iOS 上的 UIWebView 中使用与 iOS 系统当前使用的完全相同的字体。

这意味着我想使用与我得到的完全相同的字体:

UIFontDescriptor *fd;
fd = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
UIFont *font = [UIFont fontWithDescriptor:fd size:0];

有很多关于 SO(iPhone Development - Setting UIWebView fontUsing custom font in a UIWebViewHow to change UIWebView default fontHow to set custom font in UIWebView?)的答案解释了如何通过这样做将 UIFont 的 familyName 或 fontName 嵌入到 html 的样式属性中:

NSString *fontStyle, *htmlString = @"test";
fontStyle = [NSString stringWithFormat:@"font-family:%@;font-size:%d", font.familyName, (int)font.pointSize];
htmlString = NSString stringWithFormat:@"<span style=\"%@\">%@</span>", fontStyle, htmlString];

但这似乎不再适用于 iOS 7 和 8,这些系统字体名称现在如下:

font.fontName: .HelveticaNeueInterface-Regular
font.familyName: .Helvetica Neue Interface

在带有“font-family”属性的 UIWebView 中使用这些名称时,文本会以默认字体(带有衬线,当然不是新的 iOS 系统字体)呈现。删除前导句点也无济于事。

那么,我现在如何将系统字体转换为 Web Kit 可以正确解释的名称?

请理解我正在寻找一个通用的解决方案,而不是简单地寻找我可以手动插入到 html 样式属性中的 iOS 7/8 名称。

【问题讨论】:

    标签: ios ios7 fonts ios8 uiwebview


    【解决方案1】:

    我刚刚遇到了this blog article,虽然我还没有验证它可能会提供解决方案:

    如果您尝试在 Web 视图中引用系统字体,只需将 -apple-system 添加到您的字体系列列表中,它将在 iOS 9 中使用 SF,在旧版本中使用 Helvetica。

    也就是说上面代码的字体行需要改成:

    fontStyle = [NSString stringWithFormat:@"font-family:-apple-system,Helvetica Neue;font-size:%d", (int)font.pointSize];
    

    这应该注意从 iOS 7 开始选择系统字体。

    【讨论】:

      【解决方案2】:

      这篇文章怎么样:来自 Craig Hockenberry 的 http://furbo.org/2015/07/09/i-left-my-system-fonts-in-san-francisco/

      【讨论】:

        【解决方案3】:

        您是否尝试过在 Helvetica 或 San Francisco 中附加字体文件?

        【讨论】:

        • 我看不出这对我的问题有什么帮助。
        猜你喜欢
        • 2015-12-17
        • 1970-01-01
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 2015-12-21
        相关资源
        最近更新 更多