2017-08-24 8 views
0

イメージの中央にテキストを垂直に配置する必要がありますが、私が使用しているカスタムフォントには非常に大きなアセンダとディセンダがあります(つまり、文字の一部がかなり張り付いてしまいます)。すべての可能な文字を修正してください。フォントの実際のピクセルの高さを使用してテキストをCSSと垂直に整列させますか?

例えば、文字Xg間のアライメントの違いを見て:

enter image description here

私はこれが原因で、フォントの「ベースライン」であり、それは私の質問が何であるかではないことを知っています約。

"境界ボックス"やコンテナの線の高さに頼るのではなく、フォントの実際のピクセル値を使用してテキストの文字列を垂直に配置できるかどうかを知りたいと思っています下の境界:

:だから例として、上記を使用して

enter image description here

enter image description here

、単一の文字Xgは完全にこのように中央に表示されます

enter image description here enter image description here

答えて

1

これを行うには、組み込みの方法はありません。

specs

actualBounding*含むそうするために必要なすべての値を定義することTextMetricオブジェクトを返すmeasureText()機能は、しかしと残念ながら、唯一widthその仕様からはincluded in the browsersあります。

これらの制限の一部を克服するのに役立つかもしれないpolyfillがありますが、自分で試したことはありませんし、それが良いかどうかは言えません。

最後のオプションは、実際に行をスキャンして各文字のピクセル位置を調べることです。どのくらいうまく動作するかは、レンダリングする必要があるテキストの量によって決まります。あなたは基本的にそれぞれの文字をオフスクリーンキャンバスに書いてから、上から下までスキャンして、最初のピクセルがどこに現れているかを調べ、それを上と下の実際の境界ボックスとして使用する必要があります。

+0

ありがとうございます。キャンバスピクセルスキャンのことについて私は不思議でした。既にそれを行うライブラリやスクリプトが存在するかどうか知っていますか? – WackGet

+0

@WackGetが質問に答えた場合、回答を受け入れることを検討してください。 – K3N

+0

私はしますが、ここで公表できる質問に直接答える最終的な解決策をまとめようとしています。ありがとう。 – WackGet

関連する問題