【发布时间】:2020-01-15 23:37:24
【问题描述】:
我使用Ubuntu 18.04.2 LTS 和GNOME Terminal 3.28.2 我输入以下命令:
echo -e "\u0928\u094d\u0928"
输出应包含 两个 Devengari 字形(连字):न्न。相反,我得到的是三个字形的组合,\u0928\u094d (न्) 和最后一个 \u0928 (न) 的组合。
这是我的locale 输出:
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_ADDRESS=pl_PL.UTF-8
LC_TELEPHONE=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=
为什么我不能正确地表示那个连字?我是否必须指向特定的字体系列?
我也尝试了一个简单的C++ 程序:
#include <iostream>
#include <string>
int main()
{
std::string hindi = "न्न";
std::cout << hindi << std::endl;
return 0;
}
同样在这种情况下,shell 上的输出是相同的(错误的)三个字形连接。我想知道终端的字体渲染引擎是否导致了这个问题,而不是C++ 或echo。
【问题讨论】:
标签: c++ utf-8 fonts echo glyph