DirectWrite有効時 特定固定幅フォントにて 半角文字2個が全角文字1個の幅にならない

  1. 便利にMery使われていただいています。ありがとうございます。
    DirectWrite有効時 特定固定幅フォントにて 半角文字2個が全角文字1個の幅にならない事象がありましたので報告します。DirectWrite無効時やフォントをMSゴシックにすると当該事象は発生しません。

    環境: Windows10 Pro
    フォント:IPAゴシック(固定幅フォント)
    再現方法:
    Mery起動後 フォントをIPAゴシックに変更、DirectWrite 有効(レンダリングモード標準、カラーフォント有効)とし下記のように入力すると

    あいうえお:
              :(スペース10個)
    ABCDEFGHIJ:

    コロン(:) の左右位置が同一となるべきところ1行目(あいうえお)が左寄りになってしまいます。
    なおDirectWrite無効にすると、期待通りコロンの位置は各行等しくなります。またフォントをMSゴシックにするとDirectWrite有効でもコロンの位置は各行等しくなります。

    以上です。

     |  nong  |  返信
  2. こんにちは。ご愛用ありがとうございます。

    > DirectWrite有効時 特定固定幅フォントにて 半角文字2個が全角文字1個の幅にならない事象がありましたので報告します。DirectWrite無効時やフォントをMSゴシックにすると当該事象は発生しません。

    DirectWrite の仕様と特定のフォントの仕様 (Ricty フォントでは既知の問題として公式サイトに記載されています) によるものです。

    以下、Ricty フォントの公式サイトの情報より転載させていただきます。

    ----
    半角文字と全角文字の横幅比が 1:2 にならないことがあります。ピクセル値 (px) が偶数でないとき、どのフォントでも起こりうる問題です。一般的な 96 DPI のフォントレンダリングでは 9 pt、10.5 pt、12 pt、13.5 pt、15 pt など、1.5 の倍数を指定すると 1:2 で表示されます。
    ----

    Ricty フォントに限らず、その他のフォントでも 1.5 の倍数のサイズを指定するとうまくいく可能性があります。

    また、Mery 側の機能として DirectWrite 使用時のフォント幅を強制的に GDI (DirectWrite オフ) の状態のフォント幅に合わせる隠しオプションがあります。上記の対処法でも治らない場合はこちらもお試しください。

    このオプションは Mery を閉じている状態で Mery.ini をメモ帳などで開き、[Display] セクションに GdiCompatible=1 を追記することで有効になります。

    ----
    [Display] 
    GdiCompatible=1
    ----

    以上、よろしくお願いいたします。

     |  Kuro  |  返信