Platform/Features/Vertical text: Difference between revisions

no edit summary
(more bugs)
No edit summary
 
Line 35: Line 35:
* Support vertical text in SVG
* Support vertical text in SVG
|Feature functional spec=* Bug 0 - Prototype
|Feature functional spec=* Bug 0 - Prototype
* [https://bugzilla.mozilla.org/show_bug.cgi?id=772321 Bug 2] - Parse writing mode and direction
* [https://bugzilla.mozilla.org/show_bug.cgi?id=772321 Bug 1] - Parse writing mode and text-orientation
* [https://bugzilla.mozilla.org/show_bug.cgi?id=735577 Bug 1] - Logicalize
* [https://bugzilla.mozilla.org/show_bug.cgi?id=735577 Bug 2] - Logicalize Reflow APIs
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789096 Bug 3] - Layout
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789096 Bug 3] - Logicalize Reflow for all frame classes
* [https://bugzilla.mozilla.org/show_bug.cgi?id=649142 refactor] and extend logical CSS properties
* [https://bugzilla.mozilla.org/show_bug.cgi?id=649142 Bug 4] - Refactor and extend logical CSS properties
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789099 Bug 4] - Orthogonal Flows
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789099 Bug 4] - Orthogonal Flows
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789103 Bug 5] - UI
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789103 Bug 5] - UI
Line 47: Line 47:
** Glyph layout of CJK only
** Glyph layout of CJK only
** Parsing, orthogonal flows and UI will not be included
** Parsing, orthogonal flows and UI will not be included
* [https://bugzilla.mozilla.org/show_bug.cgi?id=735577 Bug 1]: Logicalization of layout parameters
* [https://bugzilla.mozilla.org/show_bug.cgi?id=772321 Bug 2]: Parsing of <code>writing-mode</code> and <code>text-orientation</code><br>(see [[#9._Implementation|Implementation]] below)
** Renaming
 
** really want to do this a class at a time, alternating with bug 3, to check that it's being done right
The above is done. Steps to implement (parallelizable steps preceded by --> to indicate possible forking-off):
 
* --> [https://bugzilla.mozilla.org/show_bug.cgi?id=649142 Bug 4] - Refactor existing logical CSS properties
* [https://bugzilla.mozilla.org/show_bug.cgi?id=772321 Bug 1] - Parse writing mode and text-orientation
* --> Extend logical CSS properties to handle vertical text (depends only on Bugs 1 and 4)
* [https://bugzilla.mozilla.org/show_bug.cgi?id=735577 Bug 2]: Logicalization of layout parameters
** May involve some renaming across the layout engine, but shouldn't affect logic at this point
** Note that some frame classes will continue to be physical, e.g. images, even after full logicalization
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789096 Bug 3]: Logicalize Block and Inline layout
** Logicalize nsBlockFrame. Get vertical-only/horizontal-only documents consisting of only block frames working/tested
** Note that not all properties get treated the same. For example, the offset of a <code>text-shadow</code> property is unaffected by writing mode.
** Note that not all properties get treated the same. For example, the offset of a <code>text-shadow</code> property is unaffected by writing mode.
** Get all tests to pass with logical params in use
** Logicalize nsLineLayout, nsInlineFrame, nsTextFrame, etc. Get inline layout working for vertical-only documents. Make the text just draw sideways for now.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=772321 Bug 2]: Parsing of <code>writing-mode</code> and <code>text-orientation</code><br>(see [[#9._Implementation|Implementation]] below)
* --> After block and inline layout, other frame classes can be converted set by set, e.g.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789096 Bug 3]: Layout
** Tables
** i.e., in a document with a vertical writing mode, laying out the whole document with a horizontal block flow and vertical text flow
** Flexbox
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789099 Bug 4]: Orthogonal flows<br>[http://unicode.org/notes/tn22/RobustVerticalLayout.pdf Unicode Technical Note #22]
** etc.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789103 Bug 5]: UI features
* --> [https://bugzilla.mozilla.org/show_bug.cgi?id=789099 Bug 4]: Orthogonal flows
**  Probably requires a lot of rework of intrinsic sizing. This is a complicated task!
* --> [https://bugzilla.mozilla.org/show_bug.cgi?id=789103 Bug 5]: UI features
** scrollbars
** scrollbars
** mapping scrollwheel
** mapping scrollwheel
Line 62: Line 73:
** vertical text selection cursor
** vertical text selection cursor
** caret browsing
** caret browsing
** list boxes/combo boxes
** list boxes/combo boxes (initial implementation should just transform the control; next pass does actual vertical layout)
** menus
** menus
** other?
** other?
* [https://bugzilla.mozilla.org/show_bug.cgi?id=789104 Bug 6]: Glyph orientation
* --> [https://bugzilla.mozilla.org/show_bug.cgi?id=789104 Bug 6]: Glyph orientation
** Using character properties such as those defined in [http://www.unicode.org/reports/tr50/ UTR-50] (currently under review)
** Using character properties such as those defined in [http://www.unicode.org/reports/tr50/ UTR-50] (currently under review)
** Supporting different modes as necessary (e.g. stacked vs default, cf. <code>text-orientation</code> which is in flux)
** Supporting different modes as necessary (e.g. stacked vs default, cf. <code>text-orientation</code> which is in flux)
Line 73: Line 84:


* Need to investigate how to pref CSS keyword parsing (and all writing-mode processing) on and off. (This is relatively straightforward, now that {{bug|753522}} is implemented.  Just specify the pref in the property's chunk of nsCSSPropList.h, and use Preferences::GetBool() elsewhere if necessary.)
* Need to investigate how to pref CSS keyword parsing (and all writing-mode processing) on and off. (This is relatively straightforward, now that {{bug|753522}} is implemented.  Just specify the pref in the property's chunk of nsCSSPropList.h, and use Preferences::GetBool() elsewhere if necessary.)
* Possibly want to be able to <code>#ifdef</code> it as well? Or just back out the changes after each uplift so we don't pay the perf cost until it's ready?
* Possibly want to be able to <code>#ifdef</code> it as well? Or just back out the changes after each uplift so we don't pay the perf cost until it's ready? [There shouldn't be any perf cost.]


* Multi-column vertical layout
* Multi-column vertical layout
Confirmed users
104

edits