Platform/Features/Vertical text: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (Initial version)
 
m (Minor corrections)
Line 11: Line 11:
|Feature overview=Add support for vertical text layout.
|Feature overview=Add support for vertical text layout.


Many scripts can be laid out vertically or horizontally (e.g. Japanese) and some can only be laid out vertically (e.g. Mongolian). For those that can be laid out either vertically or horizontally, vertical layout is sometimes more suitable (e.g. Japanese novels are typically laid out vertically).
Many scripts can be laid out vertically or horizontally (e.g. Japanese) and some can only be laid out vertically (e.g. classical Mongolian). For those that can be laid out either vertically or horizontally, vertical layout is sometimes more suitable (e.g. Japanese novels are typically laid out vertically).
|Feature users and use cases=Users: publishers of vertically typeset content (e-publishing organisations, independent web authors, especially in East Asia)
|Feature users and use cases=Users: publishers of vertically typeset content (e-publishing organisations, independent web authors, especially in East Asia)
Some example use cases:
 
Example use cases:
* Web-based e-readers for Japanese novels (especially on mobile devices)
* Web-based e-readers for Japanese novels (especially on mobile devices)
* Web pages that use classical Mongolian script
* Web pages that use classical Mongolian script
Line 19: Line 20:
|Feature requirements=* Support vertical text for whole documents (i.e. initial containing block uses a vertical writing mode) and document fragments (i.e. orthogonal flows)
|Feature requirements=* Support vertical text for whole documents (i.e. initial containing block uses a vertical writing mode) and document fragments (i.e. orthogonal flows)
* Support both top-to-bottom, right-to-left (e.g. CJK) and top-to-bottom, left-to-right (e.g. Mongolian) writing modes.
* Support both top-to-bottom, right-to-left (e.g. CJK) and top-to-bottom, left-to-right (e.g. Mongolian) writing modes.
* As far as possible given that the spec is in flux, conform to the relevant parts of [http://dev.w3.org/csswg/css3-writing-modes/ CSS3 Writing Modes specification]&mdash;most likely the <code>writing-mode</code> and <code>text-orientation</code> properties.
* As far as possible (particularly given that the spec is in flux), conform to the relevant parts of [http://dev.w3.org/csswg/css3-writing-modes/ CSS3 Writing Modes specification]&mdash;most likely the <code>writing-mode</code> and <code>text-orientation</code> properties.
|Feature non-goals=* Support ''all'' of the [http://dev.w3.org/csswg/css3-writing-modes/ CSS Writing Modes specification]
|Feature non-goals=* Support ''all'' of the [http://dev.w3.org/csswg/css3-writing-modes/ CSS Writing Modes specification]
** Specifically, properties such as <code>unicode-bidi</code>, <code>text-combine-horizontal</code>, and <code>text-combine-mode</code> are outside the scope of this feature
** Specifically, properties such as <code>unicode-bidi</code>, <code>text-combine-horizontal</code>, and <code>text-combine-mode</code> are outside the scope of this feature
* Support for [https://bugzilla.mozilla.org/show_bug.cgi?id=33339 HTML ruby]
* Support for [https://bugzilla.mozilla.org/show_bug.cgi?id=33339 HTML ruby]
* Support for vertical text in SVG
* Support for vertical text in SVG
|Feature implementation plan=Some ''very rough'' ideas of ''some'' of the work items (it is likely to be '''very''' wrong):
|Feature implementation plan=Some ''very rough'' ideas of ''some'' of the work items (this is likely to be '''very''' wrong):
* Parsing of <code>writing-mode</code> and <code>text-orientation</code>
* Parsing of <code>writing-mode</code> and <code>text-orientation</code>
* Virtualizing layout parameters???
* Virtualizing layout parameters???

Revision as of 04:20, 8 March 2012

Please use "Edit with form" above to edit this page.

Status

Vertical text
Stage Draft
Status `
Release target `
Health OK
Status note `

{{#set:Feature name=Vertical text

|Feature stage=Draft |Feature status=` |Feature version=` |Feature health=OK |Feature status note=` }}

Team

Product manager Jet Villegas
Directly Responsible Individual `
Lead engineer `
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead `
UX lead `
Product marketing lead `
Operations lead `
Additional members `

{{#set:Feature product manager=Jet Villegas

|Feature feature manager=` |Feature lead engineer=` |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=` |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}

Open issues/risks

Specification is in flux.

Stage 1: Definition

1. Feature overview

Add support for vertical text layout.

Many scripts can be laid out vertically or horizontally (e.g. Japanese) and some can only be laid out vertically (e.g. classical Mongolian). For those that can be laid out either vertically or horizontally, vertical layout is sometimes more suitable (e.g. Japanese novels are typically laid out vertically).

2. Users & use cases

Users: publishers of vertically typeset content (e-publishing organisations, independent web authors, especially in East Asia)

Example use cases:

  • Web-based e-readers for Japanese novels (especially on mobile devices)
  • Web pages that use classical Mongolian script
  • An academic paper that discusses Egyptian hieroglyphics published on the Web

3. Dependencies

`

4. Requirements

  • Support vertical text for whole documents (i.e. initial containing block uses a vertical writing mode) and document fragments (i.e. orthogonal flows)
  • Support both top-to-bottom, right-to-left (e.g. CJK) and top-to-bottom, left-to-right (e.g. Mongolian) writing modes.
  • As far as possible (particularly given that the spec is in flux), conform to the relevant parts of CSS3 Writing Modes specification—most likely the writing-mode and text-orientation properties.

Non-goals

  • Support all of the CSS Writing Modes specification
    • Specifically, properties such as unicode-bidi, text-combine-horizontal, and text-combine-mode are outside the scope of this feature
  • Support for HTML ruby
  • Support for vertical text in SVG

Stage 2: Design

5. Functional specification

`

6. User experience design

`

Stage 3: Planning

7. Implementation plan

Some very rough ideas of some of the work items (this is likely to be very wrong):

  • Parsing of writing-mode and text-orientation
  • Virtualizing layout parameters???
    • e.g. there was a suggestion of making a subclass of nsMargin that also referred to the current writing mode to give you the "logical" equivalents such as "before" and "after" instead of "top" and "bottom". Is this the approach we want to follow? Same goes for padding, borders etc.
    • Note that not all properties get treated the same. For example, the offset of a text-shadow property is unaffected by writing mode.
  • ICB with a vertical writing mode
    • i.e. laying out the whole document with a horizontal block flow and vertical text flow
    • UI adjustments (e.g. horizontal scrollbar, mapping scrollwheel, vertical text selection cursor etc.)
  • Orthogonal flows
  • Multi-column vertical layout
  • Vertical form controls??
  • Tables
  • (probably lots of other HTML elements that require special handling? e.g. list markers)
  • Pagination?
  • Glyph orientation
    • Using character properties such as those defined in UTR-50 (or the updated proposal to revise UTR-50)
    • Supporting different modes as necessary (e.g. stacked vs default, cf. text-orientation which is in flux)
  • Glyph selection—choosing vertical variants, using vertical metrics

8. Reviews

Security review

`

Privacy review

`

Localization review

`

Accessibility

`

Quality Assurance review

`

Operations review

`

Stage 4: Development

9. Implementation

Main bugzilla entry

Stage 5: Release

10. Landing criteria

` {{#set:Feature open issues and risks=Specification is in flux. |Feature overview=Add support for vertical text layout.

Many scripts can be laid out vertically or horizontally (e.g. Japanese) and some can only be laid out vertically (e.g. classical Mongolian). For those that can be laid out either vertically or horizontally, vertical layout is sometimes more suitable (e.g. Japanese novels are typically laid out vertically). |Feature users and use cases=Users: publishers of vertically typeset content (e-publishing organisations, independent web authors, especially in East Asia)

Example use cases:

  • Web-based e-readers for Japanese novels (especially on mobile devices)
  • Web pages that use classical Mongolian script
  • An academic paper that discusses Egyptian hieroglyphics published on the Web

|Feature dependencies=` |Feature requirements=* Support vertical text for whole documents (i.e. initial containing block uses a vertical writing mode) and document fragments (i.e. orthogonal flows)

  • Support both top-to-bottom, right-to-left (e.g. CJK) and top-to-bottom, left-to-right (e.g. Mongolian) writing modes.
  • As far as possible (particularly given that the spec is in flux), conform to the relevant parts of CSS3 Writing Modes specification—most likely the writing-mode and text-orientation properties.

|Feature non-goals=* Support all of the CSS Writing Modes specification

    • Specifically, properties such as unicode-bidi, text-combine-horizontal, and text-combine-mode are outside the scope of this feature
  • Support for HTML ruby
  • Support for vertical text in SVG

|Feature functional spec=` |Feature ux design=` |Feature implementation plan=Some very rough ideas of some of the work items (this is likely to be very wrong):

  • Parsing of writing-mode and text-orientation
  • Virtualizing layout parameters???
    • e.g. there was a suggestion of making a subclass of nsMargin that also referred to the current writing mode to give you the "logical" equivalents such as "before" and "after" instead of "top" and "bottom". Is this the approach we want to follow? Same goes for padding, borders etc.
    • Note that not all properties get treated the same. For example, the offset of a text-shadow property is unaffected by writing mode.
  • ICB with a vertical writing mode
    • i.e. laying out the whole document with a horizontal block flow and vertical text flow
    • UI adjustments (e.g. horizontal scrollbar, mapping scrollwheel, vertical text selection cursor etc.)
  • Orthogonal flows
  • Multi-column vertical layout
  • Vertical form controls??
  • Tables
  • (probably lots of other HTML elements that require special handling? e.g. list markers)
  • Pagination?
  • Glyph orientation
    • Using character properties such as those defined in UTR-50 (or the updated proposal to revise UTR-50)
    • Supporting different modes as necessary (e.g. stacked vs default, cf. text-orientation which is in flux)
  • Glyph selection—choosing vertical variants, using vertical metrics

|Feature security review=` |Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=` |Feature operations review=` |Feature implementation notes=Main bugzilla entry |Feature landing criteria=` }}

Feature details

Priority Unprioritized
Rank 999
Theme / Goal `
Roadmap Platform
Secondary roadmap `
Feature list `
Project `
Engineering team Layout

{{#set:Feature priority=Unprioritized

|Feature rank=999 |Feature theme=` |Feature roadmap=Platform |Feature secondary roadmap=` |Feature list=` |Feature project=` |Feature engineering team=Layout }}

Team status notes

  status notes
Products ` `
Engineering ` `
Security ` `
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance ` `
User experience ` `
Product marketing ` `
Operations ` `

{{#set:Feature products status=`

|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=` |Feature security health=` |Feature security notes=` |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}