問題タブ [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 - FontMetrics.stringWidth()とFontMetrics.getStringBounds()の違いは何ですか?
画面に描かれているテキストの幅を見つける必要があります。このスレッドは、FontMetrics.stringWidth()がFontMetrics.getStringBounds()ほど正確でない場合があることを示唆しています。
これが正しいかどうか、そして正しい場合は、どのコンテキストでこの違いが見えるかを誰かが知っていますか?FontMetrics.stringWidth()は、SwingUtilities.computeStringWidth()を含め、より頻繁に使用されるようです。また、明らかな利点は、Graphicsオブジェクトを必要としないことですが、これ自体が、アンチエイリアスおよび同様の設定がGraphicsオブジェクトで定義されているという事実と組み合わされて、FontMetrics.getStringBounds()がより正確である理由を説明する可能性があります。
java - Javaは高さを指定してフォントサイズを取得します
特定のフォントサイズの高さを取得する代わりに、特定の高さを生成する特定のフォント(この場合はSansSerif)のフォントサイズを取得する(きちんとした)方法はありますか?
もちろん、フォントサイズをループしたり、何らかの形式のバイナリチョップを使用したりすることもできますが、可能であれば、少しクリーンでリソースをあまり消費しないものを使用したいと思います。私が見つけた最良の方法は、このようなものを使用することです。
c++ - CDCなしのMFCストリング幅
CDCを使用せずに、またはディスプレイにリンクされていないCDCを使用せずに、文字列の幅をピクセル単位で取得する方法はありますか。文字列幅を取得する必要があるクラスは、CWnd :: GetDC()を使用するためにCWndから継承せず、既存のCDCを関数に渡す方法はありません。
ディスプレイにリンクされていないダミーのCDCを作成しようとしましたが、これによりMFCがクラッシュします。理想的には次のようなものです。
編集:文字列リテラルの代わりにフォント名変数を使用する必要があります。
fonts - Java Graphics 2 で任意の .ttf フォントでレンダリングされた文字列の合計幅を取得します
現在、任意のフォントでレンダリングされた文字列の幅を取得しようとしています。
問題はこの行にあります...
ほとんどのフォントではこれでうまくいきますが、一部の洗練されたスクリプト フォントでは、予想よりも幅が狭くなっているように見えます。FontMetrics.stringWidth の javadoc に従って、読むこともできます...
この Font で指定された文字列を表示するための合計送り幅を返します。前進は、弦のベースラインの左端から右端までの距離です。String の進行は、必ずしもその文字の進行の合計ではないことに注意してください。
java - JLabelの幅は、コンストラクターで常に0を返します。次に、幅がX値を超えている場合は、改行を挿入しますか?
JLabelクラスを拡張するクラスを作成しました。このクラスを使用すると、基本的に、関連するIconImageをJLabelに添付して、サイズを正しく設定することが「より簡単」になります。
新しいJLabelをコードで作成するときは、次のように作成します。something = new MyClass("message", 1);
上記のコードでは、MyClass(String msg, int type) {}
コンストラクターを配置します。このコンストラクターでは、ユーザーが指定したテキストの幅を取得できるようにしたいと思います。その幅が特定の値を超えている場合、たとえば300px
、改行を挿入したいとします(基本的に、最大幅に従ってJLabelをワードラップします)。
以下のコードで、画像をJLabelに追加する部分を削除しました。これは、質問とは関係がないためです。これを処理するための別のクラスを作成しました。これはすでに機能しています。
このコードを実行すると、コメントに配置したように「WIDTH:java.awt.Dimension [width = 0、height=0]」が返されます。
コンストラクターでJLabelの幅を取得する方法はありますか?また、ワードラップを可能にするJLabelに存在する方法はありますか?
actionscript-3 - AS3 で正確な文字/フォント メトリックを取得することは可能ですか?
埋め込みフォントを使用して実行時にビットマップ フォントを動的に生成するクラスを作成しました。これまでのところ、文字間隔に小さな問題があることを除けば、うまく機能しています。
下の画像では、最初の行は実際の行で、TextField
2 行目は生成されたビットマップ フォントを使用してレンダリングされています。
「fox」という単語や「jumped」という単語の「ed」を見ると、文字間隔が少しおかしいことがわかります。
TextLineMetrics
より正確な文字メトリックを提供するクラスに代わるものはありますか?
アップデート :
新しい Flash Text Engine を使用したテキスト レンダリング品質 :
更新 2:
偶然にも、私は最終的に解決策を見つけました:
最初の問題は、antiAliasType
に設定されたプロパティでしたAntiAliasType.ADVANCED
。
高品質のテキストが生成されますがTextLineMetrics
、文字の幅が正しくない原因にもなります。
Math.ceil
2 つ目は、切り捨てではなく、最も近いピクセルに( を使用して) 切り上げる必要があることです。
java - フォントの実際の境界を見つけるための最良の方法
レンダリングされたテキストの境界を見つける方法を探していて、FontMetricsのgetStringBoundsメソッドに遭遇しました。これは一部のフォントの下降を無視しているようで、上昇が誇張されているため、垂直方向に適切に位置合わせできない境界が返されます。少し掘り下げてみると、GlyphVector.getPixelBounds()SEEMSが自分のやりたいことを実行していることがわかりましたが、使用に問題があるかどうかはわかりません。
2つの違いを表示するアプレットhttp://breadmilkbeercigarettes.com/bmbc/shelves/users/bbb/src/java/applet/glyphvector.htmlを作成しましたが、私のシステムフォントでは正しい境界を返すようです。これが費用のかかる方法であるかどうか、またはそれを使用することによる他の考えられる落とし穴があるかどうかを誰かが知っていますか?FontMetricsは私にとって正しく機能しているようには見えませんでした。あるいは、私の期待がずれていたのかもしれません。
ありがとう、BBB
imagemagick - Ruby & RMagick: テキストの実際の幅と高さを決定する
私は RMagick を使用しており、ユーザーが設定した背景色を使用して、テキストを垂直または水平 (ユーザー入力によって異なります) に描画したいと考えています。私は奇妙な問題に遭遇しました: get_type_metrics(text) は無効なデータを返します。実際の幅/高さは、メソッドによって返されるよりも小さくなります。
私は上り/下りの値で遊んでみましたが、運がありません。テキスト文字列の実際の幅/高さを決定する方法はありますか? 空の画像にテキストを描画し、幅の高さを決定してから、画像全体をピクセルごとに調べるいくつかのソリューションを見てきましたが、それは愚かで本当にリソースを消費します。また、PHP GD にも同じ問題があり、解決策がないことがわかりました。
PS ユーザーが背景ボックスのサイズを変更できる必要があるため、Draw#annotate を使用できません。
cocoa - OSXで指定された特性によってフォントを見つける
CreateFont(..)
OSXでWindowsの機能に代わるものはありますか?
NSFontDescriptor
とそのメソッドを使用しようとしましmatchingFontDescriptorsWithMandatoryKeys:
たが、このメソッドは「最も近い」フォントを見つけられず、一致する特性を見つけ、nil
.
OSX で指定された特性 ( CreateFontなど) で最も近いフォントを見つける方法はありますか?
更新しました
NSFontDescriptor で奇妙なことが起こります..
私は2つのコードを持っています:
ココアについて:
CoreText API を使用して:
両方のケースで同じフォント記述子を作成しましたが、最初のケースmatchedDescriptors
はnil
CoreText API で にいくつかのフォントがありますmatchedDescriptors
。バグですか?
しかし、一般的に、必須属性として渡す場合nil
、XXXMatchingFontDescriptorsXXX
少なくとも 1 つの記述子を返す必要がありますか?
resize - 新しく更新されたテキストに合わせてMdiTabのサイズを変更する方法はありますか?(インフラジスティックス)
UltraWinTabbedMdiのMdiTabのテキストをリセットしています。太字で長くなるようにリセットしましたが、タブのサイズが変更されないため、テキストが切り捨てられます。今のところ、タブのサイズを、自分のコンピューターではまともなように見える魔法の数字にリセットしているところですが、他の場所で機能するかどうかはわかりません。新しいテキストのサイズを取得して、毎回同じサイズを追加するか、自動サイズ変更メソッドを呼び出すことができるようにしたいと思います。
これを行う方法はありますか?