[ 新規に投稿する ]

Nerd Font を指定すると追加された文字が表示されない。No.40035
にしかぜ さん 22/09/22 01:12 [ コメントを投稿する ]
  Windows10 21H2
秀丸 9.18 64bit

特殊な事例ではあるのですが。
以下のような NerdFont (特殊記号フォント) を埋め込んだフォントを使用したときに NerdFont の文字が表示されません。

これらの NerdFont 対応版
[yuru7/Firge](https://github.com/yuru7/Firge)
FirgeNerdConsole-Regular
[yuru7/udev-gothic](https://github.com/yuru7/udev-gothic)
UDEVGothicNF-Regular
で確認しています。

文字コードはこちらのページで
https://www.nerdfonts.com/cheat-sheet
U+E000〜 近辺のコードポイントです。

他のエディタではフォントを指定すれば、文字幅などはともかく表示はされます。
埋め込み方も特殊?であり普段の編集では大きな問題にはならないのですが、もし対応を検討されるなら幸いです。

こちらでテストしたテキストファイル、画面イメージを送ることもできます。
よろしくお願いします。
[ ]
RE:40035 Nerd Font を指定すると追加された文字が表示されないNo.40036
秀丸担当 さん 22/09/22 11:48 [ コメントを投稿する ]
  こちらで確認してみたところ、できる場合とできない場合があるようでした。
[その他]→[動作環境]→[表示/操作]→[文字の描画]→[3Dグラフィックスアクセラレータによる文字の描画]がOFFのときは表示され、ONのときは表示されませんでした。

てっきりできないかと思って調べようとしたら、その部分の文字は意図的に□となるようにしてあるようでした。
[その他]→[動作環境]→[表示/操作]→[文字の描画]の、[詳細(I)...]より、[外字の描画]をONにすると、いずれのケースでも可能になりました。
保護違反で落ちる場合があります、となっていますが、今確認した限りでは大丈夫そうでした。
条件によっては自作したりしていると問題があったり、あるいはWindowsのバージョンによったりするのかもしれませんが、定かではありません。

ちなみに[その他]→[ファイルタイプ別の設定]→[フォント]の、右側の[追加のフォント]で、文字コード範囲を指定すると、どのようなフォントにも文字単位で別のフォントを適用できます。
例えば第2フォントにFirgeNerdを指定して、[文字コード範囲を指定]の[指定の文字コード範囲のみ]にして、文字コード範囲は以下のようにしておきます。
U+E000-U+F8FF
こうしておくと何でも好みのフォントにNerdフォントを適用できます。

以下はテストしたマクロです。
--------
newfile;
$s="[3Dグラフィックスアクセラレータによる文字の描画]=OFF\n"
+"または\n"
+"[3Dグラフィックスアクセラレータによる文字の描画]=ON + 外字の描画ON + カラー絵文字ON\n"
+"FirgeNerd または (UDEV Gothic NF)\n"
+"追加のフォントを使えばMS ゴシックとかでも可能\n\n";

config "xFont:FirgeNerd";
//config"xFont:(UDEV Gothic NF)";

call ab 0xE000,0xE00A;
call ab 0xE0A0,0xE0A3;
call ab 0xE0B0,0xE0D4;
call ab 0xE200,0xE2A9;
call ab 0xE300,0xE3E3;
call ab 0xE5FA,0xE62E;
call ab 0xE700,0xE7C5;
call ab 0xF000,0xF2E0;
call ab 0xF300,0xF31C;
call ab 0xF400,0xF4A9;
call ab 0xF500,0xF8FF;
insert $s;


insert "\nちなみに揃わない固定幅フォントでもちゃんと揃うように作られています。\n"
+"例:MS 明朝で、[プロポーショナルフォント扱い]はOFF\n"
+"<PRE><TT style='font-family:consolas'><!--固定幅指定してもふつうはできない-->\n"
+"\U0001F600WW\U0001F603\U0001F604\U0001F601\U0001F606\U0001F605\U0001F923\U0001F602\U0001F642\U0001F643\n"
+"\U0001F609\U0001F60AWWWW\U0001F970\U0001F60D\U0001F929\U0001F618\U0001F617\U0001F61A\U0001F619\n"
+"\U0001F972\U0001F60B\U0001F61BWWWWWW\U0001F61D\U0001F911\U0001F917\U0001F92D\U0001F92B\n"
+"\U0001F914\U0001F910\U0001F928\U0001F610WW\U0001F611WW\U0001F636\U0001F612\U0001F644\U0001F62C\n"
+"\U0001F925\U0001F60C\U0001F614\U0001F62A\U0001F924WW\U0001F634WW\U0001F637WW\U0001F922\n"
+"\U0001F92E\U0001F927\U0001F975\U0001F976\U0001F974llllll\U0001F920\U0001F973\U0001F978\n"
+"</TT></PRE>\n"
;

endmacro;

ab:
while(##1<=##2){
  $s=$s+unichar(##1);
  ##1=##1+1;
}
$s=$s+"\n";
return;
[ ]
RE:40036 Nerd Font を指定すると追加された文字が表示されないNo.40037
にしかぜ さん 22/09/22 13:59 [ コメントを投稿する ]
  解決しました。

[3Dグラフィックスアクセラレータによる文字の描画]=OFF
[3Dグラフィックスアクセラレータによる文字の描画]=ON + 外字の描画ON + カラー絵文字ON
FirgeNerd または (UDEV Gothic NF)

いずれも表示確認できました。
付属のマクロでも表示できていることを確認できました。

自分は `[3Dグラフィックスアクセラレータによる文字の描画]=ON + 外字の描画ON + カラー絵文字ON` で使ってみようかと思います。
ありがとうございました。
[ ]

[ 新規に投稿する ]