--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "document-v20.dtd">
+<document>
+ <header>
+ <title>Apache™ FOP: Complex Scripts</title>
+ </header>
+ <body id="complex_scripts">
+ <section id="overview">
+ <title>Overview</title>
+ <p>
+ This page describes the
+ <a href="http://en.wikipedia.org/wiki/Complex_scripts">complex scripts</a>
+ features of Apache™ FOP, which include:
+ </p>
+ <ul>
+ <li>Support for languages written with right-to-left scripts, such as Arabic and Hebrew scripts.</li>
+ <li>Support for languages written with South Asian and Southeast Asian scripts, such as Devanagari,
+ Khmer, Tamil, Thai, and others.</li>
+ <li>Support for advanced substitution, reordering, and positioning of glyphs according to language
+ and script sensitive rules.</li>
+ <li>Support for advanced number to string formatting.</li>
+ </ul>
+ </section>
+ <section>
+ <title>Disabling complex scripts</title>
+ <p>Complex script features are enabled by default. If some application of FOP does not
+ require this support, then it can be disabled in three ways:</p>
+ <ol>
+ <li>
+ <strong>Command line:</strong> The command line option <code>-nocs</code> turns off complex script
+ features: <code>fop -nocs -fo mydocument.fo -pdf mydocument.pdf</code>
+ </li>
+ <li>
+ <strong>Embedding:</strong> <code>userAgent.setComplexScriptFeaturesEnabled(false);</code>
+ </li>
+ <li>
+ <strong>Optional setting in fop.xconf file:</strong>
+ <pre>
+<fop version="1.0">
+ <complex-scripts disabled="true"/>
+ ...
+</fop>
+ </pre>
+ </li>
+ </ol>
+ <p>
+ When complex scripts features are enabled, additional information related to bidirectional
+ level resolution, the association between characters and glyphs, and glyph position adjustments
+ are added to the internal, parsed representation of the XSL-FO tree and its corresponding
+ formatted area tree. This additional information will somewhat increase the memory requirements for
+ processing documents that use these features.
+ </p>
+ <note>A document author need not make explicit use of any complex scripts feature in order
+ for this additional information to be created. For example, if the author makes use of a font
+ that contains OpenType GSUB and/or GPOS tables, then those tables will be automatically used
+ unless complex scripts features are disabled.</note>
+ </section>
+ <section id="source">
+ <title>Changes to your XSL-FO input files</title>
+ <p>
+ In most circumstances, XSL-FO content does not need to change in order to make use of
+ complex scripts features; however, in certain contexts, fully automatic processing is not
+ sufficient. In these cases, an author may make use of the following XSL-FO constructs:
+ </p>
+ <ul>
+ <li>The <code>script</code> property.</li>
+ <li>The <code>language</code> property.</li>
+ <li>The <code>writing-mode</code> property.</li>
+ <li>The number to string conversion properties:
+ <code>format</code>,
+ <code>grouping-separator</code>,
+ <code>grouping-separator</code>,
+ <code>grouping-size</code>,
+ <code>letter-value</code>,
+ and <code>fox:number-conversion-features</code>.</li>
+ <li>The <code>fo:bidi-override</code> element.</li>
+ <li>Explicit bidirectional control characters: U+200E LRM, U+200F RLM, U+202A LRE,
+ U+202B RLE, U+202C PDF, U+202D LRO, U+202E RLO.</li>
+ <li>Explicit join control characters: U+200C ZWNJ and U+200D ZWJ.</li>
+ </ul>
+ </section>
+ <section id="details">
+ <title>Authoring Details</title>
+ <p>The complex scripts related effects of the above enumerated XSL-FO constructs are more
+ fully described in the following sub-sections.</p>
+ <section id="script_property">
+ <title>Script Property</title>
+ <p>In order to apply font specific complex script features, it is necessary to know
+ the script that applies to the text undergoing layout processing. This script is determined
+ using the following algorithm:
+ </p>
+ <ol>
+ <li>If the FO element that governs the text specifies a
+ <a href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#script"><code>script</code></a>
+ property and its value is not the empty string or <code>"auto"</code>, then that script is used.</li>
+ <li>Otherwise, the dominant script of the text is determined automatically by finding the
+ script whose constituent characters appear most frequently in the text.</li>
+ </ol>
+ <p>In case the automatic algorithm does not produce the desired results, an author may
+ explicitly specify a <code>script</code> property with the desired script. If specified,
+ it must be one of the four-letter script code specified in
+ <a href="http://unicode.org/iso15924/iso15924-codes.html">ISO 15924 Code List</a> or
+ in the <a href="#extended_script_codes">Extended Script Codes</a> table. Comparison
+ of script codes is performed in a case-insensitive manner, so it does not matter what case
+ is used when specifying these codes in an XSL-FO document.</p>
+ <section id="standard_script_codes">
+ <title>Standard Script Codes</title>
+ <p>The following table enumerates the standard ISO 15924 4-letter codes recognized by FOP.</p>
+ <table class="ForrestTable tw30">
+ <tr>
+ <th style="text-align:center">Code</th>
+ <th style="text-align:left">Script</th>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>arab</code></td>
+ <td>Arabic</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>beng</code></td>
+ <td>Bengali</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>bopo</code></td>
+ <td>Bopomofo</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>cyrl</code></td>
+ <td>Cyrillic</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>deva</code></td>
+ <td>Devanagari</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>ethi</code></td>
+ <td>Ethiopic</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>geor</code></td>
+ <td>Georgian</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>grek</code></td>
+ <td>Greek</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>gujr</code></td>
+ <td>Gujarati</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>guru</code></td>
+ <td>Gurmukhi</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>hang</code></td>
+ <td>Hangul</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>hani</code></td>
+ <td>Han</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>hebr</code></td>
+ <td>Hebrew</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>hira</code></td>
+ <td>Hiragana</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>kana</code></td>
+ <td>Katakana</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>knda</code></td>
+ <td>Kannada</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>khmr</code></td>
+ <td>Khmer</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>laoo</code></td>
+ <td>Lao</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>latn</code></td>
+ <td>Latin</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>mlym</code></td>
+ <td>Malayalam</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>mymr</code></td>
+ <td>Burmese</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>mong</code></td>
+ <td>Mongolian</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>orya</code></td>
+ <td>Oriya</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>sinh</code></td>
+ <td>Sinhalese</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>taml</code></td>
+ <td>Tamil</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>telu</code></td>
+ <td>Telugu</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>thai</code></td>
+ <td>Thai</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>tibt</code></td>
+ <td>Tibetan</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>zmth</code></td>
+ <td>Math</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>zsym</code></td>
+ <td>Symbol</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>zyyy</code></td>
+ <td>Undetermined</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>zzzz</code></td>
+ <td>Uncoded</td>
+ </tr>
+ </table>
+ </section>
+ <section id="extended_script_codes">
+ <title>Extended Script Codes</title>
+ <p>The following table enumerates a number of non-standard extended script codes recognized by FOP.</p>
+ <table class="ForrestTable tw70">
+ <colgrp>
+ <col style="width:10%"/>
+ <col style="width:20%"/>
+ <col style="width:80%"/>
+ </colgrp>
+ <tr>
+ <th>Code</th>
+ <th>Script</th>
+ <th>Comments</th>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>bng2</code></td>
+ <td>Bengali</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>dev2</code></td>
+ <td>Devanagari</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>gur2</code></td>
+ <td>Gurmukhi</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>gjr2</code></td>
+ <td>Gujarati</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>knd2</code></td>
+ <td>Kannada</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>mlm2</code></td>
+ <td>Malayalam</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>ory2</code></td>
+ <td>Oriya</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>tml2</code></td>
+ <td>Tamil</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ <tr>
+ <td style="text-align:center"><code>tel2</code></td>
+ <td>Telugu</td>
+ <td>OpenType Indic Version 2 (May 2008 and following) behavior.</td>
+ </tr>
+ </table>
+ <warning>
+ Explicit use of one of the above extended script codes is not portable,
+ and should be limited to use with FOP only.
+ </warning>
+ <note>
+ When performing automatic script determination, FOP selects the OpenType Indic
+ Version 2 script codes by default. If the author requires Version 1 behavior, then
+ an explicit, non-extension script code should be specified in a governing <code>script</code>
+ property.
+ </note>
+ </section>
+ </section>
+ <section id="language_property">
+ <title>Language Property</title>
+ <p>Certain fonts that support complex script features can make use of language information in order for
+ language specific processing rules to be applied. For example, a font designed for the Arabic script may support
+ typographic variations according to whether the written language is Arabic, Farsi (Persian), Sindhi, Urdu, or
+ another language written with the Arabic script. In order to apply these language specific features, the author
+ may explicitly mark the text with a <a href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#language"><code>language</code></a>
+ property.</p>
+ <p>When specifying the <code>language</code> property, the value of the property must be either an
+ <a href="http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes">ISO639-2 3-letter code</a> or an
+ <a href="http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO639-1 2-letter code</a>. Comparison of language
+ codes is performed in a case-insensitive manner, so it does not matter what case is used when specifying these
+ codes in an XSL-FO document.</p>
+ </section>
+ <section id="writing_mode_property">
+ <title>Writing Mode Property</title>
+ </section>
+ <section id="number_conversion_properties">
+ <title>Number Conversion Properties</title>
+ </section>
+ <section id="bidi_override_element">
+ <title>Bidi Override Element</title>
+ </section>
+ <section id="bidi_controls">
+ <title>Bidi Control Characters</title>
+ </section>
+ <section id="join_controls">
+ <title>Join Control Characters</title>
+ </section>
+ </section>
+ <section id="supported_scripts">
+ <title>Supported Scripts</title>
+ <p>Support for specific complex scripts is enumerated in the following table. Support
+ for those marked as not being supported is expected to be added in future revisions.</p>
+ <table class="ForrestTable tw80">
+ <colgrp>
+ <col style="width: 15%"/>
+ <col style="width: 10%"/>
+ <col style="width: 10%"/>
+ <col style="width: 65%"/>
+ </colgrp>
+ <tr>
+ <th style="text-align:left">Script</th>
+ <th>Support</th>
+ <th>Tested</th>
+ <th style="text-align:left">Comments</th>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Arabic_alphabet">Arabic</a></td>
+ <td class="yes">full</td>
+ <td class="yes">full</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Bengali_alphabet">Bengali</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Burmese_alphabet">Burmese</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Devanagari_alphabet">Devanagari</a></td>
+ <td class="partial">partial</td>
+ <td class="partial">partial</td>
+ <td style="text-align:left">join controls (ZWJ, ZWNJ) not yet supported</td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Khmer_alphabet">Khmer</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Gujarati_alphabet">Gujarati</a></td>
+ <td class="partial">partial</td>
+ <td class="no">none</td>
+ <td style="text-align:left">pre-alpha</td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Gurmukhī_alphabet">Gurmukhi</a></td>
+ <td class="partial">partial</td>
+ <td class="no">none</td>
+ <td style="text-align:left">pre-alpha</td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Hebrew_alphabet">Hebrew</a></td>
+ <td class="yes">full</td>
+ <td class="partial">partial</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Kannada_alphabet">Kannada</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Lao_alphabet">Lao</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Malayalam_alphabet">Malayalam</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Mongolian_script">Mongolian</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Oriya_script">Oriya</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Tamil_alphabet">Tamil</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Telugu_alphabet">Telugu</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Tibetan_alphabet">Tibetan</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="http://en.wikipedia.org/wiki/Thai_alphabet">Thai</a></td>
+ <td class="no">none</td>
+ <td class="no">none</td>
+ <td></td>
+ </tr>
+ </table>
+ </section>
+ <section id="supported_fonts">
+ <title>Supported Fonts</title>
+ <p>Support for specific fonts is enumerated in the following sub-sections. If a given
+ font is not listed, then it has not been tested with these complex scripts features.</p>
+ <section id="fonts_arabic">
+ <title>Arabic Fonts</title>
+ <table class="ForrestTable tw80">
+ <colgrp>
+ <col style="width: 15%"/>
+ <col style="width: 10%"/>
+ <col style="width: 10%"/>
+ <col style="width: 65%"/>
+ </colgrp>
+ <tr>
+ <th style="text-align:left">Font</th>
+ <th style="text-align:left">Version</th>
+ <th style="text-align:center">Glyphs</th>
+ <th style="text-align:left">Comments</th>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=24">Arial Unicode MS</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1081">1.01</a></td>
+ <td style="text-align:center">50377</td>
+ <td>limited GPOS support</td>
+ </tr>
+ <tr>
+ <td><a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ArabicFonts">Lateef</a></td>
+ <td class="yes" style="text-align:left">1.0</td>
+ <td style="text-align:center">1147</td>
+ <td>language features for Kurdish (KUR), Sindhi (SND), Urdu (URD)</td>
+ </tr>
+ <tr>
+ <td><a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ArabicFonts">Scheherazade</a></td>
+ <td class="yes" style="text-align:left">1.0</td>
+ <td style="text-align:center">1197</td>
+ <td>language features for Kurdish (KUR), Sindhi (SND), Urdu (URD)</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=261">Simplified Arabic</a></td>
+ <td class="no" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=867">1.01</a></td>
+ <td/>
+ <td>contains invalid, out of order coverage table entries</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/font.aspx?FID=261">Simplified Arabic</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1645">5.00</a></td>
+ <td style="text-align:center">414</td>
+ <td>lacks GPOS support</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/font.aspx?FID=261">Simplified Arabic</a></td>
+ <td class="yes" style="text-align:left">5.92</td>
+ <td style="text-align:center">473</td>
+ <td>includes GPOS for advanced position adjustment</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=264">Traditional Arabic</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/family.aspx?FMID=877">1.01</a></td>
+ <td style="text-align:center">530</td>
+ <td>lacks GPOS support</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/font.aspx?FID=264">Traditional Arabic</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1658">5.00</a></td>
+ <td style="text-align:center">530</td>
+ <td>lacks GPOS support</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/font.aspx?FID=264">Traditional Arabic</a></td>
+ <td class="yes" style="text-align:left">5.92</td>
+ <td style="text-align:center">589</td>
+ <td>includes GPOS for advanced position adjustment</td>
+ </tr>
+ </table>
+ </section>
+ <section id="devanagari_fonts">
+ <title>Devanagari Fonts</title>
+ <table class="ForrestTable tw80">
+ <colgrp>
+ <col style="width: 15%"/>
+ <col style="width: 10%"/>
+ <col style="width: 10%"/>
+ <col style="width: 65%"/>
+ </colgrp>
+ <tr>
+ <th style="text-align:left">Font</th>
+ <th style="text-align:left">Version</th>
+ <th style="text-align:center">Glyphs</th>
+ <th style="text-align:left">Comments</th>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=370">Aparajita</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1700">1.00</a></td>
+ <td style="text-align:center">706</td>
+ <td/>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=374">Kokila</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1749">1.00</a></td>
+ <td style="text-align:center">706</td>
+ <td/>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=243">Mangal</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1759">5.01</a></td>
+ <td style="text-align:center">885</td>
+ <td>designed for use in user interfaces</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=384">Utsaah</a></td>
+ <td class="yes" style="text-align:left"><a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1811">1.00</a></td>
+ <td style="text-align:center">706</td>
+ <td/>
+ </tr>
+ </table>
+ </section>
+ </section>
+ <section id="limitations">
+ <title>Other Limitations</title>
+ <p>
+ Complex scripts support in Apache FOP is relatively new, so there are certain
+ limitations. Please help us identify and close any gaps.
+ </p>
+ <ul>
+ <li>Only the PDF output format fully supports complex scripts features at the present time.</li>
+ <li>Shaping context does not extend across an element boundary. This limitation prevents the use of
+ <code>fo:character</code>, <code>fo:inline</code> or <code>fo:wrapper</code> in order to colorize
+ individual Arabic letters without affecting shaping behavior across the element boundary.</li>
+ </ul>
+ </section>
+ <section id="links">
+ <title>Related Links</title>
+ <p>
+ In addition to the XSL-FO specification, a number of external resources provide
+ guidance about authoring documents that employ complex scripts and the features
+ described above:
+ </p>
+ <ul>
+ <li><a href="http://www.unicode.org/">The Unicode Standard</a></li>
+ <li><a href="http://www.microsoft.com/typography/otspec/ttochap1.htm">OpenType Advanced Typographic Extensions</a></li>
+ <li><a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=CmplxRndExamples">Examples of Complex Rendering</a></li>
+ </ul>
+ </section>
+ </body>
+</document>