以编程方式更改 PowerShell 控制台字体
Change the PowerShell console font programmatically
我使用 PowerShell 开发了一个用作基于控制台的应用程序(想想 ncurses)的脚本。
字体 Lucida Console 在脚本的快捷方式中配置。
我想为用户提供更改字体大小的功能。以下模块就是这样做的,但是字体总是重置为 'Raster Fonts':https://4sysops.com/archives/change-powershell-console-font-size-with-cmdlet/
我不明白为什么会这样,因为代码似乎根据对 current 字体信息的引用生成合法字体大小列表。
@sodawillow 的评论让我走上了正确的道路。详细说明...
有效字体大小列表似乎是由控制台 window 大小决定的(可能还有其他我没有考虑到的因素)。
例如,get-consolefontinfo | format-table returns 以下 window 大小为 120x64:
nFont dwFontSizeX dwFontSizeY
----- ----------- -----------
0 84 42
1 70 48
2 52 64
3 105 64
4 105 64
5 120 64
6 120 64
7 168 64
8 52 96
9 105 96
10 140 96
11 210 128
而 window 尺寸为 106x51,它 returns:
nFont dwFontSizeX dwFontSizeY
----- ----------- -----------
0 104 49
1 114 49
2 125 49
3 104 55
4 78 73
5 156 73
6 179 73
7 250 73
8 78 110
9 156 110
10 209 110
11 313 147
应用的字体(Consolas、Lucida Console 或 Raster Fonts)将根据所选索引而有所不同。
所以与我的问题相反,这个模块并不总是将字体重置为 'Raster Fonts'。
我做了一些测试。我认为你不能直接用这个模块改变大小(我的默认控制台字体是 Consolas):
Set-ConsoleFont 1 #Raster Fonts
...
Set-ConsoleFont 9 #Raster Fonts
Set-ConsoleFont 10 #Consolas
Set-ConsoleFont 11 #Consolas
the code appears to produce the list of legal font sizes based on a
reference to the current font information.
根据模块的描述:
Get-ConsoleFontInfo
List current console's available fonts.
我使用 PowerShell 开发了一个用作基于控制台的应用程序(想想 ncurses)的脚本。
字体 Lucida Console 在脚本的快捷方式中配置。
我想为用户提供更改字体大小的功能。以下模块就是这样做的,但是字体总是重置为 'Raster Fonts':https://4sysops.com/archives/change-powershell-console-font-size-with-cmdlet/
我不明白为什么会这样,因为代码似乎根据对 current 字体信息的引用生成合法字体大小列表。
@sodawillow 的评论让我走上了正确的道路。详细说明...
有效字体大小列表似乎是由控制台 window 大小决定的(可能还有其他我没有考虑到的因素)。
例如,get-consolefontinfo | format-table returns 以下 window 大小为 120x64:
nFont dwFontSizeX dwFontSizeY
----- ----------- -----------
0 84 42
1 70 48
2 52 64
3 105 64
4 105 64
5 120 64
6 120 64
7 168 64
8 52 96
9 105 96
10 140 96
11 210 128
而 window 尺寸为 106x51,它 returns:
nFont dwFontSizeX dwFontSizeY
----- ----------- -----------
0 104 49
1 114 49
2 125 49
3 104 55
4 78 73
5 156 73
6 179 73
7 250 73
8 78 110
9 156 110
10 209 110
11 313 147
应用的字体(Consolas、Lucida Console 或 Raster Fonts)将根据所选索引而有所不同。
所以与我的问题相反,这个模块并不总是将字体重置为 'Raster Fonts'。
我做了一些测试。我认为你不能直接用这个模块改变大小(我的默认控制台字体是 Consolas):
Set-ConsoleFont 1 #Raster Fonts
...
Set-ConsoleFont 9 #Raster Fonts
Set-ConsoleFont 10 #Consolas
Set-ConsoleFont 11 #Consolas
the code appears to produce the list of legal font sizes based on a reference to the current font information.
根据模块的描述:
Get-ConsoleFontInfo
List current console's available fonts.