我正在使用 SpriteKit 并在我的 iOS 应用程序中通过 SKLabelNode 呈现一个计时器,并在更新函数中进行更新。我不希望数字随着计数的增加而左右移动,所以我尝试使用 Courier New。它的效果比 Avenir 好得多,但一些数字的宽度仍然存在细微的波动。(6 和 9 比其他数字略宽。)我在几个不同的实验中看到了这些波动:
- 正常和粗体样式
- 大 (65) 和小 (9) 字体大小
- Courier New & Menlo 字体
- Xcode 模拟器和 iPod Touch
我提交了诸如“哪种字体具有统一宽度的数字”之类的查询,但我能找到的所有答案都只是说“使用等宽字体”。(请参阅https://graphicdesign.stackexchange.com/questions/13148/which-fonts-have-the-same-width-for-every-character或等宽字体 - 不是真正的等宽字体?)
我的代码超级简单。我像这样设置 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())"
这是一个覆盖显示 28 的帧和显示 29 的部分帧的图像。您可以看到影片的边缘对齐,并且您可以看到 2 的底部没有对齐。
有什么解释吗?
即使我使用的是等宽字体,iOS 是否有可能对 SKLabelNode 应用字距调整?