3

私は SpriteKit を使用しており、SKLabelNode を介してレンダリングされた iOS アプリにタイマーがあり、更新機能で更新されます。カウントが増えると桁が左右に移動するのが嫌だったので、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またはMonospace 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 のベースが整列していないことがわかります。

部分的な 29 を 28 に重ねる

説明はありますか?

等幅フォントを使用しているにもかかわらず、iOS が SKLabelNode にカーニングを適用している可能性はありますか?

4

1 に答える 1