問題タブ [fontmetrics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android デバイスで実行すると、FontMetrics が正しくありません。シミュレーターファイン
Android デバイスの解像度に応じてテキストを動的にスケーリングする Android アプリがあります。Android シミュレータで事前定義されたすべての解像度でこのコードをテストしましたが、コードは正常に動作します。(これには、HTC Desire および Motorola Droid と同じ解像度が含まれます)
HTC Wildfire でも問題なく動作します。
シミュレーターのスクリーン ショットを次に示します。
ただし... HTC Desire でこれを試してみたところ、Motorola Droid を使用しているユーザーから、フォントが正しくスケーリングされていないという報告がありました。
テキストが切り落とされていることに注意してください。
これらの特定のデバイスでこれが機能しない理由はありますか?
私は現在、テキストの利用可能な高さに応じてテキストを縮小する関数を持っています...次のようなものです:
これがいくつかのデバイスでのみ発生する理由は何ですか? どうすれば修正できますか?ここで検討する必要がある、私が知らない別のフォントメトリックはありますか? スケールや DPI が好きですか?
ありがとう。
java - FontMetrics のラグの問題
FontMetrics の Oracle ドキュメント ページから:
「これらのメソッドの実装は非効率的であるため、通常はより効率的なツールキット固有の実装でオーバーライドされることに注意してください。」
誰でも提案できますか?私が尋ねる理由は、文字列の幅を測定するために fontMetrics を実装したためで、計算に約 0.5 秒かかりました。ウィンドウがペイントされるたびにこれを数回行う必要があるため、非常識なラグを発生させずに文字列の幅を取得する方法はありますか?
実際に何か間違ったことをした場合に備えて、ラグの原因となっているコードは次のとおりです。
ありがとう :)
java - Javaでフォントを変更して文字列を描画するための正しい構文は何ですか?
誰かが私の構文をここで確認できますか?「TimesNewRoman」、「Arial」、「Verdana」をにfontName
渡し、8、12、15などを使用していfontSize
ます。ここでフォントが変更されることはありません。画像の上にテキストを書き込むためにこれを行っています。
java - Java:ピクセル単位で特定の高さのフォントを取得する
を使用してフォントのレンダリングされた高さを決定するのは簡単ですFontMetrics
が、その逆はどうでしょうか。ピクセル単位の特定の高さに収まるフォントを取得するにはどうすればよいですか?
Verdana
「アセンダーからディセンダーまで30ピクセルの高さのサイズでください。」
これをJavaに要求するにはどうすればよいですか?
.net - 単一のグリフ メトリックを取得する (.net)
選択したフォントから単一のグリフに関する完全な情報を取得するにはどうすればよいですか (たとえば、Arial -> 記号「A」)
この図は、私が見つける必要がある変数を説明しています。
java - Java で正しいフォント幅を返す API はどれですか?
JavaのどのフォントAPIが正しい幅を返しますか? 現在使用している
これにより、画像と表示に正しい値が返されます。しかし、Java SE 6 での印刷では間違っています。Java 7 では、すべて正しいです。違いは非常に小さいです。ただし、行末の「i」が 1 つ失われています。まったく同じ値を印刷して受け取ります。しかし、テキストは、印刷グラフィック上により多くのスペースを必要とします。
アンチエイリアスと分数メトリックを使用します。
私は異なるAPIがあることを知っています。しかし、推奨される API は何ですか?
java - Java: FontMetrics のアセントが正しくない?
javadoc を見ると、次のように表示されFontMetric.getAscent()
ます。
フォント アセントは、フォントのベースラインからほとんどの英数字の上端までの距離です。フォントの一部の文字は、フォント アセント ラインより上にある場合があります。
しかし、簡単なデモ プログラムを作成したところ、次のように表示されました。
テキストの各行の 4 本の水平線は次のとおりです。
- ベースラインの位置が
getDescent()
- ベースライン位置
- によって上げられたベースライン位置
getAscent()
- によって上げられたベースライン位置
getHeight()
getAscent() 行と文字の先頭の間のスペースに注意してください。ほとんどのフォントとサイズを見てきましたが、常にこのギャップがあります。(一方、フォントの下降はちょうどいいように見えます。)何が得られますか?
java - Java:フォントのキャップハイトとエックスハイトをどのように調べますか?
FontMetricsには、フォントのキャップハイトとエックスハイトのゲッターはありません。
これらの値を取得するにはどうすればよいですか?
キャップハイトに関する限り、特定の大文字については、文字の上昇がキャップハイトと同じであるという保証はありません。(たとえば、大文字のHは上部が平らであるとは限りません)
xの高さに関しては、おそらく「x」の高さと同じだと思いますが、これも保証はありません。
編集:Grr!特定の文字シーケンスを試したところFontMetrics.getBounds()
、FontMetrics.getLineMetrics()
高さについては常に同じ答えが得られました(getBounds()は、明らかに幅によって異なります)。hasUniformLineMetrics()
このメソッドには、文字セットをカバーするために複数のフォントを使用するfontmetricsに関する注記がありますが、これは個々の文字ではなく、文字グループをカバーします。
java - インストールされていないフォントを使用してLineBreakMeasurerを呼び出す
ここでの答えはノーだと思います(つまり、fontmetricsが存在しない場合、どうすればよいでしょうか)。しかし、私は尋ねたほうがいいと思います。
Linuxボックスで実行されることが多いJavaプログラムのソフト改行を理解する必要があります。分割するテキストに指定されているフォントはWordファイルからのものであるため、TimesNewRomanなどのWindowsシステムで見つかったフォントを使用します。
ほとんどのLinuxシステムには、TimesNewRomanがインストールされていません。指定されたフォントがインストールされていない状態で正確なブレークを取得する方法はありますか?
そして2番目の質問-WindowsフォントをLinuxボックスにコピーすると、Windowsシステムで得られるものとは異なるブレークが得られることがわかりました。fontmetricsはO/Sおよび/またはJava実装に調整する必要がありますか?
ありがとう-デイブ
shell - imagemagickフォントメトリクス-グリッドにテキストを配置する方法は?
次の画像を見てみましょう。
水平グリッドがあり、このグリッドにテキストを配置したいと思います。上記の例は間違っています。なぜなら、私が望んでいるのは、各文字がグリッドのセルの1つに正確に配置されているからです。
独自のコマンドで各文字を配置することなく、これを実現するためにimagemagickのテキスト出力を調整できるかどうか疑問に思います。
いくつかの追加の事実:
- シェルスクリプトのimagemagickを使用しています
- 私はimagemagickのMVGでかなり複雑な描画を行っているので、テキストをMVGコマンドで配置できると便利です。
- ソリューションで必要な場合は、グリッドの幅を数ピクセル調整できますが、もちろんすべてのセルの幅は同じである必要があります
- 私はいつも同じ固定幅フォント(Courier)を使用しています
- シェルスクリプトのフォントメトリックを解析し、この情報を使用してテキストコマンドに値を適用することができます
- 私は水平方向の配置のみを気にします。各行を個別にレンダリングするため、垂直方向の配置は重要ではありません。
このすべてを念頭に置いて-私の問題の解決策はありますか?
どうもありがとう!