Features/Platform/Graphite font shaping

From MozillaWiki
Jump to: navigation, search
Please use "Edit with form" above to edit this page.

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 ` `