我想写一个2D国际象棋程序。 它不需要太多的用户输入,因此它将仅使用Windows控制台,而不是任何GUI。 我知道如何使用汇编语言或C ++访问Windows Console API并更改其字体。 对于Windows终端,使用相同的方法不起作用,因为它被编写为字体不可知的终端。 但是,在Windows Terminal中,您可以通过设置将字体设置为喜好。 我想在Windows终端启动之前或之内从外部,外部更改Windows终端字体。 我知道所有Windows终端设置都存储在JSON文件中,因此我可以在Lanching之前对其进行操作。 我正在寻找更直接的方法,例如命令行选项或Winapi调用。 我找不到任何。 有什么办法可以编程更改Windows终端字体?

问题描述 投票:0回答:2

winapi fonts console-application windows-terminal
2个回答
1
投票
目录扩展有关当前控制台字体的信息。

我也有类似的问题:我想使用某些符号,这些符号只有Windows终端中的某些字体具有覆盖范围。
当所选字体没有必要的字形时,系统的font susthback启动以在另一种字体中找到符号。

最好的是,后备找到一个与基本字体或其他缺失符号的后备视觉兼容的符号。
最坏的情况,它代替了表情符号(就像您在评论中提到的大棋子一样)。 大多数表情符号都不适合单个角色单元格,它们具有自己的颜色,而不是当前的前景和背景颜色。 (颜色覆盖是基于Windows终端设置。)我尝试用

VS15

抑制表情符号,但似乎忽略了字体后备机制。

0
投票
因此,我没有更改用户的字体选择,而是对其进行了调整:

UPON启动,该程序调用GetCurrentConsolefontex

查找当前字体。 与
  • set

    currentConsolefontex

    不同,这似乎在Windows终端中起作用。
  • 通过字体,我的程序称GetGlyphindicesw(带有ggi_mark_nonexisting_glyphs flag),以确定该字体不支持其要显示的符号。

    字体未涵盖的任何符号都会受到字体后备的约束。 在我的域中,缺少符号有合理的文本缩写,因此我的程序根据需要将其交换。

该程序还通知用户,他们可能会通过更改字体选择来获得更好的体验。

    fun事实是您是否知道Windows随附的大多数字体都没有替换字符的字形? (替换字符是当您没有字形时应该显示的角色。)几乎每次您看到替换字符时,这是因为字体后备出现了并为您找到了!
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.