英数字の方向のこと、いまTwitterで議論がなされていることへの簡単な説明

縦組みにおける英数字の方向についての議論が活発ですが、どうも議論をしている人たちは、本来別のものとして分けて考えるべき問題を一つにごっちゃにして議論しているのではないかと思います。

その結果、シンプルである問題を複雑にしてしまっているのではないでしょうか。

●現状と課題

Unicodeは文字(Character)の抽象的な形状に基づいてコードポイントを与えており、具体的な形状であるグリフやその方向は定義しないとしています[*1]。そこで、縦組み時に文字の向きを指定しないときの方向(デフォルトの方向)はアプリケーションに任されることになります。

Microsoft Officeを初めとする多くのアプリケーションは、UnicodeのBasic Latin(ASCIIコード、MS IMEでは半角英数で入力、以下「半角文字」)は時計回りに90度回転した状態(横倒し)をデフォルトとし、その全角形(FullWidth Variant、MS IMEでは全角英数で入力。以下「全角文字」)は正立としています。一方、青空文庫のリーダでは半角文字を正立させているものもあります[*2]。このように、特に、半角文字の向きは必ずしもすべてのアプリケーションで同じではありません。

UnicodeのUTR#50という仕様[*3](仕様案)で決めようとしているのは、文字のコードポイント毎のデフォルトの方向です。これが決まって普及するとアプリケーション毎に文字の向きがばらばらになる状態が解消されるものと期待されます。

縦組みは新聞、雑誌を初め文芸書やビジネス・経済書などの書籍では頻繁に使われています。これらの出版物の制作にはプロの編集者・制作者・印刷会社が関与しています。しかし、いままで、オフィスソフトで作成する文書はほとんど横組みです。また、Webでは縦書きがほとんど使われていませんでした。つまり、縦組み制作は専門家のものであり、一般人は縦組み出版物を読むことがあっても作成するドキュメントは横組み中心でした。そこで縦組みの出版物での文字の向きに関する取り扱いは一般人には縁遠いものだったと言えます。

現在、CSS3で縦組みが標準化されてブラウザで読めるようになりつつあります。そうすると縦組みブログも数多く登場するでしょう。また、EPUBでも縦組みを使えるようになります。このように一般人が縦組みで表現する機会が増えるものと予想します。専門家は訓練を受けており、DTPソフトなどのツールを使うことができますが、一般人はそうではありません。そこで、縦組み時に文字がどういう向きになるかでかなりの混乱が生まれることになるでしょう。

このような観点に立つとUTR#50の意義は非常に大きなものがあります。

さて、UTR#50の現在の仕様案(ドラフト5版)には縦組みの行における文字のデフォルト方向としてMVO方式とSVO方式が記述されています。他にHOもありますが、これは横書きなので省略します。

●MVOとSVOはどういうものか?

MVO方式での文字のデフォルト方向の決定方針は複雑であり、個々の文字については様々な意見が出ておりまとまっていません。いま、本ブログで注目している英数字(ラテンアルファベットとアラビア数字)についてだけを見ますと、MVO方式では半角文字を横倒しとし全角文字を正立とします。一方、SVO方式では半角英数、全角英数とも正立です。

・MVOでは、Basic LatinのU+002E … U+005Aは、縦組み時に横倒し、その全角形(全角文字)は正立
・SVOでは、Basic LatinのU+002E … U+005Aと、その全角形は両方とも正立

MVO方式とSVO方式の適用範囲に関する記述は曖昧なのでよく理解できません。Forumで質問したところ、UTR#50のエディタであるEric Muller氏からは、SVOは英語に適用するものであって日本語はMVOを適用すると回答がありました[*4]。しかし、CSSのワーキンググループのfantasaiは別の考えを示しています。このあたりの関係はよくわからないのですが、SVOはCSSのワーキンググループの考えをEric Muller氏が受け入れたものということなので[*5]、fantasaiの考えが及ぶものと見ることもできます。

●MVOとSVOの適用例

ということでUTR#50のSVOが日本語に適用されるものなのかどうかは今の仕様案からは読み取ることができません。今後変わる可能性もあると期待して、とりあえずMVOとSVOを日本語文字列にも適用できるとします。するとMVOとSVOによる英数字のデフォルト方向は次の図のようになります。

図では、MVOとSVOで同じ内容の行がそれぞれ2行ずつペアになっていますが、そのペアの右は英数字と記号を半角文字で入力、左は全角文字で入力したものです。

日本語の縦組みの行に英数字が単独で現れた場合、全角文字・半角文字に如何に関わらず正立させるSVOの方が自然ということが大多数の人が認めると思います。しかし、Twitterの議論では、どうも、SVO方式の支持者は少なく、MVO方式の支持者の方が多いように思います。

●文字単位と文字列の表記の違い

たとえば、強硬なMVO支持者である山本太郎氏は、つぎのような理由で半角文字横倒しを主張しています[*6]。

