Torisugariの日記: UTR#50 (Unicode Vertical Text Layout)について 1
Unicodeには、「UTR #50: Unicode Vertical Text Layout:」と題して、縦書きの文字のデフォルトの方向がどうあるべきか、という話が載っています。この件に関して、(人数のせいか、お世辞にも激しいとは言えないかもしれませんが)様々な議論があったようで、ネット上にはその痕跡が残っています。
http://togetter.com/li/251192
https://twitter.com/search?q=%23UTR50
http://blog.antenna.co.jp/CSSPage/2012/07/utr50.html
http://www.unicode.org/forum/viewtopic.php?f=35&t=331
上記を読むと、議論のピークは2012年の6月後半あたりなので、2013年の11月現在、いささか、遅きに失した感はありますが、私なりの考えを述べたいと思います。とはいえ、ややこしい話なので、上記の議論は読み進めるだけでも大変です。ですから、初見の人のために、略語の解説から始めます。
MVO (Mixed Vertical Orientation)
縦書きの時、アルファベットだけ横に寝かせるの意。Figure 1. Japanese vertical textの"Later... With Jools Holland"の部分。
SVO (Stacked Vertical Orientation)
縦書きの時、アルファベットも向きを変えずに正立(upright)に書くの意。Figure 1. Japanese vertical textの"DVD"などの部分。
vo
Vertical-Orientation propertyの略。縦書き時に、ある文字がどちらを向くべきかをU/R/Tu/Trの4種類のうち、どの値をとるかを示すもの。
U
Upright(正立)の略。この文字は、縦でも横でも正立しているので、グリフが1種類になる。平仮名や漢字など、全角文字の大半を占める。
R
Rotated(回転)の略。この文字は縦書きの時と横書きの時で向きが変わる(時計回りに90°)。基本的に回転させればいいだけなのので、グリフは1種類でよい。半角文字に多く、現段階では、「本来は横書きの文字」の意。来るUnicode7.0では、モンゴル語などが横になって収録されるので、「縦書きと横書きで方向が違う文字」という意味が正しい。
T
Transformed(変形)の略。縦書きと横書きでグリフが異なるもの。さらに、以下のTuとTrに分類される。
Tu
縦書きと横書きでグリフは異なるが、字自体は回転せず正立しているもの。拗音の"ァ"は、縦書きと横書きで位置が違うが、字が回転しているわけではない。アと同じ形をしている。他にも句読点"。"などは、横書きでは左下で、縦書きでは右上なので、90°回転ではなく180°回転だが、形自体は横書きと縦書きで同じ。
Tr
縦書きと横書きグリフが異なり、さらに回転もしているもの。例えば、仮名の"ー"や日本語の引用符"「"などは、字形的には90°回転する。しかし、横書きの字を回転だけすると、肉厚になる部分がおかしくなる。ご存じのように、明朝体は縦を太く横を細く書く字体なので、"ー"を90度回転させると、異様に縦が細い"ー"になる。これを防ぐためには、最初から別のグリフが必要となる。
Unicodeの全文字について、voを調べ上げて表にしたのが、VerticalOrientation-11.htmlで、UTR#50の最大の成果と言っていい、と思います。
---
縦書きレンダリングエンジンの作者にとって、U/Tr/Tuは、ある意味ありがたい存在です。アプリケーションが変に回転させなくても、フォントが予め必要なだけ回転させてくれてある(ハズな)ので、迷うところがありません。(ただし、現時点でこの規格に追いついているフォントはあまり数が多くないと思いますが……)
しかし、問題はRです。レンダリングエンジンは必要によって、SVOとMVOを切り替えて表示することになると思うのですが、Rに関しては、まだ分類が甘いからです。
日本語を縦書きにした場合、たいていの場合、それは広大なUの海です。その海の中に孤立したRがポツンと浮かんでいる場合を考えてみてください。
バッハはG線上のアリアを作曲した。
U U U U RU U U U U U U U U U U Tu
これを縦書きにする場合、多くの人が"G"を正立で、すなわちSVOで描画して欲しいと思うはずです。そして、実際、「Rの孤立さかげん」を検出するアルゴリズムの作成は容易でしょうから、エンジンにとってはわけないことです。一方、
彼のミドルネームはSebastianだ。
U U U U U U U U U RRRRRRRRRU Tu
を縦書きにする場合、この島を大きいとするか、小さいとするか、まさにそれはエンジンのさじ加減ひとつであって、必要に応じてMVOかSVOかを選んで切り替えればいいでしょう。MVOを採用すれば、読者には読みやすくて好評を博すでしょうし、あるいは、行の幅が十分にあれば、MVOもSVOも採らずに第三の道として縦中横に挑戦してもみてもいいでしょう。ここまでは明快です。
しかし、これがハイフン"‐"ならどうでしょうか?
東京都港区芝公園四丁目二-八
U U U U U U U U U U U U RU
このハイフンは孤立しているので、状況的には正立させたいRです。つまり、"G"同様にSVOで描画したい文脈です。しかし、私にとって、縦書きのハイフンは縦になっていてほしいものの筆頭です。
さらに、
これはHewlett-Packardの製品だ。
U U U RRRRRRRRRRRRRRRU U U U Tu
という文章を考えると、この巨大なRの島はなるべくならMVOで描画したい、と思うでしょう。あるいは少し妥協して、SVOでもいいや、と考えるかもしれません。しかし、いずれにしろ、ハイフン"‐"を横棒にするのはあり得ない選択肢ですよね。つまり、このグリフは、「SVOかMVOか」という文脈が与えられた上で、「voがRである」という情報を与えられても、まだ回転させるべきか否か決められない、という例になってしまっているのです。
ハイフン"‐"や普通の半角丸括弧"()"(U+0028, U+0029)は、「グリフを変えずに回転だけさせる」という意味でTがついたTrにはならずに、Rだけになっているんだと思いますが、私が思うに、Tがついているかどうかは、レンダリングエンジンの設計者にとっても、フォントの作者にとってもあまり意味がないんじゃないでしょうか。凝っているフォントなら、Rでも2つ用意するでしょうし。現状、4つの分類では、「SVOでもMVOでも90°回転させる字形」に相当する区分はTrなので、これらをTrに移動するか、あるいは、この意味を強調した分類をRのサブカテゴリに用意するかしないと、レンダリングのアルゴリズムを組む上では使い辛いと思いました。もしこのままRを曖昧にしておけば、縦書き時の"-"の向きはフォントだけが知っていて、レンダリング側は全く関知できなくなります。
なるべく避けたい事態ではありますが、それを防ぐ結果、vo表が言語別に分かれてしまったとしても、やむを得ないのではないでしょうか。
訂正 (スコア:0)
でした。