【问题标题】:Print Braille characters to cmd c++将盲文字符打印到 cmd c++
【发布时间】:2015-11-04 11:04:18
【问题描述】:

对于一个程序,我需要将盲文字符输出到控制台。

我找到了一种使用以下代码输出 unicode 字符的方法:

#include <iostream>
#include "fcntl.h"
#include "io.h"

using namespace std;

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wcout<<L"ĐĄßĞ"<<endl;
    return 0;
}

并将 cmd 的字体更改为 Lucida Console。

但是,这种方式存在盲文字符不显示的问题。实际上,我什至无法将它们复制并粘贴到代码中,因为它们看起来是空白的。在 Linux 中一切正常(我可以看到、复制和粘贴这些字符),但我需要 Windows 应用程序。

我想有一些可能使用这个字符的代码,我尝试过这种方式,但没有成功。

有人可以帮我完成这项任务吗?

【问题讨论】:

标签: c++ windows cmd


【解决方案1】:
  1. 您需要安装支持 Unicode 的等宽字体。为了尝试这个,我使用了来自http://www.wazu.jp/gallery/Fonts_Braille.html 的 FreeMono.ttf。

  2. 安装字体后,编辑注册表以将字体添加到控制台的字体列表中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont。 Lucida Console 和 Consolas 应该有一个 000 条目。为所需的每种字体的值名称添加另一个零。我添加了000 并设置为FreeMono

  3. 重新启动控制台,然后编辑其属性以选择字体。在 Windows 10 上,您可能必须在控制台属性中启用“传统模式”并在字体显示之前重新启动控制台。选择后,您可以再次关闭旧模式。

这是我使用的代码:

#include <iostream>
#include "fcntl.h"
#include "io.h"

using namespace std;

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wcout<<L"\u2876\u2877\u2878"<<endl;
    return 0;
}

输出(截图):

注意:我选择的字体不能很好地显示 ASCII,所以我不推荐它,但盲文很好。

【讨论】:

  • 非常感谢您的回答。它有效,据我了解,无法从 C++ 内部添加自定义字体。此外,FreeMono 可能是唯一带有盲文字符集的单空格字体,因此您的答案确实是唯一可能的解决方案。
  • 这对我在 Windows 10 21H1 上不起作用。我没有在列表中看到字体
  • @Thomas 自从回答了这个问题后,就有了一个新的控制台界面。您必须在字体显示之前启用“旧版控制台”模式。奇怪的是,当我的系统仍然是 Windows 7 时安装的字体仍然以非传统模式显示,但是一旦我再次禁用传统模式,只有 FreeMono 从列表中消失。必须在升级期间迁移。不过,选定的字体仍然是 FreeMono。我会更新答案。
  • 好的,谢谢。传统模式做到了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 2011-07-10
相关资源
最近更新 更多