关于LaTeX字体不够用这件事

关于LaTeX字体不够用这件事TeX 自出现以来 直接支持的字体只能有 256 个 glyph 这个 glyph 可以理解为图像形式的字 而处理汉字 显然 256 是不够的 所以社区的开发者想了两个办法 第一个办法 是拆 就是你字体不是 glyph 多么 那么就拆成 n 个字体 这方法的好处在

大家好,欢迎来到IT知识分享网。

TeX自出现以来,直接支持的字体只能有256个glyph。这个glyph可以理解为图像形式的字。

而处理汉字,显然256是不够的。所以社区的开发者想了两个办法。

第一个办法,是拆,就是你字体不是glyph多么,那么就拆成n个字体。这方法的好处在于,不用改造TeX。但是缺点也很明显,就是需要深刻理解编码这个事,把编码分解成特殊语义的东西(对应到,需要用特殊工具将源文件处理一遍,或者通过catcode来做)。比如(我用json格式举例):

我 -> {"font": 13, "char": 16}

另一种办法,是改造TeX,让它承认有更好的支持。pTeX和Omega另辟蹊径,支持16bit编码,也就能输出65536个glyph。

看似问题解决,但是实际上,也没怎么解决。因为OpenType和TrueType的glyph限制也刚好是65536。这显然是不够的:因为汉字远远要超过这个数。

所以我们会经常看到,一些古籍排版的时候,总是需要动用一组字体。排版这事,有时候特别依赖于它的软件环境,有时候就特别不依赖。

在TeX之中,这种功能最近几年都慢慢加上了,比如luatexja的:

\jfontspec[ AltFont={ {Range="4E00-"67FF, Font=HaranoAjiGothic-Regular, Color=003FFF}, {Range="6800-"9EFF, Color=FF1900}, {Range="3040-"306F, Font=HaranoAjiGothic-Regular, Color=35A16B}, } ]{HaranoAjiMincho-Regular}

比如xeCJK的:

\xeCJKDeclareSubCJKBlock{SPUA}{ "E400 -> "E4DA , "E500 -> "E5E8 , "E600 -> "E6CE } \xeCJKDeclareSubCJKBlock{Ext-B}{ "20000 -> "2A6DF } \setCJKmainfont[SPUA=SunmanPUA,Ext-B=SimSun-ExtB]{SimSun}

有需要的读者可以试一试。

注:OpenType社区其实一直有相关的讨论,即扩展OpenType来增大glyph容量。但是这事非常不好办,一是对于大部分语言的区块来说,64k足够大,但是对于汉字来说,64k真不够大。而混合东亚语言的字体,64k就更捉襟见肘。扩展是能扩展,但是这东西的向下兼容可能就被破坏掉了。再者,操作系统内通常建一个unicode block对字体的映射表,所以系统级别的显示往往不成问题。具体的问题都是应用软件的问题。这事我向来不掺和,反正问题可大可小……而且排版这事总是人的事,有时候劳心费力是少不了的。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172862.html

(0)
上一篇 2025-03-08 08:00
下一篇 2025-03-08 08:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信