2011-01-01 10 views
1

非常に正確な間隔が必要なものを設計しているので、各列に正しいスペースを割り当てる必要があります。リストから最長の単語(ピクセル単位)を見つけるためのプログラムまたは方法?

名前の巨大なリストである非常に長いがあります。最長の名前がどのくらいのスペースを占めるかを計算したいと思います。 'iiii'は同じ量の文字を持っていても 'mmmm'とは違うので、使用するフォントに応じて明らかに考慮する必要があります。

+0

、幅を見つけるために、文字列をレンダリングすると、一度すべての文字の幅を測定し、文字列の上にそれらの値を追加するよりも高価であることに注意してください。 –

+0

[フォントを指定した文字列のサイズを調べる方法]の複製が可能です。(http://stackoverflow.com/questions/721168/how-to-determine-the-size-of-a-string-given-a -font) – Nifle

+0

どのプラットフォーム(win32/64、osX、ios android)、どの言語(C#、Java、Delphi)ですか? – Johan

答えて

0

あなたがwin32を使っているなら、私はGetTextExtentがあなたが探しているAPI呼び出しだと思います。他のプラットフォームにも同様のAPIが必要です。

0

ほとんどのプラットフォーム(および/またはフォント処理ライブラリは)あなたは絶対にフィットする必要がある場合は、列幅を割り当てるために使用することができ、フォント全体の最大有効幅を取得する方法を提供します。文字列を実際にレンダリングするのではなく、文字列内の文字数を乗算するだけで、これは非常に安価な操作でなければなりません。

プラットフォームによっては、フォント幅も提供されます。平均アドバンス幅の値。あなたが「きれいに閉じる」必要がある場合は、おそらく平均を考慮した数式を考え出すことができます。

Win32では、GetTextMetricsは、maxとaverageの両方を含むTEXTMETRIC構造体を返します。上記のように、他のプラットフォームにも同様のAPIが用意されていますが、あなた自身で把握していただくか、質問を編集して助けてください。あなたは(最長の文字列を見つけるための)カーニングなしで行うことができる場合

関連する問題