Affects Version/s: trunk
Fix Version/s: None
Environment:Operating System: All
External issue ID:49687
This patch adds support for complex scripts, starting with Arabic. Included in this patch are:
- support for XSL FO 1.1 Section 5.8 Unicode BIDI Processing
- generic support for TrueType and OpenType advanced typography tables
- support for OpenType GSUB table (partial)
- support for OpenType GPOS table (partial)
- support for Arabic specific script processing
This patch should be considered preliminary support for the above features. Not all aspects of these features are implemented or tested. In particular, only three Microsoft Arabic fonts have been (partially) tested:
- Simplified Arabic (simpo.ttf)
- Simplified Arabic Bold (simbdo.ttf)
- Arial Unicode MS (arialuni.ttf)
Certain important functions needed to adequately support Arabic are not yet in place. In particular, the following either do not work or work only partially:
- writing-mode relative properties
- glyph positioning of non-spacing marks
- arabic fonts that require use of multiple, context, or chained context subtable types
Notwithstanding the above limitations, basic Arabic content is adequately processed and formatted provided that the above fonts are used without non-spacing marks, and with explicit text-align="right" at the fo:block level (or above). Note also that only simple inline content has been tested thus far in bidi block contexts, namely #PCDATA and fo:inline; support for the remaining inline FOs in a bidi context must await further improvements to this patch.
Because this patch involves modification or addition of nearly 150 files in the core sources, I recommend that a temporary branch be created in order to permit further maturation, and, in particular, to allow me time to add test suites, enhancements, and bug fixes prior to merging into the main development trunk.
Both findbugs and checkstyle have been run against the patch with no new warnings or errors; PMD has not been run. Actually some checkstyle warnings in the trunk have been fixed by this patch. Note also the addition of findbugs-exclude.xml and checkstyle-suppressions.xml at the top-level directory, which are used to filter blessed warnings.
Note further that one existing layout engine test file has been disabled due to dependencies on an incorrect prior implementation of the writing-mode property:
I will be adding a complete set of tests on the writing-mode property before I propose merging with trunk. Three other tests were modified slightly to account for defaulting of the offset attribute on word and space elements in the XML area tree output.
This patch takes the form of a diff file produced by using the 'svn diff' command against revision 981406 of the trunk.