自定义字体垂直对齐

我有一个使用自定义字体的 UIButton,它是在我的视图加载时设置的:

- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}

我遇到的问题是字体看起来像是浮在中心线上。如果注释掉这一行,默认字体垂直居中。但是更改为自定义字体会破坏垂直对齐。

我在使用自定义字体的 Table Cell 上也遇到了同样的问题。

我是否需要告诉视图某处的自定义字体不像其他字体那么高?

EDIT: I've just realized that the font I'm using is a Windows TrueType Font. I can use it fine in TextEdit on the Mac, only a problem with the alignment in my App

Button text not vertically centered

43009 次浏览

You can try this out in Interface Builder. Here is a snapshot of how to do it -

enter image description here enter image description here

正如您所看到的,在 IB 中尝试这样做有其自身的好处。

Not sure if this will help as it may depend on your font, but it could be that your baseline is misaligned.

self.searchButton.titleLabel.baselineAdjustment =
UIBaselineAdjustmentAlignCenters;

I solved the problem adjusting the top content (not the title!) inset.

例如: button.contentEdgeInsets = UIEdgeInsetsMake (10.0.0.0.0.0.0.0) ;

祝你好运!

自定义安装的字体在 UILabel 中显示不正确也讨论了类似的问题,没有给出解决方案。

下面是我的自定义字体的解决方案,它在 UILabel,UIButton 等方面也有同样的问题。这种字体的问题在于,与系统字体的值相比,它的上升属性太小了。Ascender 是字体字符上方的一个垂直空白。要修复字体,您必须下载 苹果字体工具套件命令行实用程序。然后使用你的字体,并执行以下操作:

~$ ftxdumperfuser -t hhea -A d Bold.ttf

这将创建 Bold.hhea.xml。使用文本编辑器打开它,并增加 ascender属性的值。你将不得不进行一些实验,以找出最适合你的确切价值。就我而言,我把它从750改成了1200。然后使用下面的命令行再次运行该实用程序,将您的更改合并回 ttf 文件:

~$ ftxdumperfuser -t hhea -A f Bold.ttf

Then just use the resulting ttf font in your app.

OS X El Capitan

Apple Font Tool Suite Installer 不能在 OSX El Capitan 上工作,因为它尝试将二进制文件安装到受保护的目录中。 你必须手动提取 ftxdumperfuser。首先将 pkg 从 dmg 复制到本地目录,然后用

~$ xar -xf OS\ X\ Font\ Tools.pkg

导航到文件夹 fontTools.pkg

~$ cd fontTools.pkg/

提取有效载荷

~$ cat Payload | gunzip -dc | cpio -i

现在 ftxdumperfuser二进制文件位于当前文件夹中。您可以将它移动到 /usr/local/bin/,这样您就可以在终端应用程序内的每个文件夹中使用它,具体如下。

~$ mv ftxdumperfuser /usr/local/bin/

我认为这是最好的答案。 不要玩上升器,数字 HMetrics 等等。 通过 象形文字应用程序进出口 and Job done. 多亏了这个答案: Https://stackoverflow.com/a/16798036/1207684

派对迟到了,但是这个问题第 N 次打击了我,我想我应该发布一个我发现的最简单的解决方案: 使用 Python FontTools

  1. 如果 Python3在您的系统上不可用,请安装它。

  2. 安装 FontTools

    pip3 install fonttools

    FontTools include a TTX tool which enables conversion to and from XML.

  3. 在同一文件夹中将字体转换为. ttx

    ttx myFontFile.otf

  4. 对. ttx 进行必要的编辑并删除. otf 文件,因为这将在下一步中被替换。

  5. 将文件转换回. otf

    ttx myFontFile.ttx


Motivation: 溶液由高柳内提供是不完整的,即使使用 这个扩展的安装流程,运行 ftxdumperfuser也会在10.15.2 Catalina 上导致错误。