Liste verfügbarer Schriftarten für die Konsole
-
Hallo,
ist es möglich und wie kann ich mir eine Liste der verfügbaren Schriftarten für die Windows Konsole erstellen?
Danke.
-
Was möchtest Du bitte?
Es gibt keine unterschiedlichen Schriftarten für die Console. Du kannst nur Zeichen ausgeben und Farben definieren...Was möchtest Du tun?
-
Ich setze mit
void Console::setFont( const std::string& name ) { const std::wstring widestr = std::wstring( name.begin(), name.end() ); const wchar_t* widecstr = widestr.c_str(); CONSOLE_FONT_INFOEX cfi; cfi.cbSize = sizeof cfi; cfi.nFont = 0; cfi.dwFontSize.X = fontSizeX(); cfi.dwFontSize.Y = fontSizeY(); cfi.FontFamily = FF_DONTCARE; cfi.FontWeight = FW_NORMAL; std::wcscpy( cfi.FaceName, widecstr ); SetCurrentConsoleFontEx( wHnd, true, &cfi); } void Console::setFontSize( const int width, const int height ) { CONSOLE_FONT_INFOEX cfi = getCFI(); cfi.dwFontSize.X = width; cfi.dwFontSize.Y = height; SetCurrentConsoleFontEx( wHnd, true, &cfi ); }
Schriftart und -größe der Konsole. Bei den Eigenschaften der Konsole sehe ich unter Schriftart jene, welche ich oben eintragen könnte. Dies ist ziemlich umständlich und ich wollte fragen, ob ich mir diese Liste der angezeigten Schriftarten in zB einer Textdatei ausgeben kann.
-
Prinzipiell geht das über EnumFontFamiliesEx, wobei bei der Konsole natürlich nur Nichtproportionalschriftarten in Frage kommen.
Du kannst ja mal schauen, was du auf deinem System hier bekommst:int CALLBACK EnumFontCB(ENUMLOGFONTEX* pelf, NEWTEXTMETRICEX* /*pntm*/, int fontType, LPARAM lParam) { // if(fontType & RASTER_FONTTYPE) // return 1; if(pelf->elfLogFont.lfCharSet!=DEFAULT_CHARSET && pelf->elfLogFont.lfCharSet!=ANSI_CHARSET) return 1; if(pelf->elfLogFont.lfPitchAndFamily & FIXED_PITCH) { std::cout << pelf->elfLogFont.lfFaceName << '\n'; } return 1; } int main(int argc, char* argv[]) { LOGFONT lf={ }; lf.lfCharSet=DEFAULT_CHARSET; HDC hdc=GetDC(GetDesktopWindow()); ::EnumFontFamiliesEx(hdc, &lf,(FONTENUMPROC) EnumFontCB, false, 0); ReleaseDC(GetDesktopWindow(), hdc); }
Edit: Noch einmal bearbeitet. Du solltest allerdings probieren, den Cast wegzubekommen - ich meine mich zu erinnern, dass das an dem neuen Callback (mit ENUMLOGFONTEX* und NEWTEXTMETRICEX*) liegt. Das ist aber schon zu lange her und ich habe es mir jetzt auch nicht noch einmal angeschaut.
-
Vielen Dank. Das schaue ich mir an.
-
Zwar gibt bei mir eine undefined reference to `__imp_EnumFontFamiliesExA' aber ich habe ja jetzt mit EnumFontFamiliesEx ein Stichwort zum suchen.
-
Mir scheint
#include<winsock2.h>
und-lwsock32
/-lws2_32
zu fehlen.Letzteres scheint ein Linker-setting zu sein. Ich habe aber keine Ahnung, wie ich das unter CodeBlocks und gcc einbinden kann?
-
PROJECT --> BUILD OPTIONS --> LINKER SETTINGS
-
Schon klar. Es kommt abercannot find -l-lws2_32
. Und keine Ahnung, was es mit dem ersten-l
auf sich hat.Sorry, natürlich bei Other Linker Options. Wars aber nicht. Bekomme immer noch die undefined reference. Ich finde die WinApi-Syntax etwas anstrengend, weshalb ich jetzt gar nicht richtig weiß, wie ich mit der Fehlermeldung umgehen soll.
-
@lemon03 Wieso winsock? Du brauchst den Header <wingdi.h> (wahrscheinlich schon durch windows.h eingebunden) und die Dll gdi32.dll. Bei MinGW müsstest du also so etwas wie libgdi32.a bei den Linkereinstellungen hinzufügen (oder einfach mal in dem entsprechenden Verzeichnis suchen - ich kann es hier nicht).
-
Bei meiner Suche nach der Fehlermeldung gab es unter anderem Verweise auf diese.
Danke für die Richtigstellung. Kann nur jetzt erst später antworten.
-
Also die Daten unter "Requirements" bei EnumFontFamiliesExA sind doch eindeutig.
-
Stimmt. Ich hätte mir mehr Zeit beim Lesen gönnen sollen. Ich verspüre immer einen inneren Zwang, sofort auf einen Beitrag antworten zu müssen. Sollte aber lieber erst etwas gründlicher recherchieren.
-
Schick
Fixedsys Courier Consolas Courier New Lucida Console MS Gothic @MS Gothic NSimSun @NSimSun SimSun-ExtB @SimSun-ExtB Source Code Pro Black DejaVu Sans Mono Source Code Pro Source Code Pro ExtraLight Source Code Pro Light Source Code Pro Medium Source Code Pro Semibold FigurineCB LetterSP Liberation Mono Noto Mono Process returned 0 (0x0) execution time : 0.031 s Press any key to continue.
Stichprobenartig gehen die auch. Morgen lasse ich die Liste durchlaufen.
Vielen Dank!