⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000000.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;yanglc&nbsp;(魂归燕园~~别理我,烦着呢),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;汉字编码标准与识别(二)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Apr&nbsp;29&nbsp;17:14:27&nbsp;2000)&nbsp;<BR>&nbsp;<BR><A HREF="http://www.linuxforum.net/cgi-bin/perl/showpost.pl?Board=chinese">http://www.linuxforum.net/cgi-bin/perl/showpost.pl?Board=chinese</A>&nbsp;<BR>&amp;Number=767&amp;page=1&amp;view=expanded&amp;sb=5&nbsp;<BR>&nbsp;<BR>Subject&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;汉字编码标准与识别(二)内码与字体的关系&nbsp;<BR>&nbsp;<BR>Posted&nbsp;by&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shuyong&nbsp;<BR>Posted&nbsp;on&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4/16/2000&nbsp;9:19&nbsp;PM&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>汉字编码标准与识别(二)&nbsp;<BR>&nbsp;<BR>内码与字体的关系&nbsp;<BR>&nbsp;<BR>虽然没有标准文本,但还是可以大致了解常用标准有那些字。TLC4.0的&nbsp;<BR>字库带有GB2312,GB12345,BIG5,GBK标准的pcf字体。可以用xfd实用&nbsp;<BR>程序查看。在<A HREF="http://www.debian.org/chinese下有一个16点阵的Unicode">http://www.debian.org/chinese下有一个16点阵的Unicode</A>&nbsp;<BR>的pcf字体。如果安装了FreeType,可以使用xmbdfed软件查看TTF字体。&nbsp;<BR>如果用MS&nbsp;WORD,可能会更简单些。&nbsp;<BR>在日常使用中,我们实际上熟悉的是字码(内码).在中文WIN9X下,我们输&nbsp;<BR>入一个双八位字节,就得到一个汉字,就会认为这双八位字节就是对应这&nbsp;<BR>样的字形.这是错误的.其实内码对于字库来说,只是查找字形的索引.如&nbsp;<BR>果换另一个编码标准的字体,同一个字符串就会呈现不同的字形,也就&nbsp;<BR>是乱码。我见过GB2312,BIG5和ISO10646/GB13000的TTF字库.对于操作系&nbsp;<BR>统和应用程序来说,最喜欢的自然是ISO10646/GB13000的TTF字库了.因为&nbsp;<BR>这时只需提供一套代码和一套字库,修改外部配置文件,就可以用在不同的&nbsp;<BR>语种环境.这就是国际化和本地化.其中有个技巧就是ISO10646/GB13000的&nbsp;<BR>TTF字库可以在使用时可以通过重映射变成其它标准的字库.这时需要的是&nbsp;<BR>GBK-&gt;Unicode,Big5-&gt;Unicode这些转换表.一个系统要升级支持Unicode3.0,&nbsp;<BR>也难也不难.简单的地方是只需修改转换表就行了(如\windows\nls*.*).&nbsp;<BR>难的是要升级字库.开发字库是很困难的,可以到方正字库网站看看开发字&nbsp;<BR>库的步骤.WIN9X使用的是北京中易公司的TTF字库,MS是不可能开发一套中&nbsp;<BR>文字库的.我所见过的ISO10646/GB13000的TTF字库,最新的是99年版,Unicode2.1,&nbsp;<BR>方正字库.要想见到Unicode3.0的所有字形,也只有等这些专业字库开发商&nbsp;<BR>做出来才行.如果现在就想看,只有问张轴材了.因为每通过一次新标准,中&nbsp;<BR>国方面就要提供所有汉字的48x48高精密字形.使用TTF字体始终是诱人的话&nbsp;<BR>题。但现在了解不多,只能简单谈谈从TTF字体生成bdf/pcf字体的问题。&nbsp;<BR>因为现在中文pcf字体很少,只有宋体,仿宋,黑体,楷体四种。要想有更&nbsp;<BR>多的字体,有个取巧的方法就是使用freetype库。用ttftobdf程序生成bdf&nbsp;<BR>字体,再用bdftopcf程序生成pcf字体。但这种方法生成的字体缩放后比较&nbsp;<BR>难看,而且不宜控制。这可能是ttf-&gt;bdf的转换过程丢失了信息,高宽比&nbsp;<BR>也和标准的不一样。机器生成的东西就是机械,是不能和手绘的字体相比&nbsp;<BR>的。同时,因为TTF技术已成熟,所以也没有必要继续开发更多的pcf字体。&nbsp;<BR>X&nbsp;window将接受和大量使用TTF字体。而pcf字体今后主要用在标准字型&nbsp;<BR>(如宋体),小点阵,网上快速下载传输方面。只有实际在X&nbsp;Window下用&nbsp;<BR>过Unicode和TTF的字体,才会体会到使用Unicode和TTF,既是一种能力,&nbsp;<BR>也是一种负担。因为不论是什么格式的字体文件,最后在使用时都转化为&nbsp;<BR>内存里固定点阵字体。如果是16x16点阵,一个汉字就用32字节。Unicode3.0&nbsp;<BR>有27786个汉字,至少需要868kb的内存。如果要中文英文美观一致,还得装&nbsp;<BR>载大量的中文字体,所需内存可想而知。如果再使用TTF,还需要另一块内&nbsp;<BR>存来运算和存储。因此,就算X&nbsp;Window提供了字体cache和deferglyphs,&nbsp;<BR>还是于事无补。而我们常用的汉字其实很少。根据统计,常用汉字的频率,&nbsp;<BR>前165个汉字频率和&gt;50%,前1000个汉字频率和&gt;95%;按小学教学经验,识&nbsp;<BR>字900个左右,基本可以读书,看报,写作文;按小学教学大纲,小学毕业&nbsp;<BR>识字2500字;GB2312的一级字库的频率和已&gt;99%。我想我自己识字大约为&nbsp;<BR>4000~5000,对比Unicode的汉字,好象一个文盲:-)。因此是用GB2312,还&nbsp;<BR>是用GB13000,真是一个两难决择,我们也要为我们的选择付出代价。&nbsp;<BR>最后通过内码与字体的关系,讨论UTF8的作用。&nbsp;<BR>UTF8是现有ASCII系统转向Unicode系统的一个过渡解决方案。UTF8是保证&nbsp;<BR>ASCII兼容性,再向大字符集方向扩展。这是Unicode推荐的方案。但是因&nbsp;<BR>为解决问题的角度不同,对现有的中文系统不是好的解决方案。&nbsp;<BR>CJK字符编码标准目前都为一字/两字节。中文在UCS2中的编码范围是&nbsp;<BR>U+4E00~U+9FFFF。按照UTF8的编码规则,为一字/三字节,增加1/3的空间。&nbsp;<BR>同时和现有的CJK系统不兼容。CJK系统要使用UTF8,先转换为UCS2,再转换&nbsp;<BR>为UTF8。后一步简直是多此一举。因为从字库的角度看,字的编码只是字形&nbsp;<BR>在字库中的索引。UTF8是变长码,不能直接做索引,需要转换为UCS2才能使&nbsp;<BR>用字库。&nbsp;<BR>随着GUI的发展,字库逐渐转向TTF。TTF字库的编码标准,有GB2312/GB2312&nbsp;<BR>的EUC标准;BIG5标准;ISO10646标准。没有见过UTF8的TTF,也不知道CJK&nbsp;<BR>这些国家有哪些系统使用了UTF8编码。&nbsp;<BR>目前Unicodde有一个特点就是内核代码(CoreCode)。用户表面上可以继续使&nbsp;<BR>用原有的编码标准,系统内部使用UCS2进行运算和操作。系统使用用户可改&nbsp;<BR>变的标志或模块,以识别用户需要的编码标准,然后进行转换。这样,系统&nbsp;<BR>只需提供一套ISO10646的TTF,不修改内部代码,就可以为多个用户同时提供&nbsp;<BR>中文,日文,韩文的支持。Windows95及后面的中文版就是采用这个方案。现&nbsp;<BR>有的X&nbsp;window的TTF服务器,X-TT和xfsft也可以使用这个方案。&nbsp;<BR>前者在TurboLinux中文版里得到了实现,后者我试验过,效果还不错。还有&nbsp;<BR>一个有趣的现象,就是红旗Linux1.1版所带的那个12点阵的pcf字体&nbsp;<BR>/usr/X11R6/lib/X11/fonts/misc/gb12st.pcf.gz。这已不是严格意义上的&nbsp;<BR>GB2312编码的字库了。用xfd实用程序查看,好象是从Unicode编码的TTF字体&nbsp;<BR>转换来的,有些GBK的字,可惜太少。如果他们能出些GBK编码标准的pcf字体&nbsp;<BR>就好了。&nbsp;<BR>CJK系统转向UCS2与ASCII系统转向UTF8,两者的代码修改量是相当的。只是前&nbsp;<BR>者多了转换表,需要内存多些。不过ASCII系统使用UCS2,需要增加50%的空间。&nbsp;<BR>目前计算机里大多数还是ASCII的信息,看来这也是一个问题。&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;162.105.11.130]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -