3

我正在使用 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 的底部没有对齐。

部分 29 覆盖在 28 上

有什么解释吗?

即使我使用的是等宽字体,iOS 是否有可能对 SKLabelNode 应用字距调整?

4

1 回答 1

0

从 iOS 9 开始,所有字体默认使用比例数字。

如果您正在使用UILabel,您可以选择使用等宽数字,但SKLabelNode据我所知,没有解决方案。

此 WWDC2015 视频(第 26 分钟)中的更多信息:https ://developer.apple.com/videos/play/wwdc2015/804/

于 2017-02-11T03:21:30.540 回答