私は 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 のベースが整列していないことがわかります。
説明はありますか?
等幅フォントを使用しているにもかかわらず、iOS が SKLabelNode にカーニングを適用している可能性はありますか?