如何获取 UIWebView 对应的 iOS8 系统字体?
How to get the UIWebView's equivalent of the iOS 8 system font?
我正在尝试在 iOS 上的 UIWebView 中使用 iOS 系统当前使用的完全相同的字体。
这意味着我想使用与我从中获得的完全相同的字体:
UIFontDescriptor *fd;
fd = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
UIFont *font = [UIFont fontWithDescriptor:fd size:0];
SO (iPhone Development - Setting UIWebView font, Using custom font in a UIWebView, How to change UIWebView default font, How 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 名称。
您是否尝试过使用 Helvetica 或 San Francisco 附加字体文件?
我刚刚 运行 进入 this blog article 可能会提供解决方案,但我还没有验证它:
If you're trying to reference the system font in web views just prepend -apple-system
to your font-family list and it'll use SF in iOS 9 and Helvetica in older versions.
也就是说上面代码的字体行需要改成:
fontStyle = [NSString stringWithFormat:@"font-family:-apple-system,Helvetica Neue;font-size:%d", (int)font.pointSize];
那应该注意从 iOS 7 开始选择系统字体。
这篇文章怎么样:来自 Craig Hockenberry 的 http://furbo.org/2015/07/09/i-left-my-system-fonts-in-san-francisco/?
我正在尝试在 iOS 上的 UIWebView 中使用 iOS 系统当前使用的完全相同的字体。
这意味着我想使用与我从中获得的完全相同的字体:
UIFontDescriptor *fd;
fd = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
UIFont *font = [UIFont fontWithDescriptor:fd size:0];
SO (iPhone Development - Setting UIWebView font, Using custom font in a UIWebView, How to change UIWebView default font, How 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 名称。
您是否尝试过使用 Helvetica 或 San Francisco 附加字体文件?
我刚刚 运行 进入 this blog article 可能会提供解决方案,但我还没有验证它:
If you're trying to reference the system font in web views just prepend
-apple-system
to your font-family list and it'll use SF in iOS 9 and Helvetica in older versions.
也就是说上面代码的字体行需要改成:
fontStyle = [NSString stringWithFormat:@"font-family:-apple-system,Helvetica Neue;font-size:%d", (int)font.pointSize];
那应该注意从 iOS 7 开始选择系统字体。
这篇文章怎么样:来自 Craig Hockenberry 的 http://furbo.org/2015/07/09/i-left-my-system-fonts-in-san-francisco/?