如何更改控制台字体?

4

我在Windows XP控制台中输出Unicode遇到了问题。(Microsoft Windows XP [Version 5.1.2600]) 下面是第一段代码(来源:http://www.siao2.com/2008/03/18/8306597.aspx)


#include 
#include 
#include 

int main(void) {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n");
    wprintf(L"èéøÞǽлљΣæča\n");
    wprintf(L"ぐႢ\n");
    wprintf(L"\x3050\x10a0\n");
    return 0;
}

我的代码页是65001(CP_UTF8)。除了Ⴂ以外,每个字母都看起来不错。但Ⴂ看起来像一个正方形。 控制台默认字体“Lucida Console”没有那个字母的字体。 所以,我下载了一些其他可以正确渲染Ⴂ的字体,但我无法更改(Visual Studio 2005项目)控制台字体。 我改变了HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\FontName,但当我检查提示符的属性 -> 字体时,它设置为“Lucida Console”。 有没有办法用API更改控制台字体? 下面的代码是我尝试过的。但它不起作用。帮帮我。

PS:顺便说一下,当我在“代码标记”中放置“include <fcntl.h>”时,带有<>(fcntl.h)的部分消失了。我该如何放置系统包含文件?


SetConsoleOutputCP(1200) 返回 false,因为 1200 不被视为有效的代码页。 - carlos
1个回答

2
我通过Google找到了这些指令:
http://keznews.com/3308_Adding_fonts_to_cmd_exe

默认情况下,cmd.exe窗口的属性允许您选择Raster Fonts或Lucida Console。您可以通过注册表将其他等宽字体添加到列表中。

在regedit中,导航到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ Console\TrueTypeFont

请注意,Lucida Console已经在此键下,名称为“0”。

添加一个新的字符串值,名称为“00”(是的,这是必需的名称),并将数据设置为已安装在C:\ Windows \ Fonts文件夹中的等宽字体的名称。在这个例子中,我添加了Consolas字体。似乎需要更多条目,如“000”,“0000”等。像“1”和“2”这样的名称不起作用。为什么呢?

打开一个新的cmd窗口,在系统菜单上右键单击,选择属性|字体,然后就有了新添加的字体。

我这样做是因为我想要一个更易读的字体来显示我的PowerShell窗口,因为我花了一些时间盯着它看。

来源:ferncrk.com

我按照说明操作并将Consolas设置为cmd的默认字体。它如预期般工作。

请注意,它只接受等宽字体。


感谢关于更改字体的建议。但是,我找不到任何可以显示L'Ⴂ'(x10a0)的Unicode等宽字体。Lucida Console将其显示为[]。 - P-P
我发现了一种名为 Everson Mono 的字体,它支持格鲁吉亚语,但由于某些原因,命令提示符静默地拒绝它。 - Gunslinger47
你可以尝试将这个问题提交到superuser.com,这不是一个编程问题,而是与你的Windows配置有关的问题。 - Gunslinger47

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接