1.縦組みの日本語文字の中に英文が入る場合、英文は横倒しにするのが一般である。
2. 新聞などの限られた分野では英文やアラビア数字列を正立させているが、新聞では段の文字数が少ないなどの制約がある。また、新聞以外の出版物で英数字が正立するのは頭字語や縦中横などのトリック的な表示に限られる。
3.フォントに縦組み用メトリックス情報がないなど技術的制限があるし、日本語の中で英数字を正立させる慣例が確立されていない。このような理由で縦組みで英数字を正立させると組版結果が醜いものとなる。特に、全角文字ではないラテンアルファベットは横倒しにすべきである。
4. 英数字正立をデフォルトとすると、少なくない人々が、正当な書法では縦書きでは漢数字を使うべきであることを忘れて、アラビア数字を縦書きで使い始めるだろう。そして伝統的な方法を学ぶ機会もなくなる。
5. 縦中横のような方法で英数字を正立させるのは訓練された組版担当者に行なわせるべきであり、このようなトリックをデフォルトにするべきではない。
6. 一部の人は、西欧生まれのラテン文字やアラビア数字の向きを正立をデフォルトとせよ、と主張する。しかし、そういう主張は開発者、ユーザ、組版を誤った方向に導くものであり、信じがたい。

実際には、UTR#50は、1文字単位で、特にマークアップがなければどういう方向を向かせるか(デフォルトの方向)を決めるものです。縦組みの和文中で英語の単語や文章が現れたとき(つまり、組版での和欧混植)どうするかは、英語の単語や文章を縦組みの行の中にどう配置するかという問題なのであり、これはUTR#50で決めることではありません。

山本太郎氏の意見を典型として、Twitterの議論の多くは、このあたりを拡大解釈して、あたかもUTR#50は、和欧混植の組版や混植文字列の表示をどうすべきかという観点から、各文字のデフォルトの向きを議論しているようです。実際には文字は単独で現れるだけではなくて、文字列の中で現れることが多いので、1文字単位の方向を文字列内での方向と同じ向きにしたいという、そういう風な議論になりがちなのはわかります。

しかし、現実には1文字単位の方向と文字列内(和欧混植など)での方向は必ずしも一致しません

縦組みの行に英数字が1文字だけ現れた場合は正立が自然と述べました。では、2文字以上連続したときの方向は一体どうなるべきでしょうか?

実際の出版物を調べてみますと、アラビア数字は、1文字なら正立、2文字なら縦中横、3文字~4文字なら一文字ずつ正立、などと表記することが多くなります。つまり2文字のときは特殊な配置になりますが、多くの場合正立します。しかし、縦組み参考文献表で参照ページ番号をpp.10-11のように示す場合や、数式の中に現れるアラビア数字は全体を時計回りに90度回転して配置しますので、横倒しにする方が良いでしょう。

一方、ラテンアルファベットについてみますと、たとえば、Nippon Hōsō Kyōkaiは縦組み中では文字列全体を時計周りに90度回転して表示する(文字毎では横倒ししているように見えます)のが綺麗に見えるでしょう。しかし、NHKと表記したときは3文字をそれぞれ正立して表すのが普通です。同じN、H、Kという文字が文脈によって正立にも横倒しにもなりえるのです。

文字の方向は言葉の中で文字がどのように使われているかの役割やその書記方法に基本的に依存します。さらに著者や編集者なりの考えがあった場合、その考えに沿った指定ができることが重要です。

●文字単独と組版問題を分離する

このように英数字が2文字、3文字…と連続するときにどう配置するかは、文字のコードポイントに付随させる属性というよりも、むしろ文字列を行の中にどのように配置するかという組版の問題です。そして、文脈依存で変わりうるものです。したがって、ケースバイケースで外部から指定できることが重要となります。つまり「CSSなり他のアプリケーションで決定するべき問題」ということです。

●全角文字と半角文字で方向の使い分けの問題

MVOでは半角文字を横倒し、全角文字を正立とします。つまり、縦組み時のデフォルトの方向を文字コードで使い分けるという考えです。これは専門的・技術的な問題なので詳しくは別途検討したいと考えますが、ここで結論だけ述べるとこれは不可です。

理由は次のようなことです。①現在までの文字コードとフォントの技術進歩に相反するものである。②文字コードレベルでの使い分けは原テキストの書き直しを必要とするのでコンテンツが縦組み専用となる。③半角文字(文字コードレベル)であっても全角形で表示することができるし、その逆も可能なため、外観だけでは、半角文字なのか全角文字なのかの区別ができない。このため半角文字と全角文字の使い分けを厳密に行なうにはツールの支援が必要となる、など。

