为什么iOS Monospaced字体表现不像那样?

时间:2015-06-19 14:42:58

标签: ios swift fonts kerning monospace

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

  • 正常&大胆的风格
  • 大(65)&小(9)字体大小
  • Courier New&门洛字体
  • Xcode模拟器& iPod Touch

我提交了类似“哪个字体具有统一宽度数字”的查询,但我能找到的所有答案只是说“使用等宽字体”。 (请参阅https://graphicdesign.stackexchange.com/questions/13148/which-fonts-have-the-same-width-for-every-characterMonospace Font - Not really Monospace?

我的代码非常简单。我像这样设置了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.您可以看到电影的边缘排成一行,您可以看到2s的底部没有对齐。

partial 29 overlaid on 28

有任何解释吗?

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

1 个答案:

答案 0 :(得分:0)

自iOS 9起,所有字体默认使用比例数字。

如果您使用UILabel,则可以opt into monospaced digits,但据我所知,SKLabelNode没有解决方案。

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