以编程方式更改 PowerShell 控制台字体

Posted

技术标签:

【中文标题】以编程方式更改 PowerShell 控制台字体【英文标题】:Change the PowerShell console font programmatically 【发布时间】:2016-10-30 23:26:20 【问题描述】:

我开发了一个脚本,它使用 PowerShell 充当基于控制台的应用程序(想想 ncurses)。

字体 Lucida Console 在脚本的快捷方式中配置。

我想为用户提供更改字体大小的功能。以下模块就是这样做的,但是字体总是重置为“光栅字体”:https://4sysops.com/archives/change-powershell-console-font-size-with-cmdlet/

我不明白为什么会发生这种情况,因为代码似乎会根据对 当前 字体信息的引用生成合法字体大小列表。

@sodawillow 的评论让我走上了正确的道路。详细说明...

有效字体大小列表似乎是由控制台窗口大小决定的(可能还有其他我没有考虑的因素)。

例如,get-consolefontinfo | format-table 在 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

而窗口大小为 106x51,它返回:

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)会因所选索引而异。

所以与我的问题相反,这个模块并不总是将字体重置为“光栅字体”。

【问题讨论】:

【参考方案1】:

我做了一些测试。我认为你不能用这个模块直接改变大小(我的默认控制台字体是 Consolas):

Set-ConsoleFont 1 #Raster Fonts
...
Set-ConsoleFont 9 #Raster Fonts
Set-ConsoleFont 10 #Consolas
Set-ConsoleFont 11 #Consolas

代码似乎根据 引用当前字体信息。

根据模块描述:

获取控制台字体信息

列出当前控制台的可用字体。

【讨论】:

以上是关于以编程方式更改 PowerShell 控制台字体的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改 UINavigationbar 背景颜色和标题字体/颜色

修改 PowerShell 脚本以更改 Outlook 的默认字体类型和大小

您可以以编程方式更改 android 键盘文本字体吗?

以编程方式更改集合视图单元格中标签的字体

如何以编程方式更改堆栈面板中所有(n个)texblock的字体大小?

如何以编程方式更改整个应用程序中的字体大小,Android?