[*1] UTR#50(Unicodeの縦書きの文字の向き)の話題
[*2] Unicode仕様書第1章を参照のこと
[*3] http://twitpic.com/a180ys
[*4] Unicode Properties for Horizontal and Vertical Text Layout
[*5] Fundamental questions
[*6] https://twitter.com/kojiishi/status/217421396391899136
[*7] About the MVO, http://blogs.adobe.com/CCJKType/files/2012/07/TaroUTR50SortedList112.pdf

■CASオンラインショップでCAS-UBのユーザー登録をしていただくと、誰でも30日間だけ無償でご利用いただくことができます。
CAS-UB評価ライセンス

縦書きにおける文字の方向について、UTR#50改訂版ドラフトの内容紹介

縦書きにおける文字のデフォルト方向を定義するUnicodeの技術レポートUTR#50の新しい草案(Revison 3)が2月10日に公開されています。

Working draft of Proposed Draft Unicode Technical Report #50
UNICODE PROPERTIES FOR VERTICAL TEXT LAYOUT
http://www.unicode.org/reports/tr50/tr50-3.html

まだ作業中のようですが、以下に内容のあらましを紹介します。

Revision 2からの変更点は次のとおりです。

  1. Revison 2の中のEAC(East Asian Class)が取り除かれました。
  2. 従来のEAO(East Asian Orientation)は名前がEAVO(East Asian Vertical Orientation)に変更されました。
  3. 新しい特性として、DVO(Default Vertical Orientation)が導入されました。

EACは「日本語組版処理の要件」をもとにした空き量の調整ですが、これは、「縦組みにおける英数字成立論」でも疑問を提示しました通り、横組みにも適用されるものですし、そもそも空き量の調整は綺麗な組版のためのものなのでUnicodeのような文字コードレベルで規定するのがふさわしいかどうか疑問があります。取り除いたのは賢明と思います。

Revision 2ではEAOがEACに依存していましたが、この依存性に関する記述はなくなりました。この結果、本文からは全角文字と半角文字に関する記述はなくなりました。

DVOは次のように定義されています:
「文字がほとんど直立する世界における縦書きに使うことを意図している」(5 Properties)

この文章の意味はあまり明確ではありませんが、次の例が挙がっています。

  1. 西欧の縦組みテキストの例(文字を正立させて縦組みしている案内版)
  2. 日本の頭字語(DVD、TV)の例

EAOとDVOをどのように組み合わせるか、あるいは、なんらかの規則を設けるかなどは今後の検討課題となります(Editorial Warningsより)。

縦組みのときの方向特性値は従来どおりで変わりません。次のような定義です。

U:文字コード表に現れるのと同じ方向で直立する
S:文字コード表の方向から右に90度回転する
SB:横倒しにする括弧類
T:直立・横倒しではなくて縦組み時に異なるグリフ(字形)にする必要がある

新しいデータファイルが用意されています。
データファイル

基本ラテンの文字コード別にどのような割り当てになっているかを調べて見ます。

文字コード, DVOの値, EAVOの値
0020(‘ ‘), S , S (空白)
0021(!), U , S
0022(“) , U , S
0023(#) , U , S
0024($) , U , S
0025(%) , U , S
0026(&) , U , S
0027(‘) , U , S
0028(‘(‘) , S , S (開き括弧)
0029(‘)’) , S , S (閉じ括弧)
002A(*) , U , S
002B(+) , U , S
002C(,) , U , S
002D(-) , S , S
002E(.) , U , S
002F(/) , U , S
0030…0039(0…9) , U, S
003A(:) , U, S
003B(;) , U, S
003C(<) , U, S 003D(=) , U, S 003E(>) , U, S
003F(?) , U, S
0040(@) , U, S
0041…005A(A…Z) , U, S
005B([) , S , S
005C(\) , U , S (バックスラッシュ)
005D(]) , S , S
005E(^) , U , S
005F(_) , S , S
0060(`) , U , S
0061..007A(a…z) , U , S
007B({) , S , S
007C(|) , U , S
007D(}) , S , S
007E(~) , U , S

EAVOでは基本ラテンの(~U+007Eまでの)文字はすべて横倒しとなりますが、DVOでは縦書きにおいて括弧類など一部の文字(表でSになっている文字)のみを横倒し、ラテンアルファベットとアラビア数字はデフォルトで正立となります。DVOを使うと「縦組みにおける英数字正立論」の主張と同じとなります。

ここで規定する方向特性の値は、あくまでデフォルト値です。英数字はマークアップで明示的に指定して横倒しにすることはできます。

「縦組みにおける英数字正立論」では記号類は未検討でしたので、これから記号類を含めてもう少し精密な検討をして改訂したいと考えています。

○「縦組みにおける英数字正立論」:http://www.cas-ub.com/project/index.html 

○UTR#50付属のデータファイルでは、EAVO-A方式とEAVO-B方式の二通りがあります。A方式とはすべての記号類に’U’を割り当てる方式、B方式は矢印、数学記号、罫線記号、括弧に’S’を割り当て、その他の記号を’U’とする方式です。どちらが良いか意見を求めています。