自動改行はできないのでしょうか? 1センテンスが長いと、もの凄く縦長になってしまうのです。
結論から書きますと、うちの縦書きスタイルシートを使う場合、残念ながら自動改行(=決められた文字数、あるいは高さで自動的に折り返す)は出来ません。
縦書きCSSを使った縦書きレイアウトは、htmlソースで見ると、
<div class="tate-area">
<div class="tate-line"> (1行め) </div>
<div class="tate-line"> (2行め) </div>
・
・
・
</div>
<div class="tate-line"> (1行め) </div>
<div class="tate-line"> (2行め) </div>
・
・
・
</div>
というかたちになります。1行めの高さ(長さ)と2行めの高さ(長さ)を合わせるには、1行めの<div class="tate-line">〜</div>と、2行めの<div class="tate-line">〜</div>の内部の文字数を同じにするしかないのです。
ほんとは「見栄えの制御はすべてスタイルシートで」というのが作法的にも作業的にも美しいのですが、こればっかりは、1行あたりの文字数を物理的に合わせるしかありません。
手作業で文字数を数えるのは大変なので、コチラの横書き→縦書き変換スクリプトを使ってみてください。文字通り「横書きテキストに縦書きCSSを適用してhtmlコードを吐き出す」スクリプトです。一行あたりの文字数指定も出来ます。
横書きだったら、ボックスの幅を固定してやれば、その幅で勝手に折り返してもくれるのですが、
[ htmlソースの例 ]
<div style="width:12em;border: solid 1px red;">[ その表示例 ]
たぶんこれで、全角12文字くらいで行が折り返されるはずですよ。
</div>
たぶんこれで、全角12文字くらいで行が折り返されるはずですよ。
高さに関しては、ボックスの高さを固定しても、デフォルトの動作では、溢れた分がはみ出して表示されるか、ボックスの高さが自動的に拡張されます。
[ htmlソースの例 ]
<div style="height: 1em; width:12em;border: solid 1px red;">[ その表示例 ]
ボックスの高さを 1文字分にしてみました。
</div>
ボックスの高さを 1文字分にしてみました
というわけで、tate-area あるいは tate-line の高さを固定しても、その中身がスタイルで設定した高さをオーバーしてしまえば、その行はどこまでも下に伸びていってしまうのです。
横書きが基本の世界で、縦書き(に見える)レイアウトを実現させてみよう…という、ちょっと無茶なことをやっているので、このCSSを使うときにも、ちょっと面倒な作業が付いてまわってしまいます。
ちなみに青空文庫を縦書き表示でも、行の高さを揃えるために、文字数をカウントして分割 → 文字数を揃えた文字列を、それぞれ tate-line に当てはめる…という作業を行っています。
C
うわわ、ご説明ありがとうございます。
よーーくわかりました!
変換をPHPで行っているので、今後は文字数をチェックして改行させようと思います。
本当にありがとうございました!!