我有用于打印数字的自定义打印功能。我制作了一个 ASCII 版本和一个 UTF-16LE 版本。UTF-16LE 版本对 0-9 使用全角代码/字符,对十六进制使用 AF。在调试我的函数时,我注意到 Visual Studio 中的字符看起来与 ASCII 字符有点不同,虽然这并没有打扰我,但它让我开始思考。所以我决定在谷歌上快速搜索“Unicode 半角与全角”
...而且我发现有几页谈论“全宽”形式,指的是字符的视觉宽度,而我认为“全宽”是指编码的宽度(2字节或更多)......
以下是其中的几页和引述:
- https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
- ICU Unicode 正常与全宽
为了使事情整齐排列,IBM 定义了一组“全角”(最好是“双角”)字母和数字。
- https://en.wikipedia.org/wiki/Half-width_kana
半角假名是以正常宽度的一半显示的片假名字符(纵横比为 1:2),而不是通常的正方形 (1:1) 纵横比。例如,片假名ka的通常(全角)形式是カ,而半角形式是カ。
当我们有不同的字体大小和对齐方式时, “全宽”指的是视觉宽度对我来说没有意义。
所以:
A - 谁能给我一个很好的答案,为什么“全宽”指的是视觉宽度。Unicode UTF-16 规范中的什么地方是这样说的?
B - 作为开发人员/程序员,是否可以选择使用标志输出为半角或全角?