Wie kann ich der Windows-Konsole zusätzliche Schriftarten hinzufügen?
Ich habe a-guide-online - besagt, dass müssen Sie die Registrierung Bearbeiten, um so fügen Sie der Liste der verfügbaren Schriftarten in der Eingabeaufforderung neue Schriftarten hinzu: speziell, sie müssen den Schlüssel bearbeiten:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
Durch Hinzufügen von Zeichenfolgenwerten mit Schlüsseln 00
, 000
, 0000
, und so weiter, mit ihren
werte sind die Namen der Schriftarten. Ich habe das schon getan. Ich habe die
font-Namen in die Registrierung, wie Sie im Screenshot unten können, und neu gestartet
der computer:
Die Schriftarten, die ich hinzugefügt habe, werden jedoch nicht in der Liste angezeigt. Mehr insbesondere habe ich Inconsolata und Source Code Pro hinzugefügt. Aber ich sehe sie nicht in die Liste der verfügbaren Schriftarten:
Was fehlt mir? Ich benutze Windows 10, version 1803, build 17134.165.
1 answers
Wie füge ich neue Schriftarten zu deinen Powershell
(Oder CMD
) Konsoleneinstellungen hinzu?
Das erste, was zu wissen ist, ist, dass leider (!):
Nur Schriftarten, die bestimmte Kriterien erfüllen, können in der Konsole installiert werden!
Die Schriftkriterien + Erklärung
(Der aktuelle Status ist unbekannt.)
Für Schriftart, die in der Konsole unterstützt wird Sie müssen:
- Die Schriftart muss eine feste Tonhöhe sein.
- Die Schriftart darf keine kursive Schriftart sein.
- Wenn es sich um eine TrueType-Schriftart handelt, muss dies der Fall sein
FF_MODERN
. - Wenn es sich nicht um eine TrueType-Schriftart handelt, muss sie die
OEM_CHARSET
. - Die Schriftart darf kein Negativ von haben
A
oderC
Leerzeichen.
Was bedeutet das alles? Die meisten dieser Metriken sind hier definiert , was die folgende Struktur, die eine Schriftart in C++beschreibt:
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;
-
Die Schriftart muss eine feste Tonhöhe haben. Tonhöhe und Schriftfamilie werden durch das Feld
lfPitchAndFamily
beschrieben. Die beiden Bits niedriger Ordnung geben die Tonhöhe der Schriftart an und können einer der folgenden Werte sein:DEFAULT_PITCH
FIXED_PITCH
VARIABLE_PITCH
Die Schriftart kann nicht kursiv sein. Mit anderen Worten, das Feld
lfItalic
muss auf falsch.Wenn es eine TrueType-Schriftart ist, die
lfPitchAndFamily
feld muss den Code für dieFF_MODERN
familie, in Bits 4 bis 7.FF_MODERN
beschreibt Schriftarten mit konstanter Strichbreite (z. B. Monospace-Schriftarten) mit oder ohne Serifen. Monospace Schriftarten sind in der Regel modern. Pica, Elite und CourierNew{[68]) sind Beispiele.Wenn es sich nicht um eine TrueType-Schriftart handelt, muss der Zeichensatz Folgendes enthalten
OEM_CHARSET
, wie durch das FeldlfCharSet
in der StrukturtagLOGFONTA
definiert. Das heißt, die Schriftart muss mehr als nur Monospace sein. Es muss auch alle Zeichen auf der OEM-Codepage unterstützen, die 437 "OEM" - Zeichen des ZeichensatzesIBM437 (OEM United States)
wie hier beschrieben .-
Die Schriftart darf kein negatives Leerzeichen
A
oderC
haben. Die Breite eines Zeichens wird durch eine ABC-Struktur beschrieben. Der AbstandB
ist die Breite des Zeichens. Der AbstandA
ist wie viel Platz auf dem links des Zeichens zu lassen, und der AbstandC
ist, wie viel Rand auf dem rechts zu verlassen.Jedes Zeichen mit einem negativen Rand links oder rechts ist oder das angegebene Raster / Raster. Zum Beispiel benötigt eine Schriftart mit einem überladenen
W
mehr Platz als die angegebene X-Pixel-Zeichenbreite, um das Zeichen richtig zu zeichnen. Offensichtlich sind Schriftarten mit übergroßen Zeichen nicht feste Breite.
Eine bekannte Schriftart, die funktioniert, und die vorgeschlagen wurde, weil sie viele nützliche Glyphen und Mathematik unterstützt, ist DejaVu. Leider ist es nicht Teil der Windows Standardschriftauswahl und müssen manuell installiert werden.
Wenn die gewünschte Schriftart noch nicht über eine TrueType - Schriftdatei verfügt(*.ttf
) oder
OpenType (*.otf
), sie müssen die SFD-Dateien in konvertieren TTF (oder OTF). Dazu können Sie FontForge verwenden, um
importieren Sie SFD und generieren Sie dann die TTF.
Schritte zum Installieren einer TTF-Datei mit FontForge
- Installation FontForge (nachfolgend "FF")
- Führen Sie FF als Administrator aus
- Laden Sie die SFD-Schriftdatei(en) herunter (Zum Beispiel: DejaVuSansMono.sfd.)
- Öffnen Sie die Datei mit:
File > Open
und drücken Sie OK. - Erzeugen Sie eine TTF mit:
File > Generate Fonts...
, dann - Wählen
True Type
in der Dropdown-Liste, dann - Un-Wählen Sie das
Validate Before Saving
option, und drückenGenerate
. - Ziehen Sie die resultierende
*.ttf
Datei in die Windows Systemsteuerung für Schriftarten gefunden unter:
(Control Panel\Appearance and Personalisation\Fonts
) oder durch:WIN+R
und geben Sie ein:%windir%\fonts
.
Laden Sie die neuen Schriftarten in die Konsolenregistrierung
Öffnen Sie eine Powershell-Konsole als Administrator
dieser.
# 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'
Jedoch Sie werden die neuen Schriftelemente nicht sehen, bis:
- Die Registrierung wurde in den Speicher neu geladen, so dass der einzige Weg ist, entweder:
- starten Sie den computer neu oder
- starten Sie
Windows Explorer
neu.
- Starten Sie Ihre Powershell-Konsole neu
- Datei eines Fehlerberichts an Windows
Powershell RepoConsole repo und bitten Sie sie:
unterstützt richtige Schriftarten mit korrektem Unicode Glyphenbedienfeld.
Genieße die vielen neuen und korrekten Glyphen!
Versuchen Sie zum Beispiel die 5/8th box
:[char]0x2585 # (U+2585)
Nachtrag:
- Hier ist eine lange Liste von Schriftarten, die eher in Konsole.
- https://stackoverflow.com/questions/49476326/displaying-unicode-in-powershell
- https://social.technet.microsoft.com/Forums/scriptcenter/en-US/c42a0300-1803-475d-9438-d39e6672cc69/unicode-characters-in-powershell
- UnicodeInfo - Powershell-Modul zur Abfrage der Unicode-Datenbank
WindowsConsoleFonts - Ein PS-Modul für die Arbeit mit Konsolenschriftarten in Windows, mit dem Sie einfach installieren können irgendwelche (?) Schriftart.
Siehe auch, wie man zwei Schriftarten zusammenführt.
Ein informativer Microsoft-Artikel über ihre font technolgy und wie
Font Linking
funktioniert.Das
Google Noto Project
(Font) Noto-Tools für das Python-basierte merge_fonts.py.Eines der Kriterien erwähnt zu haben
constant stroke width
, dies bedeutet, dass die (pseuod-horizontale) Stiftbreite konstant ist, wie hier gezeigt :
Der Dialog Strich erweitern gibt Ihnen die Kontrolle über verschiedene Aspekte des erweiterungsprozess. Zuerst können Sie drei Arten von Schreibfedern angeben:
- Ein runder Stift, der standardmäßig kreisförmig ist, aber in eine Ellipse umgewandelt werden kann
- Ein rechteckiger Stift, der standardmäßig quadratisch ist, aber in traditionellere caligraphische Nib-Formen umgewandelt werden kann
- Ein polygonaler Stift-Sie können fast jeden zeichnen konvexes polygon.
Für kreisförmige und caligraphische Stifte können Sie eine Strichbreite wählen, wie die Enden eines offenen Pfades sollten gezeichnet werden und wie der Pfad aussehen soll wenn sich zwei Splines (oder Linien) verbinden, die nicht die gleiche Neigung haben (dh. an einem Eckpunkt).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-05-10 18:13:36