自定义UIFont基线移位

我遇到了自定义UIFonts的问题。 我加载了其中的6个(在普通/ bold / regularItalic / boldItalic中的字体A,在condensed / condensedSlanted变体中的字体B)。

但是,这是呈现时的结果: 在这里输入图像说明

前两行是好的,但是最后一行显示出一个基线问题。

我试过在FontLab中改变字体的UPM,ascender,descender,x-height,使它匹配第一个字体的值(正确渲染),但是无济于事。 我已经尝试将字体格式从OTF转换为TTF,没有运气。 无论我尝试什么,它总是呈现这种方式。

有人对此有经验吗?

6 Solutions collect form web for “自定义UIFont基线移位”

在这里甚至在这里,你可以find你的解决scheme。 这是关于基准。

注意在El Capitan上安装Apple Fonts Utility时出现问题。 有关解决方法,请参阅https://apple.stackexchange.com/questions/211138/apple-font-tools-cannot-install-in-macbook-pro-el-capitan

要在字体中编辑这些字体,您需要下载Apple字体工具套件。 一旦你安装了这个,你需要打开terminal并导航到包含你的字体的目录。 之后input以下命令:

  1. ftxdumperfuser -t hhea -A d font.ttf这将创build一个名为font.hhea.xml的文件,将这个新文件打开到文本编辑器中,并调整ascender和descender的值。 一般来说,如果你的字体太低,你想减less上升和增加下降。 编辑并保存后,在terminal中input以下命令重build您的Font文件:

  2. ftxdumperfuser -t hhea -A f font.ttf现在可以在应用程序中使用font.ttf文件。 如果字体仍然不正确,只需重复上述步骤,直到您满意为止。

或者您可以轻松地更改NSBaselineAttributeName,如下所示:

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

嗨,我也面临这样的问题,我相应地为UIButton设置标题内容边缘

所以,如果你使用这个字体的UIButton,那么当然你可以使用这个。

在这里输入图像说明

希望这会帮助你。

我发现另一个有趣的解决scheme来自以下post: http : //www.andyyardley.com/2012/04/24/custom-ios-fonts-and-how-to-fix-the-vertical-position-problem/

所以你应该检查你的字体是否属于这种情况,正如他在其中一个评论中所说:

我的解决scheme实际上修复了自定义字体与iOS的渲染引擎一起工作,使您可以使用它作为标准字体的直接替代,而无需任何修改。

他怎么做到的?

基本上他build议使用外部Apple工具编辑字体的指标(请参阅https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//上的字体指标参考apple_ref / doc / uid / TP40009542-CH4-SW66 )

要在字体中编辑这些字体,您需要下载Apple字体工具套件。 一旦你安装了这个,你需要打开terminal并导航到包含你的字体的目录。 之后input以下命令:

 ftxdumperfuser -t hhea -A d font.ttf 

这将创build一个名为font.hhea.xml的文件,将这个新文件打开到文本编辑器中,并调整ascender和descender的值。 一般来说,如果你的字体太低,你想减less上升和增加下降。 编辑并保存后,在terminal中input以下命令重build您的Font文件:

 ftxdumperfuser -t hhea -A f font.ttf 

您现在可以在您的应用程序中使用font.ttf文件。 如果字体仍然不正确,只需重复上述步骤,直到您满意为止。

您需要在Adobe Illustrator或CorelDraw等vector软件中并排检查这些字体。 如果你发现这些字体在相同的基础上偏移到这些软件中,那么它与字体本身有关。 即字体可能会在字体文件中偏移这种像素的情况下创build。 因此,不需要对任何UIButton或UITextField的.xib参数进行任何这样的更改。

尽可能在这里分享你的字体文件。

也许看看UITextView / UITextLabel的属性'thLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;'

这定义了垂直alignment。 几天前,在类似的情况下,这对我很有帮助

顺便说一下,苹果字体工具套件不是一个可以帮助你的程序。 因此,如果您不想安装macOs的虚拟副本,则可以使用FontForge for Windows与ascender和descender一起玩:element – > font info,然后是OS / 2选项卡,然后是度量标准。 最后在生成字体时不要忘记勾选“Apple”checkbox。 祝你好运!