web-dev-qa-db-ja.com

Windowsコンソールにフォントを追加するにはどうすればよいですか?

コマンドプロンプトで利用可能なフォントのリストに新しいフォントを追加するには、レジストリを編集する必要があると述べた オンラインガイド が見つかりました。具体的には、キーを編集する必要があります。

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

キー000000000などの文字列値を追加します。これらの値はフォントの名前です。 これは既に実行しました。以下のスクリーンショットで確認できるように、レジストリにフォント名を追加し、コンピュータを再起動しました。

regedit

ただし、追加したフォントがリストに表示されません。具体的には、InconsolataとSource Code Proを追加しました。しかし、使用可能なフォントのリストには表示されません。

console fonts

何が欠けていますか?私はWindows 10バージョン1803、ビルド17134.165を使用しています。

5
soapergem

Powershell(またはCMD)コンソールの設定に新しいフォントを追加するにはどうすればよいですか?

最初に知っておくべきことは、残念ながら(!):

コンソールにインストールできるのは、特定の条件を満たすフォントのみです。

(参照: ここここ および ここ


フォント基準+説明
(これの現在のステータスは不明です。)

フォントがコンソールでサポートされるためには、次のことが必要です。

  1. フォントは固定ピッチフォントでなければなりません。
  2. フォントをイタリック体にすることはできません。
  3. TrueTypeフォントの場合、FF_MODERNでなければなりません。
  4. TrueTypeフォントでない場合は、OEM_CHARSETが含まれている必要があります。
  5. フォントにnegativeAまたは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;
  1. フォントは固定ピッチである必要があります。ピッチとフォントのファミリは、lfPitchAndFamilyフィールドで記述されます。下位2ビットはフォントのピッチを指定し、次のいずれかの値になります。

    • DEFAULT_PITCH
    • FIXED_PITCH
    • VARIABLE_PITCH
  2. 斜体にすることはできません。つまり、lfItalicフィールドをfalseに設定する必要があります。

  3. TrueTypeフォントの場合、lfPitchAndFamilyフィールドにはFF_MODERN familyのコードを含める必要があります、ビット4〜7。FF_MODERNは、一定のストローク幅のフォント(つまり、等幅フォント)を、セリフ付きまたはなしで記述します。Monospaceフォントは通常モダンです。Pica、EliteCourierNewは例です。

  4. TrueTypeフォントでない場合、文字セットにはlfCharSet構造体のtagLOGFONTAフィールドで定義されているOEM_CHARSETを含める必要があります。つまり、フォントは単なるモノスペース以上のものである必要があります。また、OEMコードページのすべての文字、つまりIBM437 (OEM United States) charセットの437 "OEM"文字を here のようにサポートする必要があります。

  5. フォントには、AまたはCの負のスペースを含めることはできません。文字の幅は ABC構造 で記述されます。 B spacingは、文字の幅です。 Aの間隔は、文字のleftに残すスペースの量であり、Cの間隔は、に残すマージンの量です/正しい

    左または右に負のマージンを持つ文字は、 oversized 指定されたグリッド/ラスターです。たとえば、Wがオーバーロードされたフォントは、文字を適切に描画するために、指定されたXピクセルの文字幅よりも多くのスペースを必要とします。明らかに、特大の文字を含むフォントは固定幅ではありません。


ただし、動作することがわかっているフォントの1つは、便利なグリフと数学を多くサポートしているため、推奨されています DejaV 。残念ながら、これはWindows 標準フォント選択 の一部ではなく、手動でインストールする必要があります。

必要なフォントにTrueTypeフォントファイル(*.ttf)またはOpenTypeがない場合/(*.otf)、SFDファイルをTTF(またはOTF)に変換する必要があります。これを行うには、 FontForge を使用してSFDをインポートし、TTFを生成します。


FontForgeを使用してTTFファイルをインストールする手順

  1. インストールFontForge(以下「FF」)
  2. 管理者としてFFを実行する
  3. SFDフォントファイルをダウンロードします(例: DejaVuSansMono.sfd 。)
  4. File > Openでファイルを開き、OKをクリックします。
  5. File > Generate Fonts...を使用してTTFを生成し、次に
  6. ドロップダウンでTrue Typeを選択し、次に
  7. Validate Before Savingオプションの選択を解除し、Generateを押します。
  8. 生成された*.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'

ただし、までは、新しいフォントアイテムは表示されません

  1. レジストリがメモリにリロードされたので、唯一の方法は次のいずれかです:
    • コンピュータを再起動するか、
    • Windows Explorerを再起動します。
  2. Powershellコンソールを再起動します
  3. バグレポートをWindowsに提出する PowershellリポジトリConsole repo そして、次のように依頼します。
    正しいUnicodeグリフで適切なフォントをサポートします。

多くの新しい正しいグリフをお楽しみください!

たとえば、 5/8th box を試してください。
[char]0x2585 # (U+2585)


補遺:

stroke width

[ストロークの拡張]ダイアログでは、拡張プロセスのさまざまな側面を制御できます。最初に、3つのタイプのペン先を指定できます。

  • 丸いペン。デフォルトでは円形ですが、楕円に変換される場合があります
  • 長方形のペン。デフォルトでは正方形ですが、より伝統的なカリグラフィペン先の形状に変換できます。
  • 多角形のペン–ほとんどすべての凸多角形を描くことができます。

円形およびカリグラフィックペンの場合、ストローク幅、開いたパスの端がどのように描画されるか、同じ勾配を持たない2つのスプライン(またはライン)が結合するときのパスの外観(コーナーなど)を選択できます。ポイント)。

9
not2qubit