QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3259|回复: 3

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

[复制链接]
发表于 2005-12-16 01:34:34 | 显示全部楼层 |阅读模式
这个问题似乎跟字体有关,set ambiwidth=double解决。
有点奇怪,网上几乎没有该问题的描述,即使用ambiwidth作keyword搜索,也只有两三篇中文文档提到了这个问题。

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

以下为原始问题:
---------------------------------------------------------------------
gvim在windows里显示中文全角的引号“”有问题,会把这两个字符当成半角显示。在论坛和网上找了很多地方,都没找到有关这个问题的描述和解释,请问有人知道这个问题是怎么搞的,能解决么?
谢谢~
发表于 2005-12-16 11:40:28 | 显示全部楼层
我的没问题啊 是不是你输入时输入的就是半角符号
回复

使用道具 举报

 楼主| 发表于 2005-12-17 07:12:55 | 显示全部楼层
第二行的内容是:一“三”五
三字本来应该跟可字对齐

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 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,但似乎没有作用的样子。问题还是没有解决,还在找解决的办法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 17:07 , Processed in 0.068972 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表