iOS自定义字体在不同语言中的垂直对齐方式

时间:2013-11-18 22:19:09

标签: ios objective-c fonts uikit uifont

我在iOS应用中使用名为Classic Robot的自定义.ttf字体。我想添加日语翻译,这个字体似乎不支持日文字符。这不是一个问题,因为它似乎iOS自动将字体更改为系统默认字体,可以支持日语。

我的问题是这两种字体在iOS渲染时具有不同的垂直对齐方式,如下图所示。如您所见,日语字体在白框顶部(即框架)附近对齐,而英文字体位于中间附近。这使我很难正确地布局文本。有谁知道为什么会这样?

enter image description here enter image description here

我认为它可能与iOS字体上的ascender和descender属性有关,我无法确定。

1 个答案:

答案 0 :(得分:0)

你的问题是:"有谁知道为什么会出现这种情况?" 答案是日语字体的ascender属性小于Classic Robot字体。这可以通过生成自定义日语字体来修复,该字体具有足够大的ascender属性,使其与从其他字体获得的间距相匹配。这可以通过下载Apple Font Tool Suite并按照this answer中发布的说明完成。

对于按钮,您可以通过增加插入来解决问题:

myButton.contentEdgeInsets = UIEdgeInsetsMake(15.0, 0.0, 0.0, 0.0);

您可以为四个插图(顶部,左侧,底部,右侧)中的每一个指定不同的值。正值会缩小或缩小,使其靠近按钮的中心。负值会扩展或偏离该边缘。这适用于按钮图像和按钮标题。