ルーラーの文字数表記

  1. ルーラーの文字数表記
    どうもお世話になってます
    フォントとサイズが同じなのに
    仕事のエディタとMeryでルーラーの文字数違ってたので
    Meryの設定を見てたらDirectWriteのオンオフで変わるのですね
    仕事のエディタはMeryのオフの方の文字数でした
    (仕事のエディタもDirectWrite使ってるようですが)
    仕事の方と文字数合わせたいのですが
    仕事の方は弄れないし
    Meryは出来ればDirectWriteオンで使いたいので
    DirectWriteのオンオフで文字数合わせることは出来ないでしょうか

     |  kiyohiro  |  返信
  2. ご愛用いただきありがとうございます。

    "仕事のエディタ" はたぶん GDI という方式が使われているのだと思います。

    DirectWrite は GDI とは仕組み自体が異なるので、フォントにもよりますが完全に一致させることは難しいと思います。

    できるだけ一致させるということでしたら、以下のような方法があります。

    ① 「固定ピッチフォント」を使う

    MS ゴシックや白源 (HackGen) などの固定ピッチフォントを使うことで文字幅が揃うようになります。

    ② ①を設定した上で、Mery Ver 3.2.2 以降を使う

    Mery Ver 3.2.2 以降では DirectWrite を有効にしたときの文字幅の微妙なズレが改善されています。

    ③ 上記の設定でダメな場合、裏技を使う

    可変ピッチフォントを使う必要がある場合など、上記の設定でダメな場合は DirectWrite の文字幅を強制的に GDI と同じ文字幅にする隠し機能があります。

    Mery を終了 (タスクトレイに常駐している場合はトレイアイコンも終了) した状態で、メモ帳などを使って Mery.ini の Display セクションに GdiCompatible=1 を追加します。

    [Display]
    GdiCompatible=1

    これで描画は DirectWrite、文字幅は GDI になります。

    ただし、この機能は DirectWrite の文字を無理やり GDI の文字幅で描画するため、すべての文字が正しく描画されるとは限りません。

    文字によっては切れてしまうものもあると思います。絵文字も GDI ではサイズが異なることがあるので切れてしまうかもしれませんが、このあたりはサポート外の機能ということでご了承ください。

     |  Kuro  |  返信
  3. 返信ありがとうございます
    以下になりました

    > ① 「固定ピッチフォント」を使う
    > ② ①を設定した上で、Mery Ver 3.2.2 以降を使う
    フォントはどちらもMSゴシックサイズ10
    Mery v3.3.4 x64 Portable
    合わない

    > ③ 上記の設定でダメな場合、裏技を使う
    GdiCompatible=1
    合わないし文字化け

    DirectWriteの設定
    仕事のエディタは
    レンダリングモード GDI Natural
    になってたので
    Meryも
    GDI Natural
    ガンマ
    コンストラクト
    ClearType レベル
    同じにしても合わない

    もともと
    仕事先のエディタと
    持ち込みのUSBメモリに入れてる
    Mery Portableのルーラーの文字数表記
    が違ってたのでミスったのかと調べただけで
    見た目を合わせたほうがいいかな程度です
    仕事先のエディタは表示だけで
    作業はMeryなので問題ないです
    ありがとうございました。

     |  kiyohiro  |  返信
  4. ご返信ありがとうございます。

    仕事のエディタというのは GDI ではなくて DirectWrite だったのですね。勘違いしていました、すみません。

    差し支えなければ仕事のエディタの名前を教えていただけるとこちらでも同じ環境を用意して検証できるかもしれません。

    特にその必要がなければ、ご返信はどうぞお気遣いなく。

     |  Kuro  |  返信
  5. 返信ありがとうございます
    何せ仕事先のことなので次うかがうのは
    次の日曜日になりますし
    エディタのメニューにヘルプとかなく
    テキストクリックでエディタを開き
    作業メモを書いてるだけでかってにPC内を探す訳にもいかないので
    確認は難しいです

    だだ、他のテキストエディタはどうかと以前使ってた
    gPadを見ると同じような再現出来ました
    フォントはどちらもMSゴシックサイズ10
    レンダリングモードを
    どちらもGDI Naturalにしても
    どちらも標準にしても
    合わないです

     |  Kiyohiro  |  返信
  6. ご返信ありがとうございます。

    仕事のエディターの件、了解いたしました。エディターの名前が分かると解決の手掛かりになりますが、そういうことであれば仕方ないですね。

    私のほうでも gPad さんで確認してみました。

    gPad さんと Mery、ともに下記の設定に合わせて適当なテキストを入力してみました。

    フォント: MS ゴシック サイズ 10
    レンダリングモード: GDI Natural

    【結果】
    https://imgur.com/a/ZhSNS0X

    ルーラーは 50 で折り返してみましたが特に問題なくルーラーの文字数は一致していました。また、60、70... と折り返し位置を変更しみても折り返しの文字数は gPad さんと同じでした。

    ただ、参考画像を見ていただくと「もしかしてここ?」と書いてある部分で折り返し位置が異なります。

    これは禁則処理によるものですが、もしかしてこういう状態のことでしょうか?

    その場合、Mery の [ツール] の [オプション] から [基本] カテゴリの中の [禁則処理を行う] をオフにしていただくと一致するようになると思います。

    それでも一致しない場合、考えられる原因としては日本語以外 (タイ語とか?) の文章を扱っているとエディターごとの結合文字の実装の差で、ルーラーの文字数と一致しないことはあると思います。(これだと対応は難しいですが…)

    よろしくお願いいたします。

     |  Kuro  |  返信
  7. 返信ありがとうございます
    新規のMeryを試して比べると明らかにルーラーやフォントがおかしいですね
    新規のMeryはの設定は以下だけ元設定に合わしました
    フォント: MS ゴシック サイズ 10
    レンダリングモード: GDI Natural
    画像あっぷしましたがよくわからずダメかもしれません
    https://imgur.com/gdnVFMy
    よろしくお願いいたします

     |  kiyohiro  |  返信
  8. 画像、確認させていただきました。

    上側は「メイリオ」、下側は「MS ゴシック」だと思います。

    メイリオフォントは可変ピッチフォントなので、文字によって幅が異なるためルーラーの文字数と一致することはありません。

    また、エディターによっても可変ピッチフォントの実装は異なるため、他のエディターと完全に一致させることはできないと思います。

    設定を見直していただき、「MS ゴシック」などの固定ピッチフォントを使うように設定してみてください。

     |  Kuro  |  返信
  9. 前の画像の
    設定は
    MS ゴシック
    にしてるのですがなぜかフォント
    が変らないですね

    今度の画像は
    https://imgur.com/eJ4h7ZK
    BIZ UDゴシック
    で試しましたが
    ダメですね
    Mery.iniは
    FontName=BIZ UDゴシック
    になってます
    何かが邪魔してるのかと以下のフォルダを削除してもダメ
    Fonts
    Macros
    Plugins

     |  kiyohiro  |  返信
  10. DirectWriteオフなら
    フォントはBIZ UDゴシックになるみたいです
    https://imgur.com/urGUWZu

     |  kiyohiro  |  返信
  11. > 画像、確認させていただきました。
    > 上側は「メイリオ」、下側は「MS ゴシック」だと思います。
    メイリオで思い出しました
    最近フォントで色々試してました
    https://www.haijin-boys.com/discussions/6344
    ひょっとしたらフォントと設定は戻しましたが.ini内とかに残ってしまってるのでしょうか

     |  Kiyohiro  |  返信
  12. 画像、確認させていただきました。

    新規の Portable 版だと正常に表示されるとのことなので、設定によるものだと思いますが以下の検証では問題なかったです。

    ① 画像にある、フォールバックフォントの Last Resort フォントをインストールしてフォールバックフォントとして設定
    → 問題なし

    ② そのまま Last Resort フォントをアンインストールしてみる
    → 問題なし

    ③ meiryoKe_650r1.ttc をインストール
    → 問題なし

    ④ meiryoKe_650r1.ttc を Fonts フォルダに入れてみる
    → 問題なし

    ⑤ Windows の互換モードで DirectWrite がオフになることがあるらしい
    → ダークモードが使えているようなので互換モードはオフになってると思います

    ⑥ Windows の機能でアプリ単位で勝手に DirectWrite の動作を抑制されることがあるらしい (フォールトトレラントヒープ)
    → 再現の仕方がわからず検証できていません

    画像を見る感じですと DirectWrite が正常に動作していないように思います。

    Mery の場合、DirectWrite でフォントを正常に読み込めなかった場合に代わりのフォントとしてメイリオを使うようにしているので、何らかの原因で DirectWrite でエラーが発生している可能性があります。

    > ひょっとしたらフォントと設定は戻しましたが.ini内とかに残ってしまってるのでしょうか

    その可能性はありますね。

    差し支えなければ Mery.ini をメールで送っていただけると調査いたします。

     |  Kuro  |  返信
  13. 先程メールしました
    Gmailでブロックされるファイルもあるので
    届かなければご報告ください

     |  kiyohiro  |  返信
  14. ありがとうございます。

    メールのほう確認してみたのですが、まだ届いていないようです。

    Gmail だとファイルの拡張子 .ini とかはブロックされるのかもしれないですね。拡張子を .txt に変更して再送してみていただけますでしょうか。

     |  Kuro  |  返信
  15. 再送しました
    Mery.iniからMery.txtに変更

     |  kiyohiro  |  返信
  16. ありがとうございます。無事、受信できました。

    確認しましたところ、原因が分かりました。

    FallbackFonts の項目の "Last Resort" の後ろに必要のないカンマ「,」が入っていました。

    [Display]
    FallbackFonts="Last Resort",←これ

    このため DirectWrite がフォントを読み込めず動作不良を起こしているようです。

    普通に画面上の [追加]、[削除] ボタンからフォールバックフォントを操作したり、追加したフォントを Windows からアンインストールした場合は問題ないようなので、Mery.ini を直接編集されたときにカンマが混入してしまったのかもしれませんね。

    修正する方法ですが、以下の画像のように DirectWrite のフォールバックフォントの一覧の Last Resort の下に謎の空項目があるので、選択して [削除] してみてください。

    【参考画像】
    https://imgur.com/a/a1FtwFq

    よろしくお願いいたします。

     |  Kuro  |  返信
  17. 調査ありがとうございます
    謎の空項目削除で治りました

    ただ一応報告しますが
    おかしくなったのは最近で
    Mery.ini を直接編集したことは数えるほどしかなく
    フォールバックフォント実装以前のかなり前
    覚えてるだけで
    隠しオプションの
    Zen モード
    タブ幅
    クリップボード
    キャレット
    を試したぐらいで最近は
    上記のGdiCompatible=1を試した時で
    すでにおかしくなった後ですね

     |  kiyohiro  |  返信
  18. 解決したようで良かったです。

    検証していたら以下の条件下で現象が再現できました。

    フォールバックフォントの一覧で初期状態では項目が選択されていますが、一覧の何もないところをクリックして選択を解除してから [追加] ボタンをクリック。

    その後、フォントの選択ダイアログが表示されますが、そこで何も選択せずに [OK] ボタンをクリックすると空の項目が作成されてしまうようです。

    恐らく何かの拍子に上記の操作で空の項目が作成されてしまったのだと思います。

    フォントを選択しない状態で追加できてしまうのは想定外の動作なので次のバージョンでは修正しておこうと思います。

     |  Kuro  |  返信
  19. すみません、もうひとつ再現方法がありました。こちらのほうが可能性が高いかもしれません。

    ① フォントをインストールしてフォールバックフォントに追加
    ② そのフォントをアンインストール
    ③ フォールバックフォントの一覧にはアンインストールしたフォントが残っているので、それを選択して [追加] ボタンをクリック
    ④ フォントの選択ダイアログが表示されますが、何も選択されていない状態になるのでそのまま [OK] ボタンをクリック

    この場合もフォントの選択ダイアログで何も選択していないのに [OK] ボタンがクリックできてしまうのが原因です。

    再発防止のため、次のバージョンのリリースまではフォールバックフォントのフォント選択ダイアログで何も選択せず [OK] ボタンを押してしまわないようお気を付けくださいませ。

     |  Kuro  |  返信
  20. 原因究明までありがとうございます
    今はフォントを使い分けていて頻繁に変更してます
    テキストエディタ使いの時 MeiryoKe
    .iniとかの時 白源
    青空文庫とかZenで読み物 IPAeX明朝
    仕事でusbにいれてるのは無難なMSゴシック
    フォールバックはLast Resort入れれば無い文字がわかり便利
    など
    完全に納得がいくフォント/フォールバックフォント
    が見つけられてないので試すことも多いので
    気をつけます

     |  Kiyohiro  |  返信
スポンサーリンク