| Hyphenation |
| |
| FOP uses Liang's hyphenation algorithm, well known from TeX. It needs |
| language specific patterns and other data for operation. |
| |
| Because of licensing issues (and for convenience), all hyphenation |
| patterns for FOP are made available through the Objects For Formatting |
| Objects project <http://offo.sourceforge.net/hyphenation/index.html>. |
| |
| To install a custom hyphenation pattern for use with FOP: |
| |
| 1. Convert the TeX hyphenation pattern file to the FOP format. The FOP |
| format is an xml file conforming to the DTD found at |
| {fop-dir}/hyph/hyphenation.dtd. |
| |
| The most important source of TeX hyphenation pattern files is the |
| CTAN TeX Archive |
| <http://www.ctan.org/tex-archive/language/hyphenation/>. |
| |
| 2. Name this new file following this scheme: |
| languageCode_countryCode.xml. The country code is optional, and |
| should be used only if needed. For example: |
| - en_US.xml would be the file name for American English hyphenation |
| patterns, |
| - it.xml would be the file name for Italian hyphenation patterns. |
| |
| The language and country codes must match the XSL-FO input, which |
| follows ISO 639 |
| <http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt> |
| (languages) and ISO 3166 |
| <http://www.ics.uci.edu/pub/ietf/http/related/iso3166.txt> |
| (countries). |
| |
| NOTE: The ISO 639/ISO 3166 convention is that language names are |
| written in lower case, while country codes are written in upper |
| case. |
| |
| FOP does not check whether the language and country specified in |
| the FO source are actually from the current standard, but it relies |
| on it being two letter strings in a few places. So you can make up |
| your own codes for custom hyphenation patterns, but they should be |
| two letter strings too (patches for proper handling extensions are |
| welcome) |
| |
| 3. There are basically three ways to make the FOP-compatible |
| hyphenation pattern file(s) accessible to FOP: |
| |
| a. Download the precompiled JAR from OFFO |
| <http://offo.sourceforge.net/hyphenation/index.html> and place it |
| either in the {fop-dir}/lib directory, or in a directory of your |
| choice (and append the full path to the JAR to the environment |
| variable FOP_HYPHENATION_PATH). |
| |
| b. Download the desired FOP-compatible hyphenation pattern file(s) from |
| OFFO <http://offo.sourceforge.net/hyphenation/index.html>, and/or |
| take your self created hyphenation pattern file(s), |
| - place them in the directory {fop-dir}/hyph, |
| - or place them in a directory of your choice and set the Ant |
| variable user.hyph.dir to point to that directory (in |
| build-local.properties), |
| and run Ant with build target jar-hyphenation. This will create a |
| JAR containing the compiled patterns in {fop-dir}/build that will |
| be added to the classpath on the next run. |
| |
| When FOP is built from scratch, and there are pattern source |
| file(s) present in the directory pointed to by the user.hyph.dir |
| variable, this JAR will automatically be created from the supplied |
| pattern(s). |
| |
| c. Put the pattern source file(s) into a directory of your choice and |
| configure FOP to look for custom patterns in this directory, by |
| setting the hyphenation-dir configuration option. |
| |
| Either of these three options will ensure hyphenation is working |
| when using FOP from the command-line. If FOP is being embedded, |
| remember to add the location(s) of the hyphenation JAR(s) to the |
| CLASSPATH (option 1 and 2) or to set the hyphenation-dir |
| configuration option programmatically (option 3). |
| |
| If you would like to build your own hyphenation pattern files, or |
| modify existing ones, the section entitled 'Hyphenation Patterns' of |
| the 'FOP: Hyphenation' page at the FOP web site |
| <http://xmlgraphics.apache.org/fop/hyphenation.html#patterns> will |
| help you understand how to do so. Even when creating a pattern file |
| from scratch, it may be beneficial to start with an existing file and |
| modify it. See OFFO's Hyphenation page |
| <http://offo.sourceforge.net/hyphenation/index.html> for examples. |
| |
| If you have made improvements to an existing FOP hyphenation pattern, |
| or if you have created one from scratch, please consider contributing |
| these to OFFO so that they can benefit other FOP users as well. |
| Please inquire on the FOP User mailing list. |
| |