我有用于打印数字的自定义打印功能。我制作了ASCII版本和UTF-16LE版本。 UTF-16LE版本将全角代码/字符用于0-9,将A-F用于十六进制。在调试我的函数时,我注意到在Visual Studio中这些字符看起来与ASCII字符略有不同,尽管这并没有困扰我,但让我开始思考。所以我决定做一个快速的谷歌搜索“ unicode halfwidth vs fullwidth”
...而且我发现有几页谈论“ Fullwidth”形式是指字符的可视宽度,而我认为“ Fullwidth”是指编码宽度(2字节或更多)...
以下是其中的几页和报价:
https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
ICU Unicode Normal vs Fullwidth
“为了使排列整齐,IBM定义了一组'全角'(最好是'全角')字母和数字。”
https://en.wikipedia.org/wiki/Half-width_kana
“半角假名是片假名字符,以其正常宽度(长宽比为1:2)显示,而不是通常的正方形(1:1)长宽比。例如,片假名的通常(全角)形式ka是KA,半角形式是カ。”
当我们为大小和对齐方式使用不同的Fonts时,“ Fullwidth”指的是视觉宽度,这对我来说没有任何意义。
所以:
答-谁能给我一个很好的答案,为什么“全角”将指视觉宽度。它在Unicode UTF-16规范中的何处这样说?
B-作为开发人员/程序员,是否希望选择使用标志输出为Halfwidth或Fullwidth?
最佳答案
您对全角与半角的起源找到了自己的答案,因此我不再赘述。是的,名称是指字符的视觉宽度。抱歉,我对此没有任何官方参考。
Unicode的目标之一是处理往返任何旧字符集的往返转换而不会丢失。由于存在具有全角字符的旧字符集,因此它们也必须是Unicode的一部分,否则将无法正确转换。
我发现很难想象在现代代码中需要在普通字符和全角字符之间进行选择的情况。它实际上仅用于旧版支持。