HyFo is a stand-alone hyphenation program based on the hyphenation
pattern files of TeX, as are most, if not all, open source
hyphenation programs. The seminal paper for all of this activity
was published by Frank Liang in 1983.
Frank Liang, Word
hy-phen-a-tion by com-puter, Stanford University Ph.D. thesis, 1983.
System Requirements
Execution requires a Java 5 JRE, or later. Development requires a
Java 5 JDK, or later. This release was compiled using NetBeans 5.5
running on the Sun Java 1.5.0_09 JDK.
Features
- HyFo supports patterns embedding re-spelling hyphenation, such as
are required in Dutch, Hungarian, Swedish, Catalan and pre-reform
German orthography. These are the hyphenations expressed by the TeX
discretionary hyphenation facility. This feature is currently active
only in the Hungarian patterns, and in a special versions of the
GB and US files with the variant "_18", that is, the
hyphenation trees en_US_18 and en_GB_18.
- HyFo hyphenation is fast; more than 50% faster than the Fop
hyphenator. HyFo trades off memory usage and one-off start-up time
against the speed of hypenating individual instances.
- Easy quarantining of unacceptable licences from your application.
Because the hyphenation trees, built from individual language pattern
files, are themselves stand-alone, users can pick and choose the
pattern jars they wish to install, insulating applications from the
effects of particular licences.
- No rebuilding required to add new pre-built hyphenation pattern
trees. Adding a new pre-compiled hyphenation instance is as simple
as dropping a new language jar onto the classpath.
- Integration with Java 2D text processing is provided. The class
au.id.pbw.hyfo.hyph.HyphenMarker
extends
java.text.AttributedCharacterIterator.Attribute
.
- The HyFo API includes methods to present hyphenation results in
a FOP-compatible manner.
- HyFo supports alphabets containing supplementary Unicode
characters. There are no known requirements for Liang-style pattern
hyphenation of such alphabets.
Documentation
The primary documentation is the Javadocs. A good starting point is
the package description of the au.id.pbw.hyfo.hyph
package.