首页 > 解决方案 > 获取字体宽度

问题描述

我有这个NSFont对象:

var font = NSFont(name: "Courier New", size: 5)

我正在尝试获取em-size字体。您可以使用,但这会返回in 点NSFont.pointSize的高度。NSFont我正在寻找字体的宽度

C#我翻译代码的地方,您可以使用

Font font = new Font("Courier New", 5f, FontStyle.Regular, GraphicsUnit.Point);
int widthInPoints = font.SizeInPoints; // Is there an equivalent of this line but in Swift?

另外,我想在我的例子中提到字体总是等宽的。(我想我会使用 Courier New,因为我没有看到 Lucida Console。)

我试过使用:

var widthInPoints = ("w" as NSString).size(withAttributes: [NSAttributedString.Key.font: font]).width

但我不确定这是否正确,因为我只是在寻找字体的宽度而不测量字符串。但是,如果它是正确的,那很好。

我也尝试过使用:

var width = font.boundingRectForFont.width

但再一次,我不确定这是否正确。如果正确,boundingRectForFont上面返回的值是点还是像素?(该部分的文档还不清楚)

注意:我不是要获取任何字符串的宽度。我只是想获得em-size字体的。例如,您可以调用SizeInPointsC#获取字体的原始输入大小。然而Swift,它返回高度而不是宽度。我怎样才能得到宽度呢?

任何帮助将不胜感激。

标签: c#swiftmacosfonts

解决方案


推荐阅读