UTF.COM.CN

UTF-8编码的详细讲解

作者:佚名 | 来源:网络 | 添加时间:2006-02-22 11:19:18 | 人气:75910

UTF-8编码的详细讲解(7)

我在哪儿能找到 ISO 10646-1 X11 字体? 
在过去的几个月里出现了相当多的 X11 的 Unicode 字体, 并且还在快速增多.  

Markus Kuhn 正和其他许多志愿者一起工作于手动将旧的 -misc-fixed-*-iso8859-1 字体扩展到覆盖所有的欧洲字符表 (拉丁, 希腊, 斯拉夫, 国际音标字母表. 数学与技术符号, 某些字体里甚至有亚美尼亚语, 乔治亚语, 片假名等). 更多信息请参考 Unicode fonts and tools for X11 页. 这些字体将与 XFree86 一起分发. 例如字体  
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 

(旧的 xterm 的 fixed 缺省字体的一个扩展, 包括超过 3000 个字符) 已经是 XFree86 3.9 snapshot 的一部分了. 

Markus 也做好了 X11R6.4 distribution 里所有的 Adobe 和 B&H BDF 字体的 ISO 10646 版本. 这些字体已经包含了全部 Postscript 字体表 (大约 30 个额外的字符, 大部分也被 CP1252 MS-Windows 使用, 如 smart quotes, dashes 等), 在 ISO 8859-1 编码下是没有的. 它们在 ISO 10646-1 版本里是完全可用的.  
XFree86 4.0 将携带一个集成的 TrueType 字体引擎, 这使得你的 X 应用程序可以将任何 Apple/Microsoft 字体用于 ISO 10646-1 编码.  
将来的 XFree86 版本很有可能从分发版中去除大多数旧的 BDF 字体, 取而代之的是 ISO 10646-1 编码的版本. X 服务器则会增加一个自动编码转换器, 只有当旧的 8 位软件请求一个类似于 ISO 8859-* 编码的字体时, 才虚拟地从 ISO 10646-1 字体文件中创建一个这样的字体. 现代软件应该优先地直接使用 ISO 10646-1 字体编码.  
ClearlyU (cu12) 是一个非常有用的 X11 的 12 点阵, 100 dpi 的 proportional ISO 10646-1 BDF 字体, 包含超过 3700 个字符, 由 Mark Leisher 提供 (样例图象).  
Roman Czyborra 的 GNU Unicode font 项目工作于收集一个完整的与免费的 8×16/16×16 pixel Unicode 字体. 目前已经覆盖了 34000 个字符.  
etl-unicode 是一个 ISO 10646-1 BDF 字体, 由 Primoz Peterlin 提供.  
Unicode X11 字体名字以 -ISO10646-1 结尾. 这个 X 逻辑字体描述器 (X Logical Font Descriptor, XLFD) 的 CHARSET_REGISTRY 和 CHARSET_ENCODING 域里的值已经为所有 Unicode 和 ISO 10646-1 的 16 位字体而正式地注册了. 每个 *-ISO10646-1 字体都包含了整个 Unicode 字符集里的某几个子集, 而用户必须弄清楚他们选择的字体覆盖哪几个他们需要的字符子集. 

*-ISO10646-1 字体通常也指定一个 DEFAULT_CHAR 值, 指向一个非 Unicode 字形, 用来表示所有在该字体里不可用的字符 (通常是一个虚线框, 一个 H 的大小, 位于 0x1F 或 0xFFFE). 这使得用户至少能知道这儿有一个不支持的字符. xterm 用的小的定宽字体比如 6x13 等, 将永远无法覆盖所有的 Unicode, 因为许多文字比如日本汉字只能用比欧洲用户广泛使用的大的象素尺寸才能表示. 欧洲使用的典型的 Unicode 字体将只包含大约 1000 到 3000 个字符的子集. 

我怎样才能找出一个 X 字体里有哪些字形? 
X 协议无法让一个应用程序方便地找出一个 cell-spaced 字体提供哪些字形, 它没有为字体提供这样的量度. 因此 Mark Leisher 和 Erik van de Poel (Netscape) 指定了一个新的 _XFREE86_GLYPH_RANGES BDF 属性, 告诉应用程序该 BDF 字体实现了哪个 Unicode 子集. Mark Leisher 提供了一些样例代码以产生并扫描这个属性, 而 Xmbdfed 3.9 以及更高版本将自动将其加入到由它产生的每个 BDF 文件里. 

