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

时间:2016-06-28 14:50:59

标签: powershell console-application kernel32

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

字体 Lucida控制台在脚本的快捷方式中配置。

我希望为用户提供更改字体大小的功能。以下模块就是这样,但字体始终重置为'光栅字体':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控制台或光栅字体)将根据所选索引而有所不同。

因此,与我的问题相反,此模块并不总是将字体重置为'光栅字体'。

1 个答案:

答案 0 :(得分:0)

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

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

代码似乎生成基于a的合法字体大小列表   参考当前的字体信息。

根据模块的描述:

  

获取-ConsoleFontInfo

     

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