ブログトップ 記事一覧 ログイン 無料ブログ開設

ちくちく日記 このページをアンテナに追加 RSSフィード Twitter

2013-06-13

CSS3での日本語縦中横を考える

【問題】

日本語縦組で文字が縦中横されたとき、組まれた文字の文字幅はどうなっているのが正解か

A. 1文字の幅(1em)に納める

B. 何もせずそのままの幅にしておく

f:id:akane_neko:20130613173203p:image

▲(左)A. 1文字の幅(1em)に納める (右)B. 何もせずそのままの幅にしておく

何の話をしているのかというと、これ、、CSS Writing Modes Level3で定義される日本語縦組での縦中横の処理の話である。




先日、村上さん小形さんお二人の呼びかけで「fantasai(ファンタサイ)さんを囲む夕べ」という飲み会が開催されました。

fantasaiさんはイラン系アメリカ人の女性で、CSSの他言語対応(もちろんその中には日本語も含まれる)に尽力なさっている方。

彼女が来日したのに合わせて、せっかくなのでお食事でもご一緒しましょうという企画です。

参加者は小形さん、村上さん含め10名程度。それぞれフォントの制作者、タイプデザイナー、組版のエキスパート、EPUB制作のエキスパート、文字コードなどのエキスパート、EPUBリーダーの制作者など、様々な立場から日本語組版に取り組んでいる人たち。(ちなみに私はなんのエキスパートでもありませんが……fantasaiさんにはDTPオペレータと紹介されました)

つまりこの飲み会は「CSS3策定に携わる方に実際に日本語組版を行う立場の者が話をしよう、話をきこう」というもの。

そしてその場でfantasaiさんから参加者に出された質問が冒頭の問題。これ、現在CSS3で議論されている日本語の縦中横の仕様についての質問です。


私はこの問題について

  • CSS3の仕様ということで、ここの仕様はWebブラウザやEPUBリーダーでの縦組表示の規準となる。つまりユーザーが自由に行間、フォントサイズを設定する環境で使われるものである
  • 通常の縦中横(2桁あるいは3桁)であれば、長体をかけて1em幅に納めてしまった方が、どんな行間設定であっても隣の行のルビなどに重なる心配がない

という観点から「A. 1文字の幅(1em)に長体をかけて納める」に1票を入れました。

ですが参加者の意見は割れまして、確かAに4票、Bに2票、その他が2票。

A以外を選んだ人の意見は確か「フォントに長体をかけて欲しくない」というのが主な主張だったと思う(多分字形の見た目の問題?その主張については具体的な理由はわからなかった)

面白かったのは「フォントに長体をかけて欲しくない」うち「その他」を選択した二人の意見で「日本語フォントにはそのためにデザインされた二分三分四分幅の数字字形が用意されているのだからそれを使って欲しい」というもの。

この意見は参加者のうち、タイプデザイナーとフォント制作者という「フォント制作に関わる人たち」が主張。なるほど、フォントを作っている人からすれば「せっかく組んだ時に美しくなるようにグリフを用意しているのだからそれを使って欲しい」と思うのは当然だろう。この「グリフが用意されているならそれを使う」という条件には全員が同意。

ただし、これはCSS3という規格の為の質問なので、この仕様を使うのは主にWebブラウザーやEPUBリーダーなどであり、そこの表示につねににグリフをもった日本語フォントが用意されているとは限らない。

問題は二分三分四分幅のグリフをもたないフォントで表示されたときはどうするか?

ここの意見はなかなかまとまらず、紛糾。

私は上にも述べたように「ユーザーが行間を調整したときに、隣の行のルビと重なる恐れがある」のが嫌だったので「1em幅に納める」を推したんだけど、長体をかけて納める事を良しとしない主張の方もいて、どうしてもまとまらない。

時間もあまり無い中(この質問は食事会の後半になって出されたので)とにかくその場の参加者の総意をまとめなければならないという事でその場でだされた折衷案

(1)もし(二分三分四分幅といった)狭い幅のグリフがあればなるべく1em幅に収まるようそれを使う。

(2)縦中横にした幅≦行高(前後の行間アキを半分ずつ含む)であればそれを許容。

(3)縦中横にした幅>行高であれば、行高(前後の行間アキを半分ずつ含む)に収まるように幅を圧縮。

つまり行間の半分までははみ出す事を許容する、という案。

結局この案だと、1em幅からのはみ出しを認めているので、ユーザーが行間を狭くした時となりの行のルビ等と重なる恐れがある。

f:id:akane_neko:20130613173204p:image

▲(左)行間の半分までははみ出しOK。それ以上は長体 (右)用意されている二分三分四分幅グリフを使用


私はルビが重なったりするのは嫌だったんだけど、結局「縦中横の桁数、文字数については制限はないので、5桁以上の組数字、組文字もありえる」という条件から、すべて1emに押し込めるのはムリかもしれないということでこの案に同意しました。

さらにこの合意はCSS3の縦中横の規格のためのもので

・CSS4以降でもっと細かな調整が可能にしたいと考えている。

・しかし、それをするためにはまずCSS3を勧告にすることが必要。

という説明がfantasaiさんからありました(つまり、今回決めた規格は今後変更可能であるが、とりあえず今規格を決める必要がある)

この場で合意した内容について、翌日fantasaiさんがcss-writing-modes のMLに投稿しています。(http://lists.w3.org/Archives/Public/www-style/2013Jun/0207.html

以下その内容

[css-writing-modes] Tate-chu-yoko sizing rules

昨日、村上さんは、10人の日本のタイポグラファ/タイプ・デザイナー/DTPオペレータのグループと、私を夕食に招待しました。

自然に、私はその日の問題(縦中横)について、彼らに説明しました。

我々は、2つのオプションから(話を)始めました、

A)1emに押し込む

