質問: AppletHeight / 2 + (fontmetrics.getAscent() -fontmetrics.getDescent()) / 2; となっているのですが、 AppletHeight/2 に”プラス +” (AscentからDescentを引いた差)の半分している意味が分かりません。 Ascent-Descentの差の半分は文字の中央という意味は分かるのですが、 確かにプラス+ するとセンタリングになっています。 感覚的にはマイナス-なのだと思ってしまいます。 文字の座標のセンタリングでプラス+を用いているか、教えて頂けませんか? ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` ここにご自身が実行したソースコードを書いてください ``` ### 試したこと 課題に対してアプローチしたことを記載してください ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: Ascent-Descentの差の半分は文字の中央ではないです。Ascent8:Descent2のフォントだとしたら、(8-2)/2は3、文字の中央は5なのでずれてますよね。 Javaのフォント描画は(とくに何も設定しなければ)ベースライン基準で描画されます。なので、指定したy座標にフォントの中心を揃えたいのであれば、ベースラインに対してAscent−Descentの半分を足してやる必要があります。 例えばy10にそのまま文字を書くと、文字の上端は10-8=2、文字の下端は10+2=12となり、2から12の範囲に描画されます。y10を中心に10の大きさを書くなら5から15の範囲に描画されてほしいですよね。そうなると先程の(Ascent-Descent)/2を足すことで2から12の範囲は5から15となり、適正となります。