Platform/Features/Vertical text
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.
Text for most scripts on the web today are laid out horizontally. However, Japanese, Chinese and to some degree Korean can also be laid out vertically. When laid out vertically, these languages use top-to-bottom, right-to-left flows. Classical Mongolian is generally considered a "vertical only" language, although in multi-script contexts it can also be drawn horizontally. Mongolian, along with Phags-pa flows top-to-bottom, left-to-right. Western text such as Latin, Greek and Cyrillic can also be displayed vertically, examples of this often appear on book spines and in signage.
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
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
andtext-orientation
properties.
Non-goals
- Support all of the CSS Writing Modes specification
- For example, properties such as
unicode-bidi
,text-combine-horizontal
, andtext-combine-mode
are probably outside the scope of this feature
- For example, properties such as
- Support HTML ruby
- Support vertical text in SVG
Stage 2: Design
5. Functional specification
`
6. User experience design
`
Stage 3: Planning
7. Implementation plan
Some of the work items:
- Logicalization of layout parameters
- Renaming
- Note that not all properties get treated the same. For example, the offset of a
text-shadow
property is unaffected by writing mode. - Get all tests to pass with logical params in use
- Parsing of
writing-mode
andtext-orientation
- Need to investigate how to pref this (and all writing-mode processing) on and off -- put in a separate DOM idl?
- Possibly want to be able to
#ifdef
it as well? Or just back out the changes after each uplift so we don't pay the perf cost until it's ready?
- ICB with a vertical writing mode
- i.e. laying out the whole document with a horizontal block flow and vertical text flow
- UI features
- scrollbars
- mapping scrollwheel
- vertical text selection
- vertical text selection cursor
- caret browsing
- other?
- Implement
min/max/fit-content
,fill-available
- Orthogonal flows
- Multi-column vertical layout
- Form controls
- Tables
- (Probably lots of other HTML elements that require special handling? e.g. list markers. Presumably images don't rotate (i.e. width/height are physical) but form controls do?)
- Pagination
- Glyph orientation
- Using character properties such as those defined in UTR-50 (currently under review)
- 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
Stage 5: Release
10. Landing criteria
` {{#set:Feature open issues and risks=Specification is in flux. |Feature overview=Add support for vertical text layout.
Text for most scripts on the web today are laid out horizontally. However, Japanese, Chinese and to some degree Korean can also be laid out vertically. When laid out vertically, these languages use top-to-bottom, right-to-left flows. Classical Mongolian is generally considered a "vertical only" language, although in multi-script contexts it can also be drawn horizontally. Mongolian, along with Phags-pa flows top-to-bottom, left-to-right. Western text such as Latin, Greek and Cyrillic can also be displayed vertically, examples of this often appear on book spines and in signage. |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
|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
andtext-orientation
properties.
|Feature non-goals=* Support all of the CSS Writing Modes specification
- For example, properties such as
unicode-bidi
,text-combine-horizontal
, andtext-combine-mode
are probably outside the scope of this feature
- For example, properties such as
- Support HTML ruby
- Support vertical text in SVG
|Feature functional spec=` |Feature ux design=` |Feature implementation plan=Some of the work items:
- Logicalization of layout parameters
- Renaming
- Note that not all properties get treated the same. For example, the offset of a
text-shadow
property is unaffected by writing mode. - Get all tests to pass with logical params in use
- Parsing of
writing-mode
andtext-orientation
- Need to investigate how to pref this (and all writing-mode processing) on and off -- put in a separate DOM idl?
- Possibly want to be able to
#ifdef
it as well? Or just back out the changes after each uplift so we don't pay the perf cost until it's ready?
- ICB with a vertical writing mode
- i.e. laying out the whole document with a horizontal block flow and vertical text flow
- UI features
- scrollbars
- mapping scrollwheel
- vertical text selection
- vertical text selection cursor
- caret browsing
- other?
- Implement
min/max/fit-content
,fill-available
- Orthogonal flows
- Multi-column vertical layout
- Form controls
- Tables
- (Probably lots of other HTML elements that require special handling? e.g. list markers. Presumably images don't rotate (i.e. width/height are physical) but form controls do?)
- Pagination
- Glyph orientation
- Using character properties such as those defined in UTR-50 (currently under review)
- 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=` }}