読者です 読者をやめる 読者になる 読者になる

Webブラウザの行の文字詰め

計算機

ちょっとCSSでの組版に凝っているのですが、Webブラウザの文字の配置がいけていないことが気になっています。

LaTeXだと、

f:id:fjkz:20151123202822p:plain

というように表示される文章をWebブラウザに貼り付けると以下のようになります。

The Paxos algorithm for implementing a fault-tolerant distributed system has been regarded as difficult to understand, perhaps because the original presentation was Greek to many readers [5]. In fact, it is among the simplest and most obvious of distributed algorithms. At its heart is a consensus algorithm—the “synod” algorithm of [5]. The next section shows that this consensus algorithm follows almost unavoidably from the properties we want it to satisfy. The last section explains the complete Paxos algorithm, which is obtained by the straightforward application of consensus to the state machine approach for building a distributed system—an approach that should be well-known, since it is the subject of what is probably the most often-cited article on the theory of distributed systems [4].

右端がガタガタになっていていて揃っていません*1。これは美しくない。単語が空白文字で区切られていて、単語を適当に分割することができないような言語だとこのようなことが起こります。

TeXは行に文字を詰める際にナップサック問題を解くようなアルゴリズムを使って最適な組み方を計算したり、ハイフンで単語を分割していい場所を自動で判定したりしているらしいのですが、Webブラウザはそういうことはしてくれません。Microsoft Wordもこういうの得意ではないですし、手元にあるAmazon Kindleも行の右端は揃っていないです。

Webブラウザを作っている人はこういうところはあまり興味がないのでしょうか?Knuthの美意識が異常なだけかもしれませんが、美しい組み方が実現できると知ってしまったらWebブラウザでも同等のことはできて欲しくなります。

私はLaTeXは嫌いなのですが、LaTeXで出来ることの代替手段を用意しなければ撲滅できない。文字詰めをWebブラウザ上で美しく出来るライブラリはないのだろうか?Java Scriptでp要素で囲まれところをかっこ良く整形するような感じになるのだろうか?

情報が正しいかは分からないですが、O'REILLYはCSS組版しているそうだが、手元の本の右端は揃っていてハイフンで単語を分割している。それがCSSなのかは分からないが、仮にそうだとしたら印刷用としては存在するみたい。

Webブラウザ用のはないのかな?専門職しか知り得ない情報なのでどう調べていいかも、誰に聞いたらいいのかもちょっとわからないです。


追記:

text-align: justifyCSSに設定すれば綺麗になるようだ。さすがにハイフネーションはしてくれないが、あれは結構恣意的なのでなくてもよいと思う。

The Paxos algorithm for implementing a fault-tolerant distributed system has been regarded as difficult to understand, perhaps because the original presentation was Greek to many readers [5]. In fact, it is among the simplest and most obvious of distributed algorithms. At its heart is a consensus algorithm—the “synod” algorithm of [5]. The next section shows that this consensus algorithm follows almost unavoidably from the properties we want it to satisfy. The last section explains the complete Paxos algorithm, which is obtained by the straightforward application of consensus to the state machine approach for building a distributed system—an approach that should be well-known, since it is the subject of what is probably the most often-cited article on the theory of distributed systems [4].

*1:Google Chromeでは。他は試していない