B)何もしない

テーブルは4対2に割れました、しかし、2人の他の人は「場合による」というオプションC)を強く要求しました。

日本語の多くの議論の後、テーブルのグループは、以下のルールについてのコンセンサスにたどり着きました:

(1)もし(二分三分四分幅といった)狭い幅のグリフがあればなるべく1em幅に収まるようそれを使う。

(2)縦中横にした幅≦行高(前後の行間アキを半分ずつ含む)であればそれを許容。

(3)縦中横にした幅>行高であれば、行高(前後の行間アキを半分ずつ含む)に収まるように幅を圧縮。

私は、ラインハイトが狭すぎる場合、縦中横とルビがくっついてしまってもOKかと尋ねたところ、彼等はそれが許容できると言い、それが彼等の必要とするルールであることを私に保証しました。

我々が議論のために使ったスケッチは、ここにあります:

http://lists.w3.org/Archives/Public/www-archive/2013Jun/att-0069/shinjuku-2013-06-11.png

このコンセンサスを反映するためにCSS Writing Modesを編集したいと思います。これに対して異議がありますか?

この投稿に対して、MLの他の参加者からは、現在すすめようとしているLevel3の仕様「1emに収めるようにすること、でも方法は何でもよい。1/Nグリフを使うか、圧縮するかどうかなど、特に定めない」のままでよいのではないか。それ以上の機能についてはLevel4で設定すればよい。といった意見が出ているようです。

私も、とりあえずLevel3では「1emにおさめる」でいいような気がしています。

確かに5桁以上の文字数が来たりするとかなり読みにくくなるのだけど、そもそもそんな桁数を縦中横に入れるのが間違ってると思うので、そういう意味では読みにくくなる方がいいのかもしれない。

あと、二分三分四分幅のグリフを使うというのはかなりきれいな解決なのだけど、ある種、必要以上のこだわりと取られてしまうのではないかということ。(これ、CSSで決めなくてもそういう表示にこだわりのあるReaderだったらそこに個別に実装すればいいのではないか?それって難しいの?)

しかしこの件については、正直もっと議論というかいろんな人の意見が必要だと思う。少なくともあの場のあのテーブルで出た意見だけがすべてではないと思う。

縦中横については、数字だけではなく欧文、および日本語であっても設定可能という条件なので、数字はともかく欧文のときもこの条件でいいのか?という疑問もあります。


と、いうか今回こういう議論に思いもかけず参加することになって思ったけど、こういう規格ってなんとなく雲の上の「すごくよくわかってる人」達が決めてるんだろうと思ってたの。

だから、私たちが意見を言わなくたってちゃんとしてくれるんだろうと思ってたし、なんか変な規格(先日あった、日本語の縦組でイタリックを指定するとか)が通りそうとかいう噂が聞こえてくると「え、ちょっとだれか偉い人、ちゃんとしてよ」という「自分にはどうしようもないけど、だれかなんとかして」という感じだったの。

でも実際、飲み会の場でわいわいと決めた意見をMLにとりあげて貰った事で「え、規格って意外と身近なところで決まってるの?そんで私たちの意見も聞いてもらえるの?」という、なんていうかスーパーモデルだと思ってたら、実は隣にすんでるねーちゃんだったみたいな身近感が!正装しなけりゃ入れない高級レストランかと思ってたら、中はお手頃価格のビストロ居酒屋だったみたいな気安感が!やだ!これならしょっちゅう食べに来れるじゃない!通っちゃおうかしら!よーし、パパCSS3の仕様について勉強しちゃうぞー!!!


でも、実際には全部英語なんだよねー…

(立ちはだかる語学力の壁。遠のく親近感)

あ、ちなみに当日の議論は全部日本語で、fantasaiさんには村上さんが通訳をしてくださるという状況でした。村上さん、ありがとうございました。

山本太郎山本太郎 2013/06/14 11:12 明示的にGSUBで半角グリフを指定する方法がオプションとして提供されることを前提にすれば、何もしないのが安全では。はみ出しが許容される場合もあれば、許容されない場合もあるから。

akane_nekoakane_neko 2013/06/14 21:22 山本太郎様

何もしないのが安全というのもわかるのですが、何もルールがない状態だと
https://twitter.com/akane_neko/status/345344525583130625
こういうのもありになっちゃうのかなーと思うと、最低限の処理は必要かと思ったりです。

akane_nekoakane_neko 2013/06/15 02:12 山本太郎様

その後つらつらと考えて
(1)行のセンター合わせで組文字をおく
(2)GSUBでのグリフ指定をオプションとして用意する

でいいかなぁと思えてきました。
長体をかけるかけないはリーダーやブラウザ側で必要なら実装する、でいいのかなぁ

狩野狩野 2013/06/15 11:06 半角グリフはhwid, 三分はtwid, 四分はqwidとそれぞれ別のGSUBフィーチャ名ですから、今の仕様だと縦中横の字数に応じて別の属性を用意してやらなければならず、「内容と体裁の分離」が十分できていないことになります。
CSS側に「要素に含まれる字数が何文字以上何文字以内である」ということを表すセレクタを導入するのが望ましいかと思います。縦中横に限らず、見出しのルビ処理・字取りなど、日本語組版において「何文字ならこうする」という振り分け処理ができると細かく指定できる場合は他にも多々あるかと思います。

akane_nekoakane_neko 2013/06/17 09:41 「何文字ならこうする」という振り分け処理をしたいという意見は結構ありますね。そういうのがCSSで指定できるのかどうかわかりません…。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証