高速なアプリケーション (ここでは Safari がより良い例かもしれません) が非常に長いテキスト ページ (たとえば、チャット ログや巨大なドキュメント) の高さを計算するためにどのような手法を使用しているかに興味があります。
同じ行の高さのテキストが大量にあることを考えると、これはすでにそれらの行の数を掛けることができるものです。<p>
ただし、特定の幅で何行にまたがるかを知るにはどうすればよいでしょうか?
私ができることは、彼らが:
- すべての文字の幅を計算し、すばやく追加できるように保存します。
- それを使って単語の幅を計算し、
- ブロックレベルの幅と比較しながら、必要に応じて行を追加しながら、単語とスペースの幅を追加します。
加算と比較は、GDI+ で文字列を測定するよりもはるかに高速であるため、これは確かに非常に高速に思えます。しかし、信頼性が最優先であり、AFAIK テキスト レンダリングでは通常カーニングが導入されるため、このようなことが行われるかどうかはわかりません。また、GDI+ からこの情報を取得するのがどれほど簡単か難しいかはわかりません。
また、ReactOS のスクリーンショットは、 Firefox が各文字のサイズと位置を計算すると信じさせたものでした。