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\U
0001F602\U0001F642\U0001F643\n"
+"\U0001F609\U0001F60AWWWW\U0001F970\U0001F60D\U0001F929\U0001F618\U0001F617
\U0001F61A\U0001F619\n"
+"\U0001F972\U0001F60B\U0001F61BWWWWWW\U0001F61D\U0001F911\U0001F917\U0001F9
2D\U0001F92B\n"
+"\U0001F914\U0001F910\U0001F928\U0001F610WW\U0001F611WW\U0001F636\U0001F612
\U0001F644\U0001F62C\n"
+"\U0001F925\U0001F60C\U0001F614\U0001F62A\U0001F924WW\U0001F634WW\U0001F637
WW\U0001F922\n"
+"\U0001F92E\U0001F927\U0001F975\U0001F976\U0001F974llllll\U0001F920\U0001F9
73\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` で使ってみようかと思います。
ありがとうございました。

[ ]