none
フォントごとに随意合字の対象となる文字列を列挙するには? RRS feed

  • 質問

  • 随意合字が有効になっていると、フォントによって合字される文字列が異なる。どのようにしたら知ることができるのでしょう?

    次の画像は、Windows ストア・アプリで Typography.DiscretionaryLigatures プロパティを True にした場合の例です。

    中央の3行は、同じ文字列を異なるフォントで表示しています (上から、Meiryo、Yu Gothic、Meiryo UI)。フォントによって、合字される文字が異なっています。

    何が随意合字の対象になるのかはフォント ファイル中にデータがあると思われますが、その一覧はどこかにないでしょうか? あるいは、プログラムで一覧するにはどうしたらよいでしょうか?

    ちなみに、Windows ストア アプリの開発で一般的に使われる StandardStyles.xaml ファイルでは Typography.DiscretionaryLigatures プロパティが True に設定されているので、そこに定義されているスタイルを適用すると意図せず随意合字されてしまいます。

    [追記]
    半角英字も単語を無視して随意合字されてしまいます。


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]



    • 編集済み biacMVP 2013年2月13日 12:30 追記
    2013年2月13日 3:12

すべての返信

  • 直接の回答にはなっていません。

    合字自体はWindowsというより、OpenTypeの仕様で決まっています。上では㍉の例が挙げられていますが、他にも「昭和→㍼」や「平成→㍻」等も合字されると思います。

    どの文字がどの様に合字されるか(置き換わるか)という参照表を見つけられなかったのですが、合字されるかどうかは、各フォントのその文字のGSUBテーブルの内容により決定されるようです。

    http://www.microsoft.com/typography/otspec/GSUB.htm



    Tadahiro Ishisaka(http://www.isisaka.com/)

    • 回答の候補に設定 佐伯玲 2013年2月20日 2:37
    • 回答の候補の設定解除 biacMVP 2013年2月21日 1:44
    2013年2月18日 7:05
  • ishisaka さん、ありがとうございます。

    なるほど、GSUBテーブルですか。
    FontFamilyを元にして、フォントファイルからGSUBテーブルを読み出すにはどうしたらよいのでしょう?
    ・Windows ストア アプリからは可能?
    ・.NET Framework ならば可能?


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]

    2013年2月21日 1:44
  • 随意合字が有効になっていると欧文フォント、たとえば Segoe UI では次のようになります。

    "ffi"、"fi"、"fl"、"ff"などが合字されていることが分かります。
    この合字は、読みやすくなると言っていいでしょう。また、知らずに合字が有効になっていても、特に困りはしないでしょう。
    ※ だから、Windows ストアアプリのテンプレートでは ON にしてあると推測できる。

    日本語フォントで同様な合字を考えると、たとえば「カ゛」を「ガ」にすることなどが考えられます。
    しかし、Meiryo や Yu Gothic では、そのような合字は起きないようです。
    そして、読みにくくなる「ファミリー」→「ファ㍉ー」という合字が実装されています。欧文フォントとは逆向きの(=読みにくくなる)効果です。なにより、うっかり表示してしまうととても恥ずかしいことになります。

    だから私の根本的な問いはこうです。「なぜ日本語フォントの合字は恥ずかしくなるような実装にしたのか?」


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]

    2013年2月21日 2:41