与 UTF-8 终端模拟器相关的问题是什么? 
VT100 终端模拟器接受 ISO 2022 (=ECMA-35) ESC 序列, 用于在不同的字符集间切换. 

UTF-8 在 ISO 2022 的意义里是一个 "其他编码系统" (参考 ECMA 35 的 15.4 节). UTF-8 是在 ISO 2022 SS2/SS3/G0/G1/G2/G3 世界之外的, 因此如果你从 ISO 2022 切换到 UTF-8, 所有的 SS2/SS3/G0/G1/G2/G3 状态都变得没有意义了, 直到你离开 UTF-8 并切换回 ISO 2022. UTF-8 是一个没有国家的编码, 也就是一个自我终结的短字节序列完全决定了它代表什么字符, 独立于任何国家的切换. G0 与 G1 在 ISO 10646 里与在 ISO 8859-1 里相同, 而 G2/G3 在 ISO 10646 里不存在, 因为任何字符都有固定的位置, 因而不会发声切换. 在 UTF-8 模式下, 你的终端不会因为你偶然地装入一个二进制文件而切换入一种奇怪图形字符模式. 这使得一个终端在 UTF-8 模式下比在 ISO 2022 模式下要健壮得多, 而且因此可以有办法将终端锁在 UTF-8 模式里, 而不会偶然地回到 ISO 2022 世界里.
责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)
  • 的 发表于:2008-03-28 11:43:56
    点击进入与“UTF-8编码的详细讲解”相关的网站
  • 流氓 发表于:2008-03-28 11:43:14
    流氓

    [url="http://www.liumang.com/"]流氓[/url]

    <A href=http://www.liumang.com/>流氓</a>

    <A href="http://www.liumang.com/">流氓</a>

  • s 发表于:2008-03-05 14:24:07
    s
  • 天外来客 发表于:2007-11-30 18:03:27
    最终, Unicode 将取代所有这些编码, 主要通过 UTF-8 的形式?事实上unicode编码方式用的越来越广泛。
  • 天外来客 发表于:2007-11-30 18:01:57
    gb2312编码过于随便,而gb18030对未了向前兼容也只能仍然“随便”
  • 柜体 发表于:2007-10-29 16:37:58
    多幅随风倒撒
  • celsl 发表于:2007-10-29 16:36:38
    ceshi 游戏测试
  • xxxxx 发表于:2007-07-04 15:24:10
    vxvxcvxcv
  • 路过 发表于:2006-09-08 11:25:48
    德语中的元音变音是指 “A“上面加横着排列的两点,用于标识读音的变化,加两点的这个“动作字符“离开相应的字母单独显示也没有意义,这也是一个combining charactor。
  • 路过 发表于:2006-09-08 11:20:33
    这种科技文献的翻译确实很难,最搞笑的莫过于“汉语拼音(Bopomofo)“了,老外的造字术倒是很简洁。关于“什么是组合字符?”写一点注记。“编码点”是指那些待分配的编码、那些UCS位置。“无间隔重音”就是指英语音标表示重音的那一撇,它不单独占一格,而是和相应的字符紧挨在一起的,它只是一个标记不单独显示为一个字符,UCS和旧编码中都有单独的编码用来表示例如 “`A”这种情况,也就是有一组编码逐一列出所有的情况,这些编码对应的字符叫“预作字符”, “`A”作为一个整体保存的,这样当然不够方便,所以UCS另外给出了一种表示方法把重音符号从加重的预作字符里分离出来,使用时加以组合,这种被分离出来的符号统称为(除了重音符号还有下面提到的“变音符号”)“组合字符”(combining charactor),"组合字符”的译法我个人有保留意见,太简单化,combining charactor这个概念其实很特殊化和生僻,这种简单的直译容易让人误解。 “正字法”有一个同义词叫“缀音法”,我认为应该采用这个词更易于理解什么是combining charactor。

姓名:

验证码: 点击刷新