Hyphenation algorithm
From Wikipedia, the free encyclopedia
A hyphenation algorithm is a set of rules (especially one codified for implemention in a computer program) that decides at which points a word can be broken over two lines with a hyphen. For example, a hyphenation algorithm might decide that impeachment can be broken as impeach-ment or im-peachment, but not, say, as impe-achment.
One of the reasons for the complexity of the rules of word-breaking is that different 'dialects' of English tend to differ on the rule: American English tends to work on sound, while British English tends to look to the origins of the word and then to sound. There are also a large number of exceptions which further complicates matters.
Some rules of thumb can be found in the reference 'On Hyphenation - Anarchy of Pedantry.' Among algorithmic approaches to hyphenation, the one implemented in the TeX typesetting system is widely used. It is thoroughly documented in the first two volumes of Computers and Typesetting and in Frank Liang's dissertation. Contrary to the belief that TeX relies on a large dictionary of exceptions, the point of Liang's work was to get the algorithm as accurate as he practically could and keep any exception dictionary small. In TeX's original hyphenation patterns for US English, the exception list contains fourteen words.
Ports of the TeX hyphenation algorithm are available as libraries for several programming languages, including Perl, Ruby, and PostScript.
[edit] References
- On Hyphenation - Anarchy of Pedantry. PC Update, the magazine of Melbourne PC User Group, Australia. Retrieved on October 6, 2005.
- Liang, Franklin Mark (1983). "Word Hy-phen-a-tion by Com-put-er". . Stanford University
- TeX-Hyphen. Comprehensive Perl Archive Network. Retrieved on October 18, 2005.
- text-hyphen. RubyForge. Retrieved on October 18, 2005.
- Knuth-Liang hyphenation for the PostScript language. anastigmatix.net. Retrieved on October 6, 2005.
- TeXHyphenator-J: TeX Hyphenator in Java. Retrieved on September 14, 2006.
- Hyphenation in Python, using Frank Liang's algorithm. Retrieved on July 10, 2007.
- Hyphenator.js-Hyphenation in JavaScript, using Frank Liang's algorithm. Retrieved on January 3, 2008.

