using System; using System.Runtime.InteropServices; namespace DnD_Hra { public static class FontManager { // Constant for TrueType font family private const uint TMPF_TRUETYPE = 4; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] private struct ConsoleFontEx { public int Index; public int SizeX, SizeY; public uint FontFamily; public uint Weight; public string FaceName; } [StructLayout(LayoutKind.Sequential)] private struct ConsoleFontInfo { public int nFont; public Coord dwFontSize; } [StructLayout(LayoutKind.Explicit)] private struct Coord { [FieldOffset(0)] public short X; [FieldOffset(2)] public short Y; } [DllImport("kernel32.dll", SetLastError = true)] private static extern bool GetCurrentConsoleFont(IntPtr hOut, bool bMaximumWindow, out ConsoleFontInfo lpConsoleCurrentFont); [DllImport("kernel32.dll", SetLastError = true)] private static extern bool SetCurrentConsoleFontEx(IntPtr consoleOutput, bool maximumWindow, ConsoleFontEx consoleCurrentFontEx); [DllImport("kernel32.dll")] private static extern IntPtr GetStdHandle(int nStdHandle); public static bool SetFont(string fontName, int fontSize, int nStdHandle) { IntPtr consoleHandle = GetStdHandle(nStdHandle); ConsoleFontEx consoleFontEx = new ConsoleFontEx { Index = 0, SizeX = 8, SizeY = fontSize, FontFamily = TMPF_TRUETYPE, FaceName = fontName }; bool success = SetCurrentConsoleFontEx(consoleHandle, false, consoleFontEx); if (!success) { int errorCode = Marshal.GetLastWin32Error(); Console.WriteLine($"Failed to set console font. Error code: {errorCode}"); } return success; } public static void ResetFont(IntPtr consoleHandle) { GetCurrentConsoleFont(consoleHandle, false, out ConsoleFontInfo consoleFontInfo); ConsoleFontEx consoleFontEx = new ConsoleFontEx { Index = consoleFontInfo.nFont, SizeX = consoleFontInfo.dwFontSize.X, SizeY = consoleFontInfo.dwFontSize.Y, FontFamily = TMPF_TRUETYPE, FaceName = "Consolas" }; SetCurrentConsoleFontEx(consoleHandle, false, consoleFontEx); } public static void PrintStdHandles() { IntPtr stdInputHandle = GetStdHandle(-10); IntPtr stdOutputHandle = GetStdHandle(-11); IntPtr stdErrorHandle = GetStdHandle(-12); Console.WriteLine($"Standard input handle: {stdInputHandle}"); Console.WriteLine($"Standard output handle: {stdOutputHandle}"); Console.WriteLine($"Standard error handle: {stdErrorHandle}"); } } }