|
|
发表于 2006-8-21 14:59:06
|
显示全部楼层
我还有个困惑就是,一种字体比如simsun,你说winxp上带的simsun是
simsun-gbk的,可是我用ttmkfdir也可以生成这样的编码:
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-koi8-r
那是不是说明koi8也和iso10646兼容?那winxp上的simsun是一个至少包含gbk和koi8的一个
iso10646的子集?那么我看网上人很多手动修改ttmkfdir生成的fonts.scale文件来增加gbk-0
后缀的simsun,这样做有什么意义吗?
还有就是现在很多程序都用fontconfig来调用字体,那么字体的name是我们指定的,而字体的编码呢?比如mozilla我指定用simsun的字体,那么我怎么能知道mozilla调用的哪种编码的字体呢,是根据locale中LC_CTYPE这个量来的吗?
我不清楚 ttmkfdir 内部是怎么样工作的,但生成这样的 koi8 这样的韩文信息,并不代表该字体就提供了韩文字符供你使用。
你要对一个字体有所了解,不能光看表面,最好能像庖丁解牛一样,把它从内部打开了来看。我推荐你装以下几个字体工具:
fontforge 和 gbdfed(前 xmbdfed)
都是功能很强大的利器。
据我观察,simsun 除了绝大部分是 gbk(U-5E00 ~ U-9A50) 以外,还带有部分 Latin 字符(ISO8859-1) ,日文和其它一些符号,唯独没有韩文。
不能说 gbk 是 iso10646.1 的一个子集,应该理解为两套相互兼容的编码标准。
你用 gbdfed 导入 server fonts 里的 simsun,可以发现用 gbk 方式和用 iso10646-1 方式导入所看到的双字节编码是不同的,也就是说它们之间是一种一对一的相互映射(map) 关系,而你的 Linux 系统能同时处理这两套标准。
很多人通过手动修改增加 gbk-0,其实目的也就是告诉 x font server,我要 simsun 以 gbk 编码来查找字符。
你也可以改成 iso10646-1 告诉 x font server,我想要 simsun 以 iso10646.1 的编码标准来查找字符。
其实不管你用哪种方式,x font server 在内部都支持。
不过我觉得很奇怪,debian 提供了 defoma 这个字体管理工具,为什么没人喜欢用,defoma 会自动调用 ttmkfdir 这类命令,不需要你实际去了解内部到底做了什么动作,而且配置过程中还给你很多的提示信息。它又怕你嫌麻烦,用设计了 dfontmgr 这个图形界面前端供你使用。
用 fontconfig 时,首先字体的名字(当然你可以为它们设置一些别名 alias name)不是你说了算的,这些信息都是保存在字体内部的,而且也不需要你去指定,fontconfig 会帮你管理一切,你只需把它丢到某个目录就行了。
网页设计好后,一般都写好它自己默认的编码, 浏览器会根据这些编码来判断你要用哪个编码。如果没写默认编码,应该会根据你在浏览器中指定的默认编码来操作或自动为你选择编码,我不会设计网页,超出我的范围了。
至于 LC_CTYPE,我没看出和你提的问题有直接关系。 |
|