フォールバック カスタムフォント

  1. どうもお世話になってます

    フォールバックの記事を見ていて
    カスタムフォントは非対応になってますが
    これ対応は無理なんでしょうか?

    好みの白源やUDEV Gothicは円記号の問題でここだけネックでしたが
    思いつきで
    円記号だけのフォントを作りこれをMeryのフォントに登録
    フォールバックでUDEV Gothic(JPDOC版)と保険にMSゴシックとLastResortにすると
    うまく日本語フォント風になり成功
    https://imgur.com/1U37dM2
    理想のフォント表示になったと喜びましたが
    カスタムフォントがフォールバック非対応なので
    ポータブ環境では使えず、ぐぬぬとなってます
    あとフォールバックの所の上下移動ボタンは無くなったのですか?
    ドラッグで移動できるので問題ないのですが
    フォールバックの記事を見ていたのであれ?となりました

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

    > フォールバックの記事を見ていてカスタムフォントは非対応になってますがこれ対応は無理なんでしょうか?

    はい。私が調べた限りですと DirectWrite 自体にそういった機能ないので Mery でも対応できない状態です。

    技術的な話になってしまいますが…

    【参考】IDWriteFactory2::GetSystemFontFallback メソッド (dwrite_2.h)
    https://learn.microsoft.com/ja-jp/windows/win32/api/dwrite_2/nf-dwrite_2-idwritefactory2-getsystemfontfallback

    現状、DirectWrite の API は上記の GetSystemFontFallback しか用意されておらず、システムフォント (インストール済みのフォント) からしかフォールバックフォントを取得できません。

    Get'Custom'FontFallback みたいな感じの API を Microsoft が用意してくれると良いのですけれどね。また、他に方法をご存じのかたがいらっしゃったら情報をいただけるとありがたいです。

    > あとフォールバックの所の上下移動ボタンは無くなったのですか?

    はい。オプション画面のスペースの都合により Ver 3.3.2 で上下ボタンは削除して、その代わりにドラッグアンドドロップで移動できるようにしました。

     |  Kuro  |  返信
  3. 回答ありがとうございます
    分かりました
    それなら仕方ないですね
    仕事で使うならUSBメモリに入るPortable対応が必要だったもので
    まあ、家で使う時のフォント問題が解決しただけでも嬉しいです

    もう一つ質問お願いします
    フォントによってルーラーや行間等レイアウトが変わりますが
    これフォントのどの部分で判断してるのでしょうか?
    今回の円記号.ttfは自作で入ってるのは円記号1文字だけ
    等幅とUDEV Gothicの他の記号の大きさのバランスのみ意識したものです
    UDEV Gothicと比べると行間が詰まってしまうので円記号.ttfの修正で行けるなら
    合わせたいです
    よろしくお願いします

     |  kiyohiro  |  返信
  4. DirectWrite は現在でも機能追加されていってるので将来的にはできるようになるかもしれないですね。

    > フォントによってルーラーや行間等レイアウトが変わりますがこれフォントのどの部分で判断してるのでしょうか?

    フォントについては詳しくないので ttf ファイルの仕様までは分かりかねますが、プログラムとしては以下の記事で行間について説明しています。

    https://www.haijin-boys.com/software/mery/mery-2-6-11#:~:text=%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F-,GDI%20%E3%81%A7%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE%E8%A1%8C%E9%96%93,-%E3%81%AF%E3%80%81TEXTMETRIC%20(%E6%96%87%E5%AD%97

    フォントによっては GDI (DirectWrite オフ) と DirectWrite で取得できる行間の情報が異なるケースがあるようですが、Mery の場合、横書き時の行間は DirectWrite のオン・オフにかかわらず GDI の行間を採用しています。

    ルーラーの幅は「0」の文字から取得した幅を基準にしています。

     |  Kuro  |  返信
  5. こんにちは。UDEV Gothicの作者です。

    > UDEV Gothicと比べると行間が詰まってしまうので円記号.ttfの修正で行けるなら
    > 合わせたいです

    FontForgeをお使いなら、
    https://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=%A5%D5%A5%A9%A5%F3%A5%C8%A4%CE%B9%E7%C0%AE
    のサイトで紹介されている、「ベースにするフォント(Migu1M)の調整」という章を参考に、そのあたりの各種パラメーターをいじってみると行の高さが変わると思いますので、よければお試しあれ。(フォントフォールバックとの兼ね合いで意図せず高さが変わったりしないかとかは、ちょっと分かりませんが…)

     |  yuko  |  返信
  6. Kuroさん
    yukoさん
    色々アドバイスありがとうございます
    頂いた情報を元に試してみます

    特にUDEVGothicの作者さんはここでよくお見かけするので
    例え1文字でも表示が変わってるので怒られるかな
    でもフォールバック機能なのでok、怒られたた止めようとか考えてました

    FontForgePortable使いました
    しかし今回のフォールバックを使って円記号の変更を思いつき
    1文字位なら簡単かと思い始めたのですが
    完全素人だとむちゃくちゃムズいですね
    2週間ぐらい色んなサイトとにらめっこしてやっと出来ました
    しかも何処をどういじったのか覚えてないので
    教えて頂いたサイトを参考にまた色々試してみます

     |  kiyohiro  |  返信
  7. >> yuko さん

    サポートのご協力ありがとうございます。

    UDEV Gothic、最強です!HackGen と行ったり来たりしてますがどちらも愛用させていただいてます。

    DirectWrite のフォントフォールバックの仕様はブラックボックスなので、フォールバックしたときの行間がどうなるかは謎ですが…

    >> kiyohiro さん

    なんかすごいことやってますねー。

    フォントの制作は未知の領域なのでお役に立てないと思いますが、なければ作るの精神、素敵です。

    Mery の仕様についてなら回答できると思うのでまたお気軽にどうぞー

     |  Kuro  |  返信
  8. 一応完成しました
    https://imgur.com/lPGMZbo
    多分色々間違っていると思いますが
    表示出来てるので後は無視
    と言うかもう触りたくない
    素人は手を出すべきではなかった
    まず、FontForgeの使いかたが分からない
    ググっても情報が少なく古い
    専門用語だらけで設定が多すぎ
    正解の数値か分からないので適当
    少し変更したらフォント生成してMeryで確認の繰り返し
    たった1文字で死にかけました

    > ルーラーの幅は「0」の文字から取得した幅を基準にしています。
    円記号.ttfは
    円記号しか入ってないので
    https://imgur.com/7mXMMaf
    ルーラーと行番号は
    フォールバックのUDEV Gothic(JPDOC版)
    で表示されてるみたい
    行間は
    エレメント -> フォント情報 ->OS/2 -> メトリック
    のWin AscentとWin Descentで設定出来るみたい

    >> yuko さん
    UDEV Gothic(JPDOC版)v1.2.0で○が半角表示されます
    (全角表示されるようになる記号一覧は こちら)には入っているし
    v1.1.0では全角表示でした
    ご確認お願いします。

     |  kiyohiro  |  返信
  9. >> kiyohiroさん

    > 例え1文字でも表示が変わってるので怒られるかな

    いえいえ、オープンソースにしてしまっていますし、自由にご自身の好きなものにしていただいていいと思います。
    その探究心や、あっぱれ!です。

    FontForge、曲者なんですよね。基本的にLinuxのオープンソースツールなので、インストール方法も色々ありますし… バージョンによって、できることやUIなんかも微妙に異なったりして、難解です。

    個人的には、手始めにまず「Em Size」というのをUDEV Gothicと同じ値に調整してみるといいと思います。
    EMはいわば「グリフの縦の解像度」的なものなのですが、EMが異なっていてもフォールバックフォントとの文字サイズが違和感なく調整されているのを見るに、DirectWriteがよしなに拡大・縮小してフォント間のEM差を埋めている気がします。そのときに幅が微妙~にずれたりするんですよね。なので、まずはEMを元フォントとフォールバックフォント間で同じにすると、狙った幅や行間になりやすいのではないかなぁと想像しています。

    > UDEV Gothic(JPDOC版)v1.2.0で○が半角表示されます
    > (全角表示されるようになる記号一覧は こちら)には入っているし
    > v1.1.0では全角表示でした

    そうですね、別口でも報告が上がってきているんですが、JetBrains Monoのアップデートにより一部の記号が半角表示になってしまっているんです。

    ちなみに「全角表示されるようになる記号一覧」に入っているのは、「○ (U+25CB)」ではなく、「◯ (U+25EF)」の方ですね。見た目がややこしいですが別の記号なので、もともと「○ (U+25CB)」の方は全角表示を想定していなかったのです。
    その状況で、JetBrains Monoに「○ (U+25CB)」が新たに追加されてしまったので、意図せず半角化してしまったんですよね。

    このあたりの問題は、こちらで扱っています。 https://github.com/yuru7/udev-gothic/issues/14
    整理しつつ、そのうち「○ (U+25CB)」もJPDOC版では全角にするつもりです。

    >> Kuroさん

    そう言っていただけて何よりです😎
    私も、最近は大抵UDEV Gothicを使っています。HackGenで判読性を上げるべくたくさん癖付けしてきた胃もたれ的な反動か、あっさり癖のないUDEV Gothicはなんだかしっくり来ますw

    ただ、ブラウザのようなメイリオが基本なページ上では違和感強めなので、ブラウザ固定幅フォントだけはPlemolJP 35を使っています。手前味噌ながら、こうやって選択肢が多いのは良いことですね。

     |  yuko  |  返信
  10. >> yuko さん
    回答ありがとうございます
    打ち間違いが多いので
    英字や数字が認識しやすいし日本語も綺麗な
    UDEV GothicやHackGenを使いたいと思ったのですが
    日本語フォントに慣れてるので
    円記号がどうしても違和感が強く何とかならないかと考え
    フォールバック機能を思いつき1文字ならと始めたのですが
    こんなに難しいとは思いませんでしたが
    お2人のアドバイスで何とか日本語フォント風UDEV Gothic表示に成功しました

    ??も少し気になるので(特に半角の方)修正したかったのですが
    1文字で力尽きたので諦めましたが
    > 個人的には、手始めにまず「Em Size」というのをUDEV Gothicと同じ値に調整してみるといいと思います。
    を試してみたいですね
    まあ、しばらくはやる気が出ないですが

    > 「○ (U+25CB)」ではなく、「◯ (U+25EF)」の方ですね。
    別物でしたか○はよく使うので
    変換で○の方が登録されていてそればかりできずきませんでした

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