如何在 C++ 中制作我自己的字符编码?
How to make my own character encoding in C++?
我需要在 C++ 中定义一个字符集。我已经查看了文档 here, but what I am looking for is little more wide range. For example I have letters like this.
为了输入这些字符,我会制作一个虚拟键盘。我假设我已经为每个角色提供了代码。我有这个字符集的字体。问题是,当我从虚拟键盘按下一个键时,它会将键写为例如 'q'。在文本字段中,它看起来像是我显示的照片中的字母之一,但在背景中,实际字母是 'q'。当我将该字母复制到其他地方时,它会写 'q' 字母。 Example Image
虽然我无意将那些字母复制到其他地方,但我想给他们一个代码,当我写的时候,它会与 'q' 不同。
如果我不使用至少两种古代语言,那么用 'q' 表示该字母不会有问题。 (古希腊语、古土耳其语)
它类似于 ASCII 编码,但与程序外部隔离。
我希望我描述的很好。
好的,让我们试一试答案。
首先,不要为窄字符而烦恼。这只是一个痛苦的工作。使用 wchar_t
。其次,在相关系统上 wchar_t
映射到某种形式的 Unicode,而 Unicode 有一个 Private Use Area (PUA)。为每个角色分配 PUA 值。这会处理文本的二进制表示。
其次,您需要一个输入法。这是 OS 特定的,您还没有指定哪个 OS。而且我们不知道你有什么脚本,所以我们不知道字符键是一对一映射还是更复杂。
最后,您需要一种显示这些脚本的方法。这可以通过两种方式解决。要么您向 OS 提供一种字体,然后让 OS 使用该字体呈现您的文本,要么您自己接管呈现。两者都不容易,并且都在一定程度上 OS 特定(我们仍然不知道)。
我需要在 C++ 中定义一个字符集。我已经查看了文档 here, but what I am looking for is little more wide range. For example I have letters like this.
为了输入这些字符,我会制作一个虚拟键盘。我假设我已经为每个角色提供了代码。我有这个字符集的字体。问题是,当我从虚拟键盘按下一个键时,它会将键写为例如 'q'。在文本字段中,它看起来像是我显示的照片中的字母之一,但在背景中,实际字母是 'q'。当我将该字母复制到其他地方时,它会写 'q' 字母。 Example Image
虽然我无意将那些字母复制到其他地方,但我想给他们一个代码,当我写的时候,它会与 'q' 不同。
如果我不使用至少两种古代语言,那么用 'q' 表示该字母不会有问题。 (古希腊语、古土耳其语)
它类似于 ASCII 编码,但与程序外部隔离。
我希望我描述的很好。
好的,让我们试一试答案。
首先,不要为窄字符而烦恼。这只是一个痛苦的工作。使用 wchar_t
。其次,在相关系统上 wchar_t
映射到某种形式的 Unicode,而 Unicode 有一个 Private Use Area (PUA)。为每个角色分配 PUA 值。这会处理文本的二进制表示。
其次,您需要一个输入法。这是 OS 特定的,您还没有指定哪个 OS。而且我们不知道你有什么脚本,所以我们不知道字符键是一对一映射还是更复杂。
最后,您需要一种显示这些脚本的方法。这可以通过两种方式解决。要么您向 OS 提供一种字体,然后让 OS 使用该字体呈现您的文本,要么您自己接管呈现。两者都不容易,并且都在一定程度上 OS 特定(我们仍然不知道)。