LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 874|回复: 4

xft是不是只支持iso8859-1和utf-8的字体阿?

[复制链接]
发表于 2006-8-20 22:47:24 | 显示全部楼层 |阅读模式
1。从fvwm的man page里看到,定义fvwm的xft字体时定义字体的enconding只能是
iso8859-1和iso10646,所以想问问调用xft/fontconfig的程序是不是加载的都是utf-8
的字体呢?
2。还有个问题就是字体也分编码的吗?
比如用ttmkfdir后,生成的fonts.scale文件里每个字体后面都对应有编码,比如:
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso8859-1
等。
现在ttfmkdir不能生成后缀为gbk的字体了,是不是说我系统里一旦调用
simsun这个字体,都是utf-8的字体呢?
哪位大大回答一下,万分感激。
发表于 2006-8-21 12:49:04 | 显示全部楼层
字体就是字体,,
UTF-8 什么的是编码..
回复 支持 反对

使用道具 举报

发表于 2006-8-21 13:46:25 | 显示全部楼层
Post by alaxie
1。从fvwm的man page里看到,定义fvwm的xft字体时定义字体的enconding只能是
iso8859-1和iso10646,所以想问问调用xft/fontconfig的程序是不是加载的都是utf-8
的字体呢?
2。还有个问题就是字体也分编码的吗?
比如用ttmkfdir后,生成的fonts.scale文件里每个字体后面都对应有编码,比如:
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso8859-1
等。
现在ttfmkdir不能生成后缀为gbk的字体了,是不是说我系统里一旦调用
simsun这个字体,都是utf-8的字体呢?
哪位大大回答一下,万分感激。

讲讲我的理解。
每个字体的设计都要遵循一定的编码规范,否则会乱套。
winxp 带的 simsun.ttc 的字体编码为 GBK, 是一种国家标准,而 ISO10646.1 是 ISO/IEC 和 Unicode Consortium 共同制定的国际标准。

它们之间有什么联系呢?

当时国家为了兼容 ISO10646.1 开发了一套新标准 GB 13000.1-93,而那时正值 GB2312 -1980 广泛流行,就先开发了 GBK(95) 作为迈向该标准的第一步,GBk 向下兼容 GB2312, 向上兼容 ISO 10646-1 / Unicode 2.1,起到一个过渡作用。
GBK 采用双字节编码方案,即 16 位编码,覆盖了整个基本汉字域 (U+4E00 to U+9FA5),以及其它一些附加区域。

windows 上流行的 cp936(code page 936) 编码就是一种 GBK  标准的具体实现。

但要注意 GBK 编码空间有限,不能提供 ISO10656.1 的全部编码空间。为了弥补该缺陷,后来又开发了后来的 GB 18030-2000。

具体看这里:
http://lists.w3.org/Archives/Pub ... et-registration.txt

你现在只要记住 GBk 和 ISO 10646.1 两者兼容就可以了。
linux 上的软件,如 fvwm 都是国际流行软件,故一般会要求 ISO 10646.1 编码什么的。
同样你用  ttmkfdir 直接生成的肯定也会默认以 iso10646-1 结尾。

你可以用其它工具如 defoma + dfontmgr 手动生成以 gbk 结尾的字体信息。

我想具体两者以什么编码结尾,关系不大。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-21 14:06:34 | 显示全部楼层
Post by quanliking
讲讲我的理解。
每个字体的设计都要遵循一定的编码规范,否则会乱套。
winxp 带的 simsun.ttc 的字体编码为 GBK, 是一种国家标准,而 ISO10646.1 是 ISO/IEC 和 Unicode Consortium 共同制定的国际标准。

它们之间有什么联系呢?

当时国家为了兼容 ISO10646.1 开发了一套新标准 GB 13000.1-93,而那时正值 GB2312 -1980 广泛流行,就先开发了 GBK(95) 作为迈向该标准的第一步,GBk 向下兼容 GB2312, 向上兼容 ISO 10646-1 / Unicode 2.1,起到一个过渡作用。
GBK 采用双字节编码方案,即 16 位编码,覆盖了整个基本汉字域 (U+4E00 to U+9FA5),以及其它一些附加区域。

windows 上流行的 cp936(code page 936) 编码就是一种 GBK  标准的具体实现。

但要注意 GBK 编码空间有限,不能提供 ISO10656.1 的全部编码空间。为了弥补该缺陷,后来又开发了后来的 GB 18030-2000。

具体看这里:
http://lists.w3.org/Archives/Pub ... et-registration.txt

你现在只要记住 GBk 和 ISO 10646.1 两者兼容就可以了。
linux 上的软件,如 fvwm 都是国际流行软件,故一般会要求 ISO 10646.1 编码什么的。
同样你用  ttmkfdir 直接生成的肯定也会默认以 iso10646-1 结尾。

你可以用其它工具如 defoma + dfontmgr 手动生成以 gbk 结尾的字体信息。

我想具体两者以什么编码结尾,关系不大。


多谢楼上的精彩回答!
我还有个困惑就是,一种字体比如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这个量来的吗?
多谢
回复 支持 反对

使用道具 举报

发表于 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,我没看出和你提的问题有直接关系。
回复 支持 反对

使用道具 举报

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

本版积分规则

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