我正在摆弄 Windows 10 的新命令提示符。我使用的是代码页 936 (GBK)。
我说“新的”是因为我看到它的属性中cmd
有一个复选框run legacy command prompt (need restart)
,默认情况下未选中,所以我猜我正在使用的这个是“较新的”。
问题是,在网上搜索只给了我一些在注册表中添加字体的方法,以使遗产cmd 识别它并在“属性”/“默认值”设置中显示,如下所示:
http://www.techrepublic.com/blog/windows-and-office/quick-tip-add-fonts-to-the-command-prompt/
它提到在显示的位置添加字体条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
让 Windows 知道这个字体。我注意到,那里已经列出的字体和我在旧版 cmd 中看到的字体相同。在普通 cmd 中,我可以看到更多字体。
请注意,在图片中我打开了一个旧的 cmd 提示符,其中有一些终端字体,在属性设置对话框中,我可以选择的字体是 Consolas 和 Lucida Console,与注册表中的相同。
而且,如果我切换到普通cmd,则会出现两种情况:
- 如果我选择编辑“属性”,我会看到更少的字体,并且更改有效。
- 如果我选择编辑“默认值”,我会看到更多字体,但更改不会生效。
在“属性”中:
我可以在这里选择Yahei Consolas Hybrid
和其他字体,并且 cmd 会尊重我的设置并立即更改字体。
在默认值中:
您可以在此处看到更多等宽字体,例如Dejavu Sans Mono
,Monaco
等等,但您无法通过 cmd 更改这些字体。
我不知道这里的区别,但这毫无意义。一些无法遵守的设置不应该存在,更不用说造成的混乱了:“属性”和“默认值”是相同的。
我想要的是将普通 cmd 中的字体更改为 Monaco 或 Dejavu Sans Mono。如果不可能,则在旧版 cmd 中。
顺便说一句,如果有人可以澄清“属性”和“默认值”之间的区别,那就太好了。
答案1
现在我找到答案了,谢谢大家的帮助。一周后我不会接受自己的答案,看看是否有人能发布更好的答案。
问题出在代码页上。我将 Windows 10 的默认显示语言设置为简体中文,代码页为 GBK(936)。因此,在cmd
Windows 中,系统打算以中文显示所有信息。实际上,我们看到,在我发布的问题的第一张图片中,帮助信息的开头几行都显示为中文。
要显示中文,您必须找到合适的字体来提供中文字符的提示信息。显然,Windows 会预先检查所有字体,以查看其对当前代码页字符的支持。当它发现设置的字体不支持中文时,它将放弃该字体并恢复为默认字体。而且,它将从默认面板中的字体设置列表中删除该字体。 Yahei Consolas Hybrid
支持英文和中文,因此它可以在默认和属性设置的列表中显示。Monaco
但是Dejavu
,和从默认面板中消失了,但保留在属性面板中。
为什么它不清除属性字体列表?因为正如注释所说,“属性”适用于当前cmd
窗口/会话,而“默认”设置控制所有后续cmd
会话,例如,更全局。它确保如果用户在运行时更改代码页,则不必再次检查字体列表的属性,用户可以直接更改字体。这正是我的情况。我必须说,Windows 在这里做了很多幕后工作。
您可以在下面的屏幕截图中看到,我使用 更改了代码页,chcp 1252
并且字体更改立即生效。就是Monaco
现在。
因此,问题变成了:“如何在启动窗口时更改代码页cmd
?” 我发现了一个非常有用的问题:
我将修改简化为:
- 创建一个
.reg
文件,并随意命名。 - 将这些行复制到文件中并保存。
只需输入:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"Autorun"="chcp 1252>>nul"
1252
可以是其他值。>>nul
是为了避免打印
Active code page: 1252
每次启动时cmd
。
- 运行该文件以导入设置。
- 运行
cmd
。现在您可以在属性中轻松设置字体。(我注意到,如果您从桌面上的链接运行,字体是Simsun
,但如果您从任务栏中的锚点运行,字体是Yahei Consolas Hybrid
。我不知道为什么。但您可以更改字体。
不过,在 Default 中设置默认字体对 的后续会话不起作用cmd
。它仍然属于Simsun
,所以我无法实现“打开 cmd 并使用Monaco
字体”。我认为这是因为Windows 检查带有字体的当前语言代码页,而不是带有字体的“自动运行”代码页。,因此更改默认语言是可行的,但这不是我想要的。我仍然在讨论这个话题。
答案2
现在在区域设置(区域/管理[选项卡名称],然后更改系统区域设置...)中,有一个复选框,上面写着“Beta:使用 Unicode UTF-8 提供全球语言支持”。选中它,它可能会起作用。我目前使用的是 Windows 10 版本 17134.165。