Features/Platform/Graphite font shaping
Status
Support the Graphite font shaping technology | |
Stage | Development |
Status | In progress |
Release target | ` |
Health | OK |
Status note | Patches for integration in Gecko currently under review. Very low priority right now. |
Team
Product manager | Chris Blizzard |
Directly Responsible Individual | ` |
Lead engineer | Jonathan Kew |
Security lead | ` |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | ` |
UX lead | ` |
Product marketing lead | ` |
Operations lead | ` |
Additional members | John Daggett |
Open issues/risks
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[1] 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[2] 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.
[1] http://scripts.sil.org/RenderingGraphite
[2] http://www.microsoft.com/typography/SpecificationsOverview.mspx
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[3] and communities in Thailand using the Lanna script.[4]
Graphite is also likely to be valuable in implementing scripts such as SignWriting[5], 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.
[3] http://scriptsource.org/scr/Mymr
[4] http://scriptsource.org/scr/Lana
[5] http://en.wikipedia.org/wiki/SignWriting
3. Dependencies
The Graphite2 library: http://projects.palaso.org/projects/graphitedev
4. Requirements
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.)
Non-goals
`
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
`
8. Reviews
Security review
`
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
`
Operations review
`
Stage 4: Development
9. Implementation
https://bugzilla.mozilla.org/show_bug.cgi?id=631479
Stage 5: Release
10. Landing criteria
`
Feature details
Priority | P3 |
Rank | 999 |
Theme / Goal | ` |
Roadmap | ` |
Secondary roadmap | ` |
Feature list | Platform |
Project | ` |
Engineering team | Graphics |
Team status notes
status | notes | |
Products | ` | ` |
Engineering | ` | ` |
Security | sec-review-complete | Complete: 3 Oct 2011 Notes |
Privacy | ` | ` |
Localization | ` | ` |
Accessibility | ` | ` |
Quality assurance | ` | ` |
User experience | ` | ` |
Product marketing | ` | ` |
Operations | ` | ` |