Features/Platform/Graphite font shaping
|Support the Graphite font shaping technology|
|Status note||Patches for integration in Gecko currently under review. Very low priority right now.|
|Product manager||Chris Blizzard|
|Directly Responsible Individual||`|
|Lead engineer||Jonathan Kew|
|Product marketing lead||`|
|Additional members||John Daggett|
The Graphite shaping library includes a small, limited-functionality virtual machine that executes shaping instructions in the fonts. This could represent a potential attack surface (via maliciously-crafted web fonts), and needs to be reviewed and tested for robustness.
Stage 1: Definition
1. Feature overview
Graphite is a "smart font" technology developed by SIL International to provide support for languages/scripts with complex shaping requirements - contextual glyph changes, positioning, etc. Unlike the OpenType model used in Uniscribe, Harfbuzz, etc, it does not require script-specific behavior to be coded in per-script "shaping engines", but puts full control into the hands of the font developer.
This means that Graphite allows user communities to implement their script by creating a suitable font *without* being dependent on Microsoft to define shaping engine and OpenType feature specifications for the script. This is particularly valuable for minority groups whose script may not be well standardized, and where major industry players have little interest in developing support.
2. Users & use cases
Graphite support is targeted primarily at minority-language user communities in South-East Asia and other areas where complex writing systems are used, and industry standards are still a long way from providing adequate support. Examples include minority groups in Myanmar (Burma) using variants of Burmese script and communities in Thailand using the Lanna script.
Graphite is also likely to be valuable in implementing scripts such as SignWriting, used by some sign-language communities.
In addition, Graphite can be used by font designers to provide improved support for complex behaviors such as calligraphic styles and placement of multiple diacritics even in "simple" scripts.
The Graphite2 library: http://projects.palaso.org/projects/graphitedev
The presence of Graphite support must not regress behavior or performance for non-Graphite fonts.
Rendering text with a Graphite font should have equivalent performance to rendering with an OpenType font of similar complexity. (Dual-technology fonts such as Charis SIL could be used to compare.)
Stage 2: Design
5. Functional specification
When rendering text using a font that has Graphite tables, use the Graphite shaper instead of Harfbuzz to handle glyph layout. Such text should render identically to other Graphite-enabled applications such as OpenOffice or FieldWorks.
6. User experience design
Stage 3: Planning
7. Implementation plan
Quality Assurance review
Stage 4: Development
Stage 5: Release
10. Landing criteria
|Theme / Goal||`|
Team status notes
|Security||sec-review-complete||Complete: 3 Oct 2011 Notes|