コマンドプロンプトで利用可能なフォントのリストに新しいフォントを追加するには、レジストリを編集する必要があると述べた オンラインガイド が見つかりました。具体的には、キーを編集する必要があります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
キー00
、000
、0000
などの文字列値を追加します。これらの値はフォントの名前です。 これは既に実行しました。以下のスクリーンショットで確認できるように、レジストリにフォント名を追加し、コンピュータを再起動しました。
ただし、追加したフォントがリストに表示されません。具体的には、InconsolataとSource Code Proを追加しました。しかし、使用可能なフォントのリストには表示されません。
何が欠けていますか?私はWindows 10バージョン1803、ビルド17134.165を使用しています。
Powershell
(またはCMD
)コンソールの設定に新しいフォントを追加するにはどうすればよいですか?最初に知っておくべきことは、残念ながら(!):
コンソールにインストールできるのは、特定の条件を満たすフォントのみです。
フォント基準+説明
(これの現在のステータスは不明です。)
フォントがコンソールでサポートされるためには、次のことが必要です。
FF_MODERN
でなければなりません。OEM_CHARSET
が含まれている必要があります。A
またはC
スペースを含めることはできません。どういう意味ですか? これらのメトリックのほとんどが定義されています here 、これはC++でフォントを記述する次の構造の概要を示します。
typedef struct tagLOGFONTA {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;
フォントは固定ピッチである必要があります。ピッチとフォントのファミリは、lfPitchAndFamily
フィールドで記述されます。下位2ビットはフォントのピッチを指定し、次のいずれかの値になります。
DEFAULT_PITCH
FIXED_PITCH
VARIABLE_PITCH
斜体にすることはできません。つまり、lfItalic
フィールドをfalseに設定する必要があります。
TrueTypeフォントの場合、lfPitchAndFamily
フィールドにはFF_MODERN
familyのコードを含める必要があります、ビット4〜7。FF_MODERN
は、一定のストローク幅のフォント(つまり、等幅フォント)を、セリフ付きまたはなしで記述します。Monospaceフォントは通常モダンです。Pica、Elite、CourierNewは例です。
TrueTypeフォントでない場合、文字セットにはlfCharSet
構造体のtagLOGFONTA
フィールドで定義されているOEM_CHARSET
、を含める必要があります。つまり、フォントは単なるモノスペース以上のものである必要があります。また、OEMコードページのすべての文字、つまりIBM437 (OEM United States)
charセットの437 "OEM"文字を here のようにサポートする必要があります。
フォントには、A
またはC
の負のスペースを含めることはできません。文字の幅は ABC構造 で記述されます。 B
spacingは、文字の幅です。 A
の間隔は、文字のleftに残すスペースの量であり、C
の間隔は、に残すマージンの量です/正しい。
左または右に負のマージンを持つ文字は、 oversized 指定されたグリッド/ラスターです。たとえば、W
がオーバーロードされたフォントは、文字を適切に描画するために、指定されたXピクセルの文字幅よりも多くのスペースを必要とします。明らかに、特大の文字を含むフォントは固定幅ではありません。
ただし、動作することがわかっているフォントの1つは、便利なグリフと数学を多くサポートしているため、推奨されています DejaV 。残念ながら、これはWindows 標準フォント選択 の一部ではなく、手動でインストールする必要があります。
必要なフォントにTrueTypeフォントファイル(*.ttf
)またはOpenTypeがない場合/(*.otf
)、SFDファイルをTTF(またはOTF)に変換する必要があります。これを行うには、 FontForge を使用してSFDをインポートし、TTFを生成します。
File > Open
でファイルを開き、OKをクリックします。File > Generate Fonts...
を使用してTTFを生成し、次にTrue Type
を選択し、次にValidate Before Saving
オプションの選択を解除し、Generate
を押します。*.ttf
ファイルをWindowsControl Panelにドラッグして、次の場所にあるフォントを探します。Control Panel\Appearance and Personalisation\Fonts
)またはby:WIN+R
およびtype:%windir%\fonts
。できました。これで、新しいフォントがすぐにレジストリで使用できるようになりました。
これを行うには、Administrator
としてPowershellコンソールを開きます。
# All your available fonts are located here:
$T1key = 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fonts'
# But your Console fonts are located here:
$T2key = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont'
# Check the correct name:
Get-ItemProperty -Path $T1key | grep "DejaVu"
DejaVu Sans Mono (TrueType) : DejaVuSansMono.ttf
# Note the correct spacing of the name and ignore the "(TrueType)" part
# Check what's already there:
Get-ItemProperty -Path $T2key
# To add more fonts, just add the new name like this:
# - Add another 0 (zero) to the -Name parameter, for each new font
# So since there is already an item with two zeros, so we need 3 and 4 zeros...
#Set-ItemProperty -Path $key -Name '000' -Value 'Arial' # Doesn't work!
#Set-ItemProperty -Path $key -Name '0000' -Value 'Calibri' # Doesn't work!
Set-ItemProperty -Path $key -Name '00000' -Value 'DejaVu Sans Mono'
ただし、までは、新しいフォントアイテムは表示されません:
Windows Explorer
を再起動します。多くの新しい正しいグリフをお楽しみください!
たとえば、 5/8th box
を試してください。[char]0x2585 # (U+2585)
補遺:
WindowsConsoleFonts -任意の(?)フォントを簡単にインストールできる、Windowsのコンソールフォントを操作するためのPSモジュール。
2つのフォントをマージする の方法も参照してください。
font technolgy と、Font Linking
の機能に関するMicrosoftの有益な記事。
Google Noto Project
(フォント) Noto Tools Python based merge_fonts.py の場合。
constant stroke width
を持つという基準の1つは、(水平方向の)ペン幅が次のように一定であることを意味します ここ :
[ストロークの拡張]ダイアログでは、拡張プロセスのさまざまな側面を制御できます。最初に、3つのタイプのペン先を指定できます。
- 丸いペン。デフォルトでは円形ですが、楕円に変換される場合があります
- 長方形のペン。デフォルトでは正方形ですが、より伝統的なカリグラフィペン先の形状に変換できます。
- 多角形のペン–ほとんどすべての凸多角形を描くことができます。
円形およびカリグラフィックペンの場合、ストローク幅、開いたパスの端がどのように描画されるか、同じ勾配を持たない2つのスプライン(またはライン)が結合するときのパスの外観(コーナーなど)を選択できます。ポイント)。