It is truly a deplorable thing that typography on the Web is still as bad in 2008 as it was over a decade prior. In fact, it has arguably gotten worse. I remember using BitStream TrueDoc and Microsoft WEFT in 2000 to produce natively embeddable fonts for Web sites. Sure, there's sIFR, but in my opinion it's a suboptimal solution because it requires a plug-in and breaks text selection, amongst other things.

So, I'm going to ignore embedding typefaces for now and focus on things I can do something about.

Optimal Paragraph Width

I remember reading (not sure where, but I will recall it eventually) that the optimal width for a paragraph is between 65 and 70 characters. Therefore, rather than go with a fully liquid layout, which changes with the size of the viewport, I chose a paragraph width of 66ex. After all, it's hypertext, right? That would imply that it's meant to be read.

Hyphenation

I am a fan of justified paragraphs. Web browser vendors, apparently not so much. the text-align: justify; CSS declaration, when not paired with copious soft hyphens (­ character entities), create nasty rivers down the page, rendering the paragraphs laborious at best to read.

To make matters worse, soft hyphens are not universally implemented, and even if they were, I would still have to hyphenate all my text. Luckily, a guy called Frank Liang solved that problem in 1983 with his word hyphenation algorithm, which is used in the TeX typesetting language.

I am currently using the JavaScript implementation of the Liang hyphenation algorithm by Mathias Nater. Once I am far enough along, I will likely adapt and/or integrate it into my own JavaScript library.