テキストの大きなチャンクを同じサイズの段落に分割する必要があり、それらを均一に保つために正確に同じ数の文字列行を使用します。現在、次のコードを使用してphpで実行しています。
function arrangeText(){
if (have_posts()) : while (have_posts()) : the_post();
$content = strtolower(get_the_content());
$content = trim(strip_tags($content));
$post_len = strlen($content);
$segmentCont = 1;
$auxOffset = 0;
$auxOffset2 = 0;
$limit = 896;
$limitTotal = 0;
while($limitTotal<$post_len){
if($segmentCont==2) {
$limit = 943;
}
$segmentCont++;
$limitTotal = $limitTotal + $limit;
if($limitTotal<$post_len)
{ $auxOffset = strpos($content," ",$limitTotal);}
else
{ $auxOffset = $post_len;}
$post_segment = trim(substr($content,$auxOffset2,$auxOffset-$auxOffset2));
$auxOffset2 = $auxOffset;
echo_segment($post_segment);
}
endwhile;
endif;
}
これは実際には機能しますが、各文字を数えても、一部の文字は最大 3 文字のスペースを取る場合があるため、段落の行数が異なるか、最後の行が半分にスライスされます。モノタイプフォントを使用すると、すべてがスムーズに進みますが、クライアントが特定のフォントを欲しがっていて、あらゆる種類のことを試してみましたがうまくいきませんでした。これを解決するために想像できる唯一のことは、非常に複雑なスクリプトで、エコーしている各文字の幅を取得し、その値を毎回カウント変数に追加し、合計が文字の幅が段落の合計幅を超えている場合は、最後の " " (空白) の前にスライスします (コードが単語を半分にカットするのを防ぎます) が、php、js でこれが可能かどうかはわかりません、
編集 1: 悪いことに、モノスペース フォントでもうまくいきません。p タグ ( overflow:hidden ) の下でカットされてオーバーフローしていました。等幅ですが、文字サイズも異なります。