3 - Starting with the 14342 build, changing the font using
4 SetCurrentConsoleFontEx does not affect the window size. e.g. The content
5 itself will resize/redraw, but the window neither shrinks nor expands.
6 Presumably this is an oversight? It's almost a convenience; if a program
7 is going to resize the window anyway, then it's nice that the window size
8 contraints don't get in the way. Ordinarily, changing the font doesn't just
9 change the window size in pixels--it can also change the size as measured in
12 - (Aside: in the 14342 build, there is also a bug with wmic.exe. Open a console
13 with more than 300 lines of screen buffer, then fill those lines with, e.g.,
14 dir /s. Then run wmic.exe. You won't be able to see the wmic.exe prompt.
15 If you query the screen buffer info somehow, you'll notice that the srWindow
16 is not contained within the dwSize. This breaks winpty's scraping, because
19 - In build 14316, with the Japanese locale, with the 437 code page, attempting
20 to set the Consolas font instead sets the Terminal (raster) font. It seems
21 to pick an appropriate vertical size.
23 - It seems necessary to specify "-family 0x36" for maximum reliability.
24 Setting the family to 0 almost always works, and specifying just -tt rarely
28 English locale / 437 code page:
29 SetFont.exe -face Consolas -h 16 works
30 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
31 SetFont.exe -face Consolas -h 16 -family 0x36 works
32 Japanese locale / 932 code page:
33 SetFont.exe -face Consolas -h 16 works
34 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
35 SetFont.exe -face Consolas -h 16 -family 0x36 works
36 Japanese locale / 437 code page:
37 SetFont.exe -face Consolas -h 16 works
38 SetFont.exe -face Consolas -h 16 -tt unreliable
39 SetFont.exe -face Consolas -h 16 -family 0x36 works
43 Japanese locale / 437 code page:
44 SetFont.exe -face Consolas -h 16 works
45 SetFont.exe -face Consolas -h 16 -tt selects Terminal instead
46 SetFont.exe -face Consolas -h 16 -family 0x36 works
50 English locale / 437 code page:
51 SetFont.exe -face Consolas -h 16 works
52 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
53 SetFont.exe -face Consolas -h 16 -family 0x36 works
54 Japanese locale / 932 code page:
55 SetFont.exe -face Consolas -h 16 works
56 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
57 SetFont.exe -face Consolas -h 16 -family 0x36 works
58 Japanese locale / 437 code page:
59 SetFont.exe -face Consolas -h 16 works
60 SetFont.exe -face Consolas -h 16 -tt selected very small Consolas font
61 SetFont.exe -face Consolas -h 16 -family 0x36 works
63 English locale / 437 code page:
64 SetFont.exe -face Consolas -h 16 works
65 SetFont.exe -face Consolas -h 16 -tt works
66 SetFont.exe -face Consolas -h 16 -family 0x36 works
67 Japanese locale / 932 code page:
68 SetFont.exe -face Consolas -h 16 selects gothic instead
69 SetFont.exe -face Consolas -h 16 -tt selects gothic instead
70 SetFont.exe -face Consolas -h 16 -family 0x36 selects gothic instead
71 Japanese locale / 437 code page:
72 SetFont.exe -face Consolas -h 16 selects Terminal font instead
73 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
74 SetFont.exe -face Consolas -h 16 -family 0x36(*) selects Terminal font instead
78 English locale / 437 code page:
79 SetFont.exe -face Consolas -h 16 works
80 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
81 SetFont.exe -face Consolas -h 16 -family 0x36 works
82 Japanese locale / 932 code page:
83 SetFont.exe -face Consolas -h 16 works
84 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
85 SetFont.exe -face Consolas -h 16 -family 0x36 works
86 Japanese locale / 437 code page:
87 SetFont.exe -face Consolas -h 16 works
88 SetFont.exe -face Consolas -h 16 -tt selects Terminal font instead
89 SetFont.exe -face Consolas -h 16 -family 0x36 works
91 English locale / 437 code page:
92 SetFont.exe -face Consolas -h 16 works
93 SetFont.exe -face Consolas -h 16 -tt works
94 SetFont.exe -face Consolas -h 16 -family 0x36 works
95 Japanese locale / 932 code page:
96 SetFont.exe -face Consolas -h 16 selects gothic instead
97 SetFont.exe -face Consolas -h 16 -tt selects gothic instead
98 SetFont.exe -face Consolas -h 16 -family 0x36 selects gothic instead
99 Japanese locale / 437 code page:
100 SetFont.exe -face Consolas -h 16 selects Terminal font instead
101 SetFont.exe -face Consolas -h 16 -tt works
102 SetFont.exe -face Consolas -h 16 -family 0x36 works
104 (*) I was trying to figure out whether the inconsistency was at when I stumbled
105 onto this completely unexpected bug. Here's more detail:
107 F:\>SetFont.exe -face Consolas -h 16 -family 0x36 -weight normal -w 8
108 Setting to: nFont=0 dwFontSize=(8,16) FontFamily=0x36 FontWeight=400 FaceName="Consolas"
109 SetCurrentConsoleFontEx returned 1
112 largestConsoleWindowSize=(96,50)
113 maxWnd=0: nFont=0 dwFontSize=(12,16) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
114 maxWnd=1: nFont=0 dwFontSize=(96,25) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
116 GetNumberOfConsoleFonts returned 0
119 F:\>SetFont.exe -face "Lucida Console" -h 16 -family 0x36 -weight normal
120 Setting to: nFont=0 dwFontSize=(0,16) FontFamily=0x36 FontWeight=400 FaceName="Lucida Console"
121 SetCurrentConsoleFontEx returned 1
124 largestConsoleWindowSize=(96,50)
125 maxWnd=0: nFont=0 dwFontSize=(12,16) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
126 maxWnd=1: nFont=0 dwFontSize=(96,25) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
128 GetNumberOfConsoleFonts returned 0
131 F:\>SetFont.exe -face "Lucida Console" -h 12 -family 0x36 -weight normal
132 Setting to: nFont=0 dwFontSize=(0,12) FontFamily=0x36 FontWeight=400 FaceName="Lucida Console"
133 SetCurrentConsoleFontEx returned 1
136 largestConsoleWindowSize=(230,66)
137 maxWnd=0: nFont=0 dwFontSize=(5,12) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
138 maxWnd=1: nFont=0 dwFontSize=(116,36) FontFamily=0x30 FontWeight=400 FaceName=Terminal (54 65 72 6D 69 6E 61 6C)
140 GetNumberOfConsoleFonts returned 0
143 Even attempting to set to a Lucida Console / Consolas font from the Console
144 properties dialog fails.