Re: 縦書き時のクォーテーションマークのChromeでの挙動につきまして

村上です。

> On Jun 5, 2026, at 14:04, tajima@sanyosha.co.jp wrote:
> 
> ここ最近のアップデート以降だと思うのですが、Google Chromeで全角のクォーテーションマーク、U+2018「‘」、U+2019「’」、U+201C「“」、U+201D「”」がデフォルトで正立して表示されてしまう挙動になってしまっているようです。どうやら最近のUAX#50の仕様変更を反映した結果ということのようなのですが、日本語の表示としてはこれは困ります。なお一応Googleに報告はしました。環境はmacOS15.7.7、Chrome バージョン 148.0.7778.216です。ブラウザの表示フォントは変えていないのでヒラギノで表示されているものと思います。
> 
> 
> また、UAX#50の記述を見てみたところ、縦書き時にクォーテーションマークを別の文字種に差し替えるような記述があり、これも勝手に置換されてしまうのは困ります。なおこれは過去にAmazon Kindleでダブルクォートを勝手にダブルミニュートに変えてしまう実装がされており、最近ようやく直ったのと同種の話かと思われます。
> 


vo=Trの文字がvertグリフが存在しないと正立で表示されてしまう(以前は問題になる文字がU+3030 WAVY DASHといったマイナーな文字のみだったのが、UAX#50の改訂によって引用符にも及ぶようになった)問題は、CSS Writing Modes仕様が関係してるので、CSSのissueを登録しました:

#14078: [css-writing-modes] vo=Tr characters should fall back to rotated if vertical glyphs are missing <https://github.com/w3c/csswg-drafts/issues/14078>

以下、その日本語版です:

[css-writing-modes] vo=Trの文字は縦書き用グリフが存在しない場合は回転させて表示することを推奨するべき

縦書きにおける `vo=Tr` 文字の扱いは以前から問題があり、Unicode 17.0 での UAX#50 <https://www.unicode.org/reports/tr50/> の更新で U+2018, U+2019, U+201C, U+201D の縦書きの向きのプロパティ値が `R` から `Tr` に変更されたことで、さらに悪化しました。

これに関する Chromium の Issue があります:
334110491: The default glyph forms with vo=Tr in vertical texts do not fit UAX#50. <https://issues.chromium.org/issues/334110491>
509983812: In Chrome 148, the OpenType `vert` / `vrt2` feature is no longer applied to U+201C, U+201D, U+2018 <https://issues.chromium.org/issues/509983812>

これらの Issue は、縦書きで vo=Tr の文字が正立して表示されることに関するもので、Chromium チームはこの問題を修正しない(Status: Won't fix (Intended behavior))と決定済みです。CSS Writing Modes 仕様では vo=Tr の文字は正立で組まれることになっているためということです。

それならば、仕様を変更して、vo=Tr の文字は縦書き用グリフが存在しない場合は回転させて表示することを推奨するようにすべきだと思います。

現在の仕様 https://drafts.csswg.org/css-writing-modes-4/#typeset-upright では、次のように記述されています:

Typographic character units which are classified as `Tr` or `Tu` in [UAX50] are expected to have alternate glyphs or positioning for typesetting upright in vertical text. In the case of `Tr` characters, if such vertical alternate glyphs are missing from the font, the UA may wish to [RFC6919] (but is not expected to) synthesize the missing glyphs by typesetting them sideways etc.

(Tr や Tu の文字は、縦書きで正立に組むための代替グリフや位置調整を持つことが期待されている。Tr 文字の場合、もしそのような縦書き用の代替グリフがフォントに存在しない場合、UA は欠落しているグリフを横向きに組むなどして合成することを望むかもしれない(しかし期待されていない))

この最後の文の "may wish to …" は、vo=Tr の文字を縦書き用グリフが存在しない場合は回転させて表示することを推奨するには弱すぎる表現です。"may wish to (but is not expected to)" の代わりに "should" や "are expected to" に変更すべきだと思います。

vo=Tr の文字の縦書き表示を確認するための HTML ファイルを作りました(Google Fonts の "Noto Sans JP" を使用):
https://murakamishinyu.github.io/bugtest/uax50/vo-tr-chars-noto.html


これを Chrome で表示した場合、以下の文字は縦書きで正立して表示されます(横書きモードと同じ向きになる):

2018 ‘ LEFT SINGLE QUOTATION MARK
2019 ’ RIGHT SINGLE QUOTATION MARK
201C “ LEFT DOUBLE QUOTATION MARK
201D ” RIGHT DOUBLE QUOTATION MARK
3030 〰 WAVY DASH
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
FF1B ; FULLWIDTH SEMICOLON

興味深いことに、Firefox でこの HTML ファイルを表示した場合、これらの文字はすべて縦書きで回転して表示されます。Safari (WebKit) もほぼ同様ですが、U+FF1B FULLWIDTH SEMICOLON は正立で表示されます。

Firefox では、vo=Tr の文字で縦書き用グリフが存在しない場合は回転させて表示するという挙動が実装されており、これは8年前に次の Issue で修正された結果です:

Bug 1431305 - Wavy Dash doesn't fall back to "rotated" in vertical writing-mode <https://bugzilla.mozilla.org/show_bug.cgi?id=1431305>

縦書き用グリフが存在しない vo=Tr の文字の期待される挙動は、Firefox のように、回転させて表示することであり、CSS Writing Modes 仕様を修正してそれを推奨するべきだと思います。


----
村上 真雄 (MURAKAMI Shinyu)
Vivliostyle Foundation

Received on Monday, 22 June 2026 14:02:55 UTC