为啥自定义字体会移动文本(更改垂直对齐方式)? [复制]

Posted

技术标签:

【中文标题】为啥自定义字体会移动文本(更改垂直对齐方式)? [复制]【英文标题】:Why custom font moves text (change vertical alingment)? [duplicate]为什么自定义字体会移动文本(更改垂直对齐方式)? [复制] 【发布时间】:2013-03-06 22:40:23 【问题描述】:

我有这段代码,用一些文本和默认字体创建简单的 UILabel

        self.reviewCountLabel = [[UILabel alloc] initWithFrame:someFrame];
        self.reviewCountLabel.text = @"1231 REVIEWS";
        self.reviewCountLabel.textAlignment = NSTextAlignmentRight;
        self.reviewCountLabel.backgroundColor = [UIColor lightGrayColor];
//        self.reviewCountLabel.font = [UIFont fontWithName:kSTGFontAvantGardeBold size:18];
        [self addSubview:self.reviewCountLabel];

在屏幕上我得到了这个:

但如果我取消注释添加自定义字体的代码,我会得到:

有人可以解释为什么我在这里垂直对齐到顶部吗? (或帮助解决)

【问题讨论】:

【参考方案1】:

它可能没有与顶部对齐,但新字体的几何形状(上升线、基线等)与系统字体完全不同。在这方面,并非所有字体都像其他字体一样干净。

您可以使用Apple's Font Tool Suite 调整几何图形,特别是ftxdumperfuser 命令。 Here is an older SO post 非常详细地描述了如何使用该工具来解决您的问题。

【讨论】:

以上是关于为啥自定义字体会移动文本(更改垂直对齐方式)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥没有一种合法的方式来垂直对齐元素?

为啥垂直对齐:中间;在这段代码中不起作用? [复制]

为啥是垂直对齐:文本顶部;不能在 CSS 中工作

在旋转时更改 UITableViewCell 中的文本对齐方式

为啥“垂直对齐:中间;”不适用于“最小高度”?

为啥这个 inline-block 元素的内容不是垂直对齐的