パスワードを忘れた? アカウント作成
10136902 journal
日記

Torisugariの日記: フリーの縦書きフォント 5

日記 by Torisugari

今年も残すところあと2か月、思い立って、ハガキに宛名を印刷するためのプログラムを書き始めました。大雑把な計画としては、

1. CSVファイルに名前、郵便番号、住所が記載されている状態

2. 各データを読み込んで解釈し、「様」をつけたりした状態

3. 各データを元にPDFに出力した状態

4.  葉書に印刷された状態

です。このうち、3→4については、どのプラットフォームでも(おそらく)lprコマンドのようなもので一発なので、問題にはならないでしょう。一方、1→2は、妥協すればある程度簡単かもしれませんが、「住所の自動改行」というテーマに取り組むとすれば、終わりがなかなか見えません。世の中には「市川市」や「四日市市」のように、人間の目でも俄かに区切りを判断しづらい住所がいくつもあります。ただ、まあ、一番面白い分野ではあるでしょう。

残りの2→3は、既存のライブラリを組み合わせれば(cairo+harfbuzz)、やっつけで出来そうなので、そうこうするうちに、とりあえず出力させるところまではできました。そこで、試しにM+Migmix及び漢字データプロジェクト版花園明朝の3つのフォントを使って、背景にネットで拾った高画質の葉書画像(元の画像は神戸郵趣会のもの)を張り付けた出力結果がこちらです。

M+(pdf)
Migmix(「M+」と「IPAフォント」の合成フォント)(pdf)
花園明朝KDP(pdf)

改めて比べてみると、予想通り、対応している漢字の数が上から順に多くなっているので空いているところが順番に少なくなっています。予想といささか違っていたのは、IPAフォントに「㺭」が入っていなかった点くらいでしょうか。

意外に思ったのは、どのフォントも異体字セレクタに対応していたことです。収録しているグリフの数にかなりの違いがあるので、調べていけば差が出てくると思いますが、M+でもメジャーどころは抑えられているようです。

縦書き特有の問題として、「タワー」の「ー」の部分が横のまま、というのがありがちですが、この3つに関しては「ー」は全て縦になっているので問題ありません。しかし、住所のハイフン(-)がきちんと縦になっているのはM+だけでした。おそらく、MigmixはベースにしているM+のバージョンが古いのでしょう。実のところ、Unicodeにはハイフンっぽいものがマイナスや全角を含めて5種類くらいあるのですが、M+が縦に表示するのはハイフンだけのようなので、何らかの対応をする必要があります。まあ、縦書きのマイナスは縦にすべきなのか、と聞かれると俄かには答えられませんけれども、住所として書かれている場合は、まず間違いなく縦に表示されてほしいでしょうから、フォントが対応しないようなら、collationアルゴリズムか何かで一元化した方がよいのかもしれません。

KDPにも説明があるように、花園明朝は拗音(文中の「チュ」や「リィ」のように小さい字を含む部分)の位置が残念なことになっています。「ー」のように、対称移動で即座に計算が終わるグリフと違って、横書きの「ィ」から縦書きの「ィ」の正しい位置を計算するのは面倒なのでしょう。これは、ある意味、GlyphWikiの構造的な問題なのかもしれませんが、矩形をうまくとれば、計算自体は可能だろうと思います。

もう住所とは全く関係ない世界に突入してきているので、軽く触れるだけにしておきますけれど、花園明朝KDPは、返り点を「縦書き半角」にしていて、半角スペースでも縦書きでは全角進むくせに、返り点は半分しか進みません。さらに、「一」と「レ」は合字(リガチャ)になっていて、合計で半角しか進みません。つまり、「楚人有㆘鬻㆓盾與㆒㆑矛者㆖」はUnicodeで13文字ですが、グリフ換算では12字になっていて、10文字分の長さです。この縦書きの合字、拡大して眺めていると、じわじわ来ます。

小学生みたいな感想ですが、まあ、何にせよフォント次第ですね。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Ryo.F (3896) on 2013年11月01日 13時15分 (#2488186) 日記

    「住所の自動改行」というテーマに取り組むとすれば、終わりがなかなか見えません。

    郵便番号で省略できる部分を省略する、ってことでいいのでは、と思わなくもありません。

    • by Torisugari (25483) on 2013年11月01日 19時01分 (#2488455) 日記

      たしかに、メッセージを届ける、という観点からは、それが最も合理的だと思います。

      でも、「ハガキ 宛名 書式」で検索すると、大概のサイトには「都道府県名すら省略すると失礼」って書いてあるんですよね。しかも、「2行目は1行目より短い」とか、「2行目は1行目と下揃えにするから、頭に大きなインデントを置く」みたいに、わざわざ明記してないけどこれくらい常識だろ、っぽいルールもありそうです。だって、書いてませんけど、どのサイトの例もそんな感じになっていますからね。

      まあ、こればっかりやってるならともかく、あまりこだわると、今年中に完成しないかもしれないので、ほどほどに手抜きするつもりですけれど。

      親コメント
  • by Anonymous Coward on 2013年11月01日 7時03分 (#2487969)

    補助漢字にもJIS X 0213にもAdobe-Japan1にすら入っていないのですから、入っているほうが不思議ではありませんかね。IPAmj明朝との合成ならともかく。

    • 「㺭」は拡張Aですから、Unicodeに入ってからは随分経っているので引っ掛かったんですよ。でも、まあ、JIS X xxxxの話をされると、日本産のフォントに入っていなくて当然だな、と納得してしまいます。メイリオみたいに新しいフォントにも影響力があるってことですよね。

      IPAmj明朝も試してみました。

      「㺭」は入っていますけれど、それよりも、ipaexm.ttfやipaexg.ttfで縦になっていたハイフンが、ipamjm.ttfではまた横になっているので、どういう経緯でフォークしてきたのか気になります。

      親コメント
    • by Anonymous Coward

      メイリオにもMSゴシックにも含まれていなさげなので、フリーフォントだけの問題(?)というわけでもなさそうですね。

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...