我遇到自定义UIFonts的问题。我加载了6个(常规/粗体/ regularItalic / boldItalic中的字体A,浓缩/浓缩变体中的字体B)。
但是,这是渲染时的内容:
前两行是正常的,但最后一行表现出基线问题。
我已经尝试更改FontLab中字体的UPM,上升,下降,x高度,以便它匹配第一个字体的值(正确呈现),但无济于事。我已经尝试将字体格式从OTF转换为TTF,没有运气。无论我尝试什么,它总是以这种方式呈现。
有没有人有这方面的经验?
答案 0 :(得分:36)
Here甚至here您可以找到适合您的解决方案。 这完全与基线有关。
注意的 在El Capitan上安装Apple Fonts Utility时出现问题。有关解决方法,请参阅https://apple.stackexchange.com/questions/211138/apple-font-tools-cannot-install-in-macbook-pro-el-capitan。
要在字体中编辑这些内容,您需要下载Apple字体 工具套件。一旦你安装了这个,你需要打开终端和 导航到包含您的字体的目录。之后进入 以下命令:
ftxdumperfuser -t hhea -A d font.ttf这将创建一个文件 调用font.hhea.xml,将这个新文件打开到文本编辑器中进行调整 上升和下降的值。通常,如果你的字体也坐 低,你想减少上升和增加下降。后 编辑和保存在终端输入以下命令 重建你的字体文件:
- 醇>
ftxdumperfuser -t hhea -A f font.ttf现在可以使用font.ttf 您的申请中的文件。如果字体仍然不对,只需重复 上述程序直到你满意为止。
或者您可以按如下方式轻松更改NSBaselineAttributeName:
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"a string"
attributes:@{ NSBaselineOffsetAttributeName : @-13 }];
答案 1 :(得分:2)
您好我也遇到过这样的问题,因为我已经为 UIButton 设置了 标题内容边缘 。
因此,如果您将此字体用于 UIButton ,那么您肯定可以使用此字体。
希望这会帮助你。
答案 2 :(得分:2)
我找到的另一个有趣的解决方案来自以下帖子: http://www.andyyardley.com/2012/04/24/custom-ios-fonts-and-how-to-fix-the-vertical-position-problem/
所以你应该检查你的字体是否属于这种情况,正如他在其中一条评论中所说:
我的解决方案实际上修复了自定义字体以与iOS的渲染引擎一起使用,允许您将其用作标准字体的直接替代品而无需任何修改。
他是怎么做到的?
基本上他建议使用外部Apple工具编辑字体的指标(请参阅https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW66上的字体指标参考)
要以字体编辑这些内容,您需要下载Apple字体工具套件。安装完成后,需要打开终端并导航到包含字体的目录。之后输入以下命令:
ftxdumperfuser -t hhea -A d font.ttf
这将创建一个名为font.hhea.xml的文件,将此新文件打开到文本编辑器中并调整ascender和descender的值。通常,如果你的字体太低,你想减少上升并增加下降。编辑并保存后,在终端中输入以下命令以重建您的字体文件:
ftxdumperfuser -t hhea -A f font.ttf
您现在可以在应用程序中使用font.ttf文件。如果字体仍然不正确,只需重复上述步骤,直到您满意为止。
答案 3 :(得分:0)
您需要在某些矢量软件(如Adobe Illustrator或CorelDraw)中并排检查这些字体。如果您发现字体以相同的基本偏移方式呈现到这些软件中,那么它与字体本身有关。即,可以使用在字体文件内偏移的这种像素来创建字体。因此,无需对任何UIButton或UITextField等的.xib参数进行任何此类更改。
如果可能,请在此处分享您的字体文件。
答案 4 :(得分:0)
或许可以查看UITextView / UITextLabel的属性 'thLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;'
这定义了垂直对齐。 几天前在类似案例中对我有帮助
答案 5 :(得分:0)
顺便说一下Apple Font Tool Suite不是一个可以帮助你的程序。因此,如果您不想安装macO的虚拟副本,可以使用FontForge for Windows来使用ascender和descender:element - >字体信息,然后是OS / 2选项卡,然后是指标。在最后生成字体时,不要忘记检查“Apple”复选框。祝你好运!