我有一个使用自定义字体的UIButton
,它是在我的视图加载时设置的:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
我遇到的问题是字体看起来浮在中心线上。如果我注解掉这一行,默认字体看起来垂直居中。但是更改为自定义字体会破坏垂直对齐。
我也在一个自定义字体的表格单元格上遇到了同样的问题。
我是否需要在某个地方告诉视图自定义字体没有其他字体那么高?
编辑:我刚刚意识到我使用的字体是Windows TrueType字体,我可以在Mac上的TextEdit中使用它,只是在我的应用程序中对齐有问题
7条答案
按热度按时间8yparm6h1#
在Custom installed font not displayed correctly in UILabel上讨论了一个类似的问题。没有给出解决方案。
这是我的自定义字体的解决方案,它在UILabel中有同样的问题,UIButton等。字体的问题原来是它的ascender属性与系统字体的值相比太小了。Ascender是字体字符上方的垂直空格。要修复字体,您必须下载Apple Font Tool Suite命令行实用程序。然后使用您的字体并执行以下操作:
这将创建
Bold.hhea.xml
。用文本编辑器打开它并增加ascender
属性的值。您必须进行一些实验以找出最适合您的确切值。在我的例子中,我将其从750更改为1200。然后使用以下命令行再次运行该实用程序以将更改合并回ttf文件:然后在应用程序中使用生成的ttf字体。
OS X El Capitan
由于SIP,Apple Font Tool Suite Installer在OSX El Capitan上不再工作,因为它试图将二进制文件安装到受保护的目录中。您必须手动解压缩
ftxdumperfuser
。首先将pkg从dmg复制到本地目录,然后使用现在,导航到文件夹
fontTools.pkg
,提取有效负载
现在
ftxdumperfuser
二进制文件在当前文件夹中。您可以将其移动到/usr/local/bin/
,以便您可以在终端应用程序中的每个文件夹中使用它。093gszye2#
我解决了调整顶部内容(不是标题!)插图的问题。
例如:button.contentEdgeInsets = UIEdgeInsetsMake(10.0,0.0,0.0,0.0);
祝你好运!
tzcvj98z3#
不确定这是否会有帮助,因为它可能取决于你的字体,但它可能是你的基线不对齐。
ztyzrc3y4#
我认为this is the best answer.没有玩上升器,numberOfHMetrics等...只是通过Glyphs应用程序导入导出并完成工作.感谢这个答案:https://stackoverflow.com/a/16798036/1207684
f2uvfpb95#
迟到了,但当这个问题第N次击中我时,我想我会发布我找到的最简单的解决方案:使用Python FontTools。
1.如果您的系统上没有Python 3,请安装它。
1.安装FontTools
pip3 install fonttools
FontTools包含一个TTX工具,它支持XML之间的转换。
1.在同一文件夹中将字体转换为.ttx
ttx myFontFile.otf
1.对.ttx进行必要的编辑并删除.otf文件,因为它将在下一步中被替换。
1.将文件转换回.otf
ttx myFontFile.ttx
动机:solution by kolyuchi不完整,即使使用此扩展安装流程,在10.15.2 Catalina 上运行
ftxdumperfuser
也会导致错误。oxosxuxt6#
你可以在界面生成器中尝试一下。下面是如何做到这一点的快照-
正如您所看到的,在IB中尝试这样做有其自身的好处。
cetgtptt7#
从
otf
切换到ttf
版本的字体可能是解决此问题的一种方法,具体取决于字体。