问题描述
我有一些这样的UIFont
:
let regularFont = UIFont.systemFont(ofSize: 18,weight: .regular)
let mediumFont = UIFont.systemFont(ofSize: 18,weight: .medium)
我在我的 UIKit 组件中使用它们,例如 UILabel
。
现在我想使用相同的字体在 WKWebView 中渲染一些文本。
我在代码中生成了一些 html 模板,但我不知道如何设置 css 字体样式以匹配我给定的 UIFonts。
经过一些猜测,我想出了以下哪种适用于我给定的示例:
<html>
<head>
<style>
body {
font-family: '.ApplesystemUIFont';
font-size: 18.0;
font-weight: normal;
}
b {
font-family: '.ApplesystemUIFont';
font-size: 18.0;
font-weight: bolder;
}
</style>
</head>
<body>
<p>
Regular font <b>Medium font</b> Regular font
</p>
</body>
</html>
它可以正常工作,但显然这不成比例(其他权重呢?)。
此外,我已经可以看到我的设计师来找我,声称字体粗细减少了 0.1 左右。
这是我目前的努力。它适用于有限的属性子集(粗体、斜体),但不处理字体粗细。此外,我还没有测试自定义字体,但我猜它不会像那样工作。
extension UIFont {
func cssstyleString(color: UIColor) -> String {
let colorString = "rgb( \(CIColor(color: color).red * 255),\(CIColor(color: color).green * 255),\(CIColor(color: color).blue * 255) )"
// not sure this is right
let fontFamily = self.fontName == self.familyName
let fontSize = self.pointSize
// trait is not quite right for translation into weight. suggestions?
let fontWeight = self.fontDescriptor.symbolicTraits.contains(.traitBold) ? "bold" : "normal"
// works for italic only.
let fontStyle = self.fontDescriptor.symbolicTraits.contains(.traitItalic) ? "italic" : "normal"
return "font-family: '\(fontFamily)'; font-size: \(fontSize); font-weight: \(fontWeight); font-style: \(fontStyle); color: \(colorString); "
}
}
所以我的问题是:
从给定的 UIFont 创建 css 样式的最佳方法是什么,尤其是在字体粗细方面?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)