| <?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> |
| <section id="overview"> |
| <title>Overview</title> |
| <p> |
| This page describes the |
| <link href="http://en.wikipedia.org/wiki/Complex_scripts">complex scripts</link> |
| 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 <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#script"><code>script</code></link> property.</li> |
| <li>The <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#language"><code>language</code></link> property.</li> |
| <li>The <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#writing-mode"><code>writing-mode</code></link> property.</li> |
| <li>The number to string conversion properties: |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#format"><code>format</code></link>, |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#grouping-separator"><code>grouping-separator</code></link>, |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#grouping-size"><code>grouping-size</code></link>, |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#letter-value"><code>letter-value</code></link>, |
| and <code>fox:number-conversion-features</code>.</li> |
| <li>The <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#fo_bidi-override"><code>fo:bidi-override</code></link> 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 |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#script"><code>script</code></link> |
| 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 |
| <link href="http://unicode.org/iso15924/iso15924-codes.html">ISO 15924 Code List</link> or |
| in the <link href="#extended_script_codes">Extended Script Codes</link> 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 <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#language"><code>language</code></link> |
| property.</p> |
| <p>When specifying the <code>language</code> property, the value of the property must be either an |
| <link href="http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes">ISO639-2 3-letter code</link> or an |
| <link href="http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO639-1 2-letter code</link>. 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> |
| <p>The <code>writing-mode</code> property is used to determine the axes and direction of the inline |
| progression direction, the block progression direction, the column progression direction (in tables |
| and flows), the shift direction, region placement, the resolution of writing-mode relative property |
| values (such as start, end, before, after), and the default block (paragraph) bidirectionality |
| level. |
| </p> |
| <p>The <code>writing-mode</code> property is inherited, so it can appear on any XSL-FO element type; however, |
| it applies (semantically) only to the following element types: |
| </p> |
| <ul> |
| <li><code>fo:page-sequence</code></li> |
| <li><code>fo:simple-page-master</code></li> |
| <li><code>fo:region-*</code></li> |
| <li><code>fo:block-container</code></li> |
| <li><code>fo:inline-container</code></li> |
| <li><code>fo:table</code></li> |
| </ul> |
| <p>If it is not specified on one of these element types, but is specified on an ancestor element, then the value specified on that |
| ancestor element (the inherited value) is used; otherwise, the initial value <code>lr-tb</code> is used.</p> |
| <p>At present, only the following values of the <code>writing-mode</code> property are supported:</p> |
| <ul> |
| <li><code>lr-tb</code></li> |
| <li><code>rl-tb</code></li> |
| <li><code>lr</code></li> |
| <li><code>rl</code></li> |
| </ul> |
| <p>Writing modes that employ a vertical inline progression direction are not yet supported.</p> |
| </section> |
| <!-- [TBD] - NEED TO DOCUMENT |
| <section id="number_conversion_properties"> |
| <title>Number Conversion Properties</title> |
| </section> |
| --> |
| <section id="bidi_override_element"> |
| <title>Bidi Override Element</title> |
| <p>The <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#fo_bidi-override"><code>fo:bidi-override</code></link> |
| element may be used to override default bidirectional processing behavior, |
| including default embedding levels and default character directionality. In the absence of either this element |
| or use of explicit <link href="#bidi_controls">Bidi Control Characters</link>, the default behavior prescribed |
| by the <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#fo_bidi-override">Unicode Bidirectional Algorithm</link> |
| applies. |
| </p> |
| </section> |
| <section id="bidi_controls"> |
| <title>Bidi Control Characters</title> |
| <p>In addition to the use of the <link href="#bidi_override_element">Bidi Override Element</link>, an author |
| may make use of the following explicit Unicode Bidi Control Characters:</p> |
| <ul> |
| <li>U+200E - LEFT-TO-RIGHT MARK (LRM)</li> |
| <li>U+200F - RIGHT-TO-LEFT MARK (RLM)</li> |
| <li>U+202A - LEFT-TO-RIGHT EMBEDDING (LRE)</li> |
| <li>U+202B - RIGHT-TO-LEFT EMBEDDING (RLE)</li> |
| <li>U+202C - POP DIRECTIONAL FORMATTING (PDF)</li> |
| <li>U+202D - LEFT-TO-RIGHT OVERRIDE (LRO)</li> |
| <li>U+202E - RIGHT-TO-LEFT OVERRIDE (RLO)</li> |
| </ul> |
| <p>If an embedding or override is not terminated (using U+202C PDF) prior to the end of a |
| <link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#d0e4879">delimited text range</link>, |
| then it is automatically terminated by FOP. |
| </p> |
| </section> |
| <section id="join_controls"> |
| <title>Join Control Characters</title> |
| <p>In order to prevent joining behavior in contexts where joining occurs by default, |
| for example, between U+0628 ARABIC LETTER BEH and U+0646 ARABIC LETTER NOON, |
| an author may used a U+200C ZERO WIDTH NON-JOINER (ZWNJ). |
| </p> |
| <p>Conversely, in order to force joining behavior in contexts where joining does not occur by default, |
| for example, between U+0628 ARABIC LETTER BEH and U+0020 SPACE, an author may used a U+200D ZERO WIDTH JOINER (ZWJ). |
| </p> |
| <p>The behavior of ZWNJ and ZWJ is script specific. See |
| <link href="http://www.unicode.org/versions/Unicode6.1.0/ch08.pdf">The Unicode Standard, Chapter 8, |
| Middle Eastern Scripts</link> for information on the use of these control characters with the Arabic |
| script. See |
| <link href="http://www.unicode.org/versions/Unicode6.1.0/ch09.pdf">The Unicode Standard, Chapter 9, |
| South Asian Scripts - I</link> for information on the use of these control characters with common |
| Indic scripts. |
| </p> |
| </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> |
| <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><link href="http://en.wikipedia.org/wiki/Arabic_alphabet">Arabic</link></td> |
| <td class="yes">full</td> |
| <td class="yes">full</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Bengali_alphabet">Bengali</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Burmese_alphabet">Burmese</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Devanagari_alphabet">Devanagari</link></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><link href="http://en.wikipedia.org/wiki/Khmer_alphabet">Khmer</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Gujarati_alphabet">Gujarati</link></td> |
| <td class="partial">partial</td> |
| <td class="no">none</td> |
| <td style="text-align:left">pre-alpha</td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Gurmukhī_alphabet">Gurmukhi</link></td> |
| <td class="partial">partial</td> |
| <td class="no">none</td> |
| <td style="text-align:left">pre-alpha</td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Hebrew_alphabet">Hebrew</link></td> |
| <td class="yes">full</td> |
| <td class="partial">partial</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Kannada_alphabet">Kannada</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Lao_alphabet">Lao</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Malayalam_alphabet">Malayalam</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Mongolian_script">Mongolian</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Oriya_script">Oriya</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Tamil_alphabet">Tamil</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Telugu_alphabet">Telugu</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Tibetan_alphabet">Tibetan</link></td> |
| <td class="no">none</td> |
| <td class="no">none</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td><link href="http://en.wikipedia.org/wiki/Thai_alphabet">Thai</link></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> |
| <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><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=24">Arial Unicode MS</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1081">1.01</link></td> |
| <td style="text-align:center">50377</td> |
| <td>limited GPOS support</td> |
| </tr> |
| <tr> |
| <td><link href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ArabicFonts">Lateef</link></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><link href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ArabicFonts">Scheherazade</link></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><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=261">Simplified Arabic</link></td> |
| <td class="no" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=867">1.01</link></td> |
| <td/> |
| <td>contains invalid, out of order coverage table entries</td> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/font.aspx?FID=261">Simplified Arabic</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1645">5.00</link></td> |
| <td style="text-align:center">414</td> |
| <td>lacks GPOS support</td> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/font.aspx?FID=261">Simplified Arabic</link></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><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=264">Traditional Arabic</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/family.aspx?FMID=877">1.01</link></td> |
| <td style="text-align:center">530</td> |
| <td>lacks GPOS support</td> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/font.aspx?FID=264">Traditional Arabic</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1658">5.00</link></td> |
| <td style="text-align:center">530</td> |
| <td>lacks GPOS support</td> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/font.aspx?FID=264">Traditional Arabic</link></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> |
| <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><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=370">Aparajita</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1700">1.00</link></td> |
| <td style="text-align:center">706</td> |
| <td/> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=374">Kokila</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1749">1.00</link></td> |
| <td style="text-align:center">706</td> |
| <td/> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=243">Mangal</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1759">5.01</link></td> |
| <td style="text-align:center">885</td> |
| <td>designed for use in user interfaces</td> |
| </tr> |
| <tr> |
| <td><link href="http://www.microsoft.com/typography/fonts/family.aspx?FID=384">Utsaah</link></td> |
| <td class="yes" style="text-align:left"><link href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1811">1.00</link></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><link href="http://www.unicode.org/">The Unicode Standard</link></li> |
| <li><link href="http://www.w3.org/TR/2006/REC-xsl11-20061205/#fo_bidi-override">Unicode Bidirectional Algorithm</link></li> |
| <li><link href="http://www.microsoft.com/typography/otspec/ttochap1.htm">OpenType Advanced Typographic Extensions</link></li> |
| <li><link href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=CmplxRndExamples">Examples of Complex Rendering</link></li> |
| </ul> |
| </section> |
| </body> |
| </document> |