過去にこれを達成した方法は効率的ではないかもしれませんが、それはうまくいきます(ほぼ)。
ここで重要なのは、テキストを複製して変更を加えることです。JavaScript を使用すると、このクローンをオンザフライで実行できます。ページの目に見えない div に入れてから、テキストを 1 文字のチャンクに分割します。これらの各文字は、スパンでラップできます。
次のステップは、入力ボックスの幅を確認し、前面から始めて、スパンの幅の合計を開始することです。これは、カスタムの「オフスクリーン」div 内のすべてのスパン要素を取得し、それらを反復処理する場合にすぎません。
魔法の幅の数字に到達すると (またはそれを超えると)、ボックスに入れることができる単語の文字数がわかります。
もちろん、あなたが説明していることには少し癖があります。つまり、ボックスに収まるテキストの「行」数を計算し、それに応じて「合計幅」を修正する必要がある場合があります (幅が 100 ピクセルの行が 1 行ある場合、最大幅は 100 ピクセルになりますが、深さが 3 行の場合、最大幅は 300 ピクセルになります)。
私が言うように、これは効率的なプロセッサ使用法ではないかもしれません...しかし、これは解決策であり、フォントが特定のサイズまたはタイプである必要はありません。