自定义UIFont基线已移位

时间:2012-01-26 08:10:11

标签: ios true-type-fonts uifont opentype

我遇到自定义UIFonts的问题。我加载了6个(常规/粗体/ regularItalic / boldItalic中的字体A,浓缩/浓缩变体中的字体B)。

但是,这是渲染时的内容: enter image description here

前两行是正常的,但最后一行表现出基线问题。

我已经尝试更改FontLab中字体的UPM,上升,下降,x高度,以便它匹配第一个字体的值(正确呈现),但无济于事。我已经尝试将字体格式从OTF转换为TTF,没有运气。无论我尝试什么,它总是以这种方式呈现。

有没有人有这方面的经验?

6 个答案:

答案 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字体   工具套件。一旦你安装了这个,你需要打开终端和   导航到包含您的字体的目录。之后进入   以下命令:

     
      
  1. ftxdumperfuser -t hhea -A d font.ttf这将创建一个文件   调用font.hhea.xml,将这个新文件打开到文本编辑器中进行调整   上升和下降的值。通常,如果你的字体也坐   低,你想减少上升和增加下降。后   编辑和保存在终端输入以下命令   重建你的字体文件:

  2.   
  3. ftxdumperfuser -t hhea -A f font.ttf现在可以使用font.ttf   您的申请中的文件。如果字体仍然不对,只需重复   上述程序直到你满意为止。

  4.   

或者您可以按如下方式轻松更改NSBaselineAttributeName:

NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"a string"
                              attributes:@{ NSBaselineOffsetAttributeName : @-13 }];

答案 1 :(得分:2)

您好我也遇到过这样的问题,因为我已经为 UIButton 设置了 标题内容边缘

因此,如果您将此字体用于 UIButton ,那么您肯定可以使用此字体。

enter image description here

希望这会帮助你。

答案 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”复选框。祝你好运!