800 发表于 2005-12-16 01:34:34

[已解决]WIN32下GVIM的全角中文符号问题

这个问题似乎跟字体有关,set ambiwidth=double解决。
有点奇怪,网上几乎没有该问题的描述,即使用ambiwidth作keyword搜索,也只有两三篇中文文档提到了这个问题。

有兴趣知道为什么的请看源码,mbyte.c中的utf_char2cells函数。
p_ambw在option.h中定义,即ambiwidth。

以下为原始问题:
---------------------------------------------------------------------
gvim在windows里显示中文全角的引号“”有问题,会把这两个字符当成半角显示。在论坛和网上找了很多地方,都没找到有关这个问题的描述和解释,请问有人知道这个问题是怎么搞的,能解决么?
谢谢~

无双TM 发表于 2005-12-16 11:40:28

我的没问题啊 是不是你输入时输入的就是半角符号

800 发表于 2005-12-17 07:12:55

第二行的内容是:一“三”五
三字本来应该跟可字对齐

我说的是win32版的gvim,你用的是哪个版本啊?

800 发表于 2005-12-17 13:37:18

去翻vim的源码,似乎是找到问题所在了。

当set encoding=chinese的时候,引号显示正常,但set encoding=utf8的时候则不正常。
vim似乎是根据一个叫mb_bytelen_tab的数组来判断字符宽度的。
在win32平台下,且enc=chinese时,mb_bytelen_tab使用IsDBCSLeadByteEx函数填充,msdn上说这个函数判断一个字节是否为一个双字节字符的起始字节。
enc=utf8时,使用一个预定义的utf8len_tab数组对mb_bytelen_tab进行填充。

引号的utf8编码是0x1c20和0x1d20,我试了试,把utf8len_tab的相关元素改成2,但似乎没有作用的样子。问题还是没有解决,还在找解决的办法。
页: [1]
查看完整版本: [已解决]WIN32下GVIM的全角中文符号问题