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

  • 普通和粗体样式
  • 大(65)和小(9)字体大小
  • Courier新字体和Menlo字体
  • 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的帧的一部分的图像。您可以看到影片的边缘对齐,并且可以看到2的底边没有对齐。

    有什么解释吗?

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

    最佳答案

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

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

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

    关于ios - 为什么iOS等宽字体不能像这样显示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30940999/

    10-14 23:36
    查看更多