- From: John Daggett <jdaggett@mozilla.com>
- Date: Fri, 20 Sep 2013 00:18:32 -0700 (PDT)
- To: W3C Style <www-style@w3.org>
The UTR50 spec defines a Vertical Orientation property [1] for codepoints in Unicode. Codepoints marked 'U' are upright by default and those marked 'R' are rotated by default. Those marked 'Tu' or 'Tr' require some form of alternate in the vertical case. In the definition of the 'text-orientation' property, the CSS3 Writing Modes spec defines this handling for characters with a vertical orientation property of 'Tr'. http://dev.w3.org/csswg/css-writing-modes/#vertical-orientations # For Tr characters, which are intended to be either transformed or # rotated sideways, the UA may assume that appropriate glyphs for # upright typesetting are given in the font and render them upright; # alternately it may check for such glyphs first, and fall back to # typesetting them sideways if the appropriate glyphs are missing. This defines inconsistent behavior across user agents. User agents that just assume the font has vertical alternates for these codepoints will render differently from user agents that use the alternate behavior of checking the font and doing a manual rotation. The "alternate" behavior seems implicitly better at first glance but it's in fact a very poor tradeoff for the inconsistency it introduces. As I said during similar discussions related to this property, correctly checking substitutions like this is tedious work for implementations. Nat McCully from Adobe made this same point when we met in Kyoto two years ago. There are only roughly 50 of these 'Tr' codepoints in Unicode, mostly pairs of brackets and a sprinkling of ideographic punctuation characters. For the most part, fonts that support these characters provide vertical alternates for them. So specifying this behavior is not really going to be of much use to authors in practice. For the fonts I looked at, this only simulates fallback for one or two codepoints: Kozuka Mincho Pr6N 3030 cid12218 vert: [] WAVY DASH ff1b cid00640 vert: [] FULLWIDTH SEMICOLON MS Mincho: ff1b uniFF1B vert: [] FULLWIDTH SEMICOLON For CSS, I think we should keep it simple - for the codepoints marked 'U', 'Tu' or 'Tr', set the glyph upright and enable vertical alternates, without allowing tricky fallback schemes that expose authors to inconsistencies across user agents or that require complex fallback behavior. Regards, John Daggett [1] http://www.unicode.org/Public/vertical/revision-11/VerticalOrientation-11.html Font data for 'Tr' codepoints in two common Japanese fonts. When a given codepoint is supported by the font, the character map glyph id is in column 2 and the vertical alternate glyph id is in column 4. Kozuka Mincho Pr6N (supports Adobe Japan1-6 glyph set, publishing industry standard set): ========================================================================================= Not supported by font: 2329 LEFT-POINTING ANGLE BRACKET 232A RIGHT-POINTING ANGLE BRACKET 301A LEFT WHITE SQUARE BRACKET 301B RIGHT WHITE SQUARE BRACKET 301E DOUBLE PRIME QUOTATION MARK FE59 SMALL LEFT PARENTHESIS FE5A SMALL RIGHT PARENTHESIS FE5B SMALL LEFT CURLY BRACKET FE5C SMALL RIGHT CURLY BRACKET FE5D SMALL LEFT TORTOISE SHELL BRACKET FE5E SMALL RIGHT TORTOISE SHELL BRACKET Supported by font: 3008 cid00682 vert: [cid07907] LEFT ANGLE BRACKET 3009 cid00683 vert: [cid07908] RIGHT ANGLE BRACKET 300a cid00684 vert: [cid07909] LEFT DOUBLE ANGLE BRACKET 300b cid00685 vert: [cid07910] RIGHT DOUBLE ANGLE BRACKET 300c cid00686 vert: [cid07911] LEFT CORNER BRACKET 300d cid00687 vert: [cid07912] RIGHT CORNER BRACKET 300e cid00688 vert: [cid07913] LEFT WHITE CORNER BRACKET 300f cid00689 vert: [cid07914] RIGHT WHITE CORNER BRACKET 3010 cid00690 vert: [cid07915] LEFT BLACK LENTICULAR BRACKET 3011 cid00691 vert: [cid07916] RIGHT BLACK LENTICULAR BRACKET 3014 cid00676 vert: [cid07901] LEFT TORTOISE SHELL BRACKET 3015 cid00677 vert: [cid07902] RIGHT TORTOISE SHELL BRACKET 3016 cid16197 vert: [cid16329] LEFT WHITE LENTICULAR BRACKET 3017 cid16198 vert: [cid16330] RIGHT WHITE LENTICULAR BRACKET 3018 cid12129 vert: [cid12139] LEFT WHITE TORTOISE SHELL BRACKET 3019 cid12130 vert: [cid12140] RIGHT WHITE TORTOISE SHELL BRACKET 301c cid00665 vert: [cid07894] WAVE DASH 301d cid07608 vert: [cid07956] REVERSED DOUBLE PRIME QUOTATION MARK 301f cid07609 vert: [cid07957] LOW DOUBLE PRIME QUOTATION MARK 3030 cid12218 vert: [] WAVY DASH 30a0 cid16205 vert: [cid16331] KATAKANA-HIRAGANA DOUBLE HYPHEN 30fc cid00660 vert: [cid07891] KATAKANA-HIRAGANA PROLONGED SOUND MARK ff08 cid00674 vert: [cid07899] FULLWIDTH LEFT PARENTHESIS ff09 cid00675 vert: [cid07900] FULLWIDTH RIGHT PARENTHESIS ff1a cid00639 vert: [cid12101] FULLWIDTH COLON ff1b cid00640 vert: [] FULLWIDTH SEMICOLON ff3b cid00678 vert: [cid07903] FULLWIDTH LEFT SQUARE BRACKET ff3d cid00679 vert: [cid07904] FULLWIDTH RIGHT SQUARE BRACKET ff3f cid00650 vert: [cid07890] FULLWIDTH LOW LINE ff5b cid00680 vert: [cid07905] FULLWIDTH LEFT CURLY BRACKET ff5c cid00667 vert: [cid07896] FULLWIDTH VERTICAL LINE ff5d cid00681 vert: [cid07906] FULLWIDTH RIGHT CURLY BRACKET ff5e cid00665 vert: [cid07894] FULLWIDTH TILDE ff5f cid12131 vert: [cid12141] FULLWIDTH LEFT WHITE PARENTHESIS ff60 cid12132 vert: [cid12142] FULLWIDTH RIGHT WHITE PARENTHESIS ffe3 cid00649 vert: [cid07889] FULLWIDTH MACRON MS Mincho (ancient and honorable sole Windows Japanese serif font): =================================================================== Not supported by font: 2329 LEFT-POINTING ANGLE BRACKET 232A RIGHT-POINTING ANGLE BRACKET FE59 SMALL LEFT PARENTHESIS FE5A SMALL RIGHT PARENTHESIS FE5B SMALL LEFT CURLY BRACKET FE5C SMALL RIGHT CURLY BRACKET FE5D SMALL LEFT TORTOISE SHELL BRACKET FE5E SMALL RIGHT TORTOISE SHELL BRACKET Supported by font: 3008 uni3008 vert: [glyph18639] LEFT ANGLE BRACKET 3009 uni3009 vert: [glyph18640] RIGHT ANGLE BRACKET 300a uni300A vert: [glyph18641] LEFT DOUBLE ANGLE BRACKET 300b uni300B vert: [glyph18642] RIGHT DOUBLE ANGLE BRACKET 300c uni300C vert: [glyph18643] LEFT CORNER BRACKET 300d uni300D vert: [glyph18644] RIGHT CORNER BRACKET 300e uni300E vert: [glyph18645] LEFT WHITE CORNER BRACKET 300f uni300F vert: [glyph18646] RIGHT WHITE CORNER BRACKET 3010 uni3010 vert: [glyph18647] LEFT BLACK LENTICULAR BRACKET 3011 uni3011 vert: [glyph18648] RIGHT BLACK LENTICULAR BRACKET 3014 uni3014 vert: [glyph18650] LEFT TORTOISE SHELL BRACKET 3015 uni3015 vert: [glyph18651] RIGHT TORTOISE SHELL BRACKET 3016 uni3016 vert: [glyph18652] LEFT WHITE LENTICULAR BRACKET 3017 uni3017 vert: [glyph18653] RIGHT WHITE LENTICULAR BRACKET 3018 uni3018 vert: [glyph18654] LEFT WHITE TORTOISE SHELL BRACKET 3019 uni3019 vert: [glyph18655] RIGHT WHITE TORTOISE SHELL BRACKET 301a uni301A vert: [glyph18656] LEFT WHITE SQUARE BRACKET 301b uni301B vert: [glyph18657] RIGHT WHITE SQUARE BRACKET 301c uni301C vert: [glyph18658] WAVE DASH 301d uni301D vert: [glyph18659] REVERSED DOUBLE PRIME QUOTATION MARK 301e uni301E vert: [glyph18660] DOUBLE PRIME QUOTATION MARK 301f uni301F vert: [glyph18661] LOW DOUBLE PRIME QUOTATION MARK 3030 uni3030 vert: [glyph18662] WAVY DASH 30a0 uni30A0 vert: [glyph18675] KATAKANA-HIRAGANA DOUBLE HYPHEN 30fc uni30FC vert: [glyph18688] KATAKANA-HIRAGANA PROLONGED SOUND MARK ff08 uniFF08 vert: [glyph18809] FULLWIDTH LEFT PARENTHESIS ff09 uniFF09 vert: [glyph18810] FULLWIDTH RIGHT PARENTHESIS ff1a uniFF1A vert: [glyph18813] FULLWIDTH COLON ff1b uniFF1B vert: [] FULLWIDTH SEMICOLON ff3b uniFF3B vert: [glyph18815] FULLWIDTH LEFT SQUARE BRACKET ff3d uniFF3D vert: [glyph18816] FULLWIDTH RIGHT SQUARE BRACKET ff3f uniFF3F vert: [glyph18817] FULLWIDTH LOW LINE ff5b uniFF5B vert: [glyph18818] FULLWIDTH LEFT CURLY BRACKET ff5c uniFF5C vert: [glyph18819] FULLWIDTH VERTICAL LINE ff5d uniFF5D vert: [glyph18820] FULLWIDTH RIGHT CURLY BRACKET ff5e uniFF5E vert: [glyph18821] FULLWIDTH TILDE ff5f uniFF5F vert: [glyph18822] FULLWIDTH LEFT WHITE PARENTHESIS ff60 uniFF60 vert: [glyph18823] FULLWIDTH RIGHT WHITE PARENTHESIS ffe3 uniFFE3 vert: [glyph18824] FULLWIDTH MACRON
Received on Friday, 20 September 2013 07:18:59 UTC