为什么iOS单间距字体的表现不是这样?

为什么iOS单间距字体的表现不是这样?,ios,swift,fonts,kerning,monospace,Ios,Swift,Fonts,Kerning,Monospace,我正在使用SpriteKit,我的iOS应用程序中有一个计时器,它通过SKLabelNode呈现,并在更新功能中更新。我不希望数字随着计数的增加而左右移动,所以我尝试使用Courier New。它的效果比Avenir好得多,但某些数字的宽度仍有细微的波动。(6和9比其他数字略宽。)我在几个不同的实验中看到了这些波动,我尝试了: 普通和粗体样式 大字体(65)和小字体(9) Courier新字体和Menlo字体 Xcode模拟器与ipodtouch 我提交了诸如“哪种字体有统一宽度的数字”之类

我正在使用SpriteKit,我的iOS应用程序中有一个计时器,它通过SKLabelNode呈现,并在更新功能中更新。我不希望数字随着计数的增加而左右移动,所以我尝试使用Courier New。它的效果比Avenir好得多,但某些数字的宽度仍有细微的波动。(6和9比其他数字略宽。)我在几个不同的实验中看到了这些波动,我尝试了:

  • 普通和粗体样式
  • 大字体(65)和小字体(9)
  • Courier新字体和Menlo字体
  • Xcode模拟器与ipodtouch
我提交了诸如“哪种字体有统一宽度的数字”之类的查询,但我能找到的所有答案都是“使用单间距字体”。(见或)

我的代码非常简单。我曾经这样设置scoreNode:

    scoreNode = SKLabelNode(fontNamed: "Courier New")
    scoreNode.fontSize = 65
    scoreNode.fontColor = UIColor.blackColor()
    scoreNode.text = "0"
    scoreNode.position = CGPoint(x: patternPane.midX, y: patternPane.midY)
    patternPaneNode.addChild(scoreNode)
    scoreNode.text = "\(viewControllerDelegate!.getScore())"
然后我像这样更新分数:

    scoreNode = SKLabelNode(fontNamed: "Courier New")
    scoreNode.fontSize = 65
    scoreNode.fontColor = UIColor.blackColor()
    scoreNode.text = "0"
    scoreNode.position = CGPoint(x: patternPane.midX, y: patternPane.midY)
    patternPaneNode.addChild(scoreNode)
    scoreNode.text = "\(viewControllerDelegate!.getScore())"
这是一幅覆盖了28帧和29帧的图像。您可以看到电影的边缘对齐,并且可以看到2的底部没有对齐

有什么解释吗


即使我使用的是单空格字体,iOS是否可能对SKLabelNode应用紧排?

由于iOS 9,默认情况下所有字体都使用比例数字

如果您使用的是
UILabel
,您可以,但据我所知,
SKLabelNode
没有解决方案


WWDC2015视频(第26分钟)中的更多信息:

您是否可以添加一个屏幕截图?是一个SKLabelNote(显示两位数字)还是两个节点各显示一位数字?在后一种情况下,它们之间的位置是如何定义的?它是一个有两个数字的节点。