2015-11-04 30 views
0

對於一個程序,我需要將盲文字符輸出到控制檯。將盲文字符打印到cmd C++

我找到了一種方法來輸出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應用程序。

我想有一些posiblity使用這個字符的代碼,我試過這種方式,但沒有成功。

任何人都可以幫我完成這個任務嗎?

+0

Lucida控制檯不支持Braile字符(https://www.microsoft.com/typography/fonts/font.aspx?FMID=1262)。 Braile是其他類別,未列出。嘗試使用不同的Unicode字體。 – RedX

回答

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. 重新啓動控制檯,然後編輯其屬性以選擇字體。

這是我使用的代碼:

#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; 
} 

輸出(截圖):

Screenshot of functional Braille output

注:我選擇沒有很好地顯示ASCII字體,所以我不不推薦它,但盲文很好。

+0

非常感謝您的回答。它的工作原理,據我所知,無法從C++內部添加自定義字體。另外FreeMono也許是唯一帶有盲文字符集的單色空間字體,所以你的答案是唯一可能的解決方案。 – a76