使用非默认字体时,NSTextField垂直错位文本

时间:2014-08-04 01:37:28

标签: objective-c macos cocoa

使用不同的字体时,我无法使文本字段看起来可以接受。

请参阅我用于演示此问题的测试应用中的截图。它由一个XIB组成,代理中没有代码或其他任何地方。这是在XX 5.1.1的OSX Mavericks上,但我还没有尝试过其他版本。

Test app screenshot

默认系统字体在顶部文本字段中看起来很好,正如您所期望的那样。将其与下面的相比:相同的大小和形状,我所做的不同就是更改Interface Builder中的字体。向下推文本,剪切降序字母(小写pqjg)。以下Menlo示例也被推倒,但并不是那么糟糕。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

快速测试显示Lucida Grande和Helvetica需要17个像素,而Menlo需要19个像素:

playground

请注意,这会排除边框和阴影,因此您需要使文字视图明显大于该视图以确保其适合。

Interface Builder是专门为Lucida Grande设计的,它知道它可以因为太小而逃脱,因为该字体不会占用它所有的空间。与其他字体不兼容。

答案 1 :(得分:2)

您可以通过以下几种方式解决此问题:

  

•在文本字段面板上启用“使用单行模式”。当我第一次   遇到这个问题并不是很明显,这会自动发生   在NSTextField中垂直对齐文本。

...或

  

•只需使用调整框调整NSTextField的大小即可   点击它后出现。你也可以调整它们   “控制”属性。


  

XCode Text Properties