被迫清心寡欲地使用中文字体

LiYanrui posted @ Oct 19, 2008 05:42:37 PM in Dream of TeX with tags ConTeXt MkIV , 5716 阅读

最近,ConTeXt MkIV 的混合字体机制出现了一个以前出现过的问题,即:在不同的 typescript 环境中(比如 Serif 和 Mono),如果向同一款中文字体的相同编码区域注入两种不同的西文字体,那么只有首次注入的西文字体才是有效的。That is to say, 只能是一款中文字体与一款英文字体进行混合。

以前,SDE 向 Hans 提出过这种处理方式的缺点:中文字体的种类太少了,并非像西文字体那样都是成套的。比方说,西文一套衬线 (Serif) 字体,就囊括了 normal、bold、italic、bolditalic、slanted、boldslanted 这些字体。如果我们将宋体作为衬线字体,那么就必须找到粗宋体、italic 宋体、bolditalic 宋体、slanted 宋体、boldslanted 宋体。这是不可能的,因为即使能找到对应的这些宋体,也是不同公司生产的,风格上很难一致起来。

 

│费┆在┆体┆+┆计┆就┆那┆标┆能┆如│
│说┆现┆来┆免┆算┆太┆么┆准┆组┆果│
│普┆实┆写┆费┆机┆困┆我┆的┆织┆我│
│通┆中┆作┆使┆中┆窘┆们┆中┆人┆国│
│话┆不┆,┆用┆如┆了┆大┆文┆手┆的│
│一┆能┆就┆简┆果┆。┆陆┆简┆开┆Z│
│样┆自┆好┆体┆不┆因┆人┆体┆发┆F│
│。┆由┆像┆中┆能┆为┆的┆字┆出┆部│
│ ┆+┆我┆文┆自┆,┆生┆体┆一┆门│
│ ┆免┆们┆字┆由┆在┆活┆,┆套┆不│

昨天,在 CTeX bbs 上,有人又问起有没有“中文没有版权问题的解决方案”,而我也很关注这个问题,所有就参与了一些讨论。这样的讨论是永无止境的,因为我们没有一套自由/开源的标准字体。文泉驿字体项目的动机的确很好,但是在使用许可方面又暧昧不明。这致使很多人认为:“使用 GPL 字体,那么你所写的文档也必须 GPL。”

前几天,我将 SDE 以前发在 ConTeXt 邮件列表上的那封邮件找到了。我拙于英文表达,于是在只是对那封邮件作了一个简单的回复,想提醒 Hans 一下这个问题又重现了。Hans 未睬我。现在,我已羞于再提这个话题,因为这个问题,本质上不是 ConTeXt 的问题(一款字体的同一编码区域只能混注入一种其它的字体,这个是很合理的),而是我们中国人自己的问题。Hans 他们似乎不愿意为了中文的一些特殊情况而考虑改动 ConTeXt 的实现方案。

我忍了。我开始清心寡欲地使用中文字体。我不再使用 Adobe 的“免费”字体。我不再使用任何的“粗体”、“斜体”、“粗斜体”。我不再使用任何所谓的“Sans”字体。今后,我只在文档中使用文鼎的宋体作为标题和正文的主字体,并使用文鼎的楷体作为程序代码中出现的中文字体。文鼎字体的一些标点不符合简体中文规范的地方,我也用 fontforge 作了调整,凑合能用。我的 Typescript 文件是这样写的:

 

% engine=luatex
\spaceskip .25em plus .25em \relax

\definefontfeature[zh][mode=node,script=hang,lang=zhs]

\starttypescript [serif] [zhfont]
    \definefontsynonym
        [ZhSerif][name:AR PL UMing CN][features=zh]
    \definefontfallback
        [WesternSerif][name:TeXGyrePagella-Regular][0x0000-0x0400][force=yes]
   \definefontsynonym
        [Serif][ZhSerif][fallbacks=WesternSerif]
\stoptypescript

\starttypescript [mono][zhfont]
    \definefontsynonym
        [ZhMono][name:AR PL UKai CN][features=zh]
    \definefontfallback
        [WesternMono][name:TeXGyreCursor-Regular][0x0000-0x0400][force=yes]
    \definefontsynonym
        [Mono][ZhMono][fallbacks=WesternMono]
\stoptypescript

\starttypescript[myfont]
    \definetypeface[myfont][rm][serif][zhfont]
    \definetypeface[myfont][tt][mono][zhfont]
\stoptypescript

PS1: 我知道抱怨是没有实际意义的。发完牢骚,在心里感觉一丝快意之余,我决定参与文泉驿项目,去造字。

PS2: CTeX 论坛上有人说文鼎的字体比较难看,或许是我审美水平太差,实在看不出丑在哪里。下面贴图,标榜一下难看的文鼎字体。

 

Yue Wang 说:
2008年10月20日 03:08

>PS1: 我知道抱怨是没有实际意义的。发完牢骚,在心里感觉一丝快意之余,我决定参与文泉驿项目,去造字。

wqy从诞生之日,注定就是个失败的项目。它不但没有使得版权问题更加明朗,而且还兴师动众地做了一套糟糕的字体。事实上, Adobe字体,Sim字体都允许在pdf中使用。

>PS2: CTeX 论坛上有人说文鼎的字体比较难看,或许是我审美水平太差,实在看不出丑在哪里。下面贴图,标榜一下难看的文鼎字体。

这套字体其实不错,至少我看上去很顺眼。对于简体中文用户来说可能会有一些字形上的问题,包括一些汉字的写法,还有标点位置等。

>现在,我已羞于再提这个话题,因为这个问题,本质上不是 ConTeXt 的问题(一款字体的同一编码区域只能混注入一种其它的字体,这个是很合理的),而是我们中国人自己的问题。

首先,这个确实是个ConTeXt的问题,估计是没有deep copy一个table导致的,我不确定,但是一定是一个bug。 同一款字体同一个编码注入不同的字体,确实是不合理的,但是我们这里讨论的字体是字体名,而并非物理字体。不同的字体名都能指向相同的字体,就别说这一类字体切换了。我定义一个字体名字foo,应该可以让我使用任何的几种混合字体及该字体对应的属性(feature),这个是对排版软件最为基础的要求,包括InDesign,LaTeX甚至Word等软件中都能够做到这一点。。所以我建议重申这个问题(和Hans聊天需要反复重申问题的重要性)。

其次,这个不是中国人自己的问题,我在和Hans交流的过程中,曾经写过一份邮件,讨论为什么我们中文也需要建立和英文相同的字体机制,我在文中讲到,如果纯中文排版,那其实按照中文的命名框架(宋,黑,楷)来说,应该是最为正确的,但是目前很多情况下我们遇到的问题是多国语言排版,这就需要有一个更为包容性的字体机制,而英文机制可以看成是中文的一个超集(虽然这个是不准确的,因为中文没有serif,mono之类的概念,但是我们可以把每个英文字体对应一个中文字体)。所以为了多国语言排版的需要,我们采用一个和英文相同的机制,至少保证英文部分能够有所对应。当然,应该指出,TeX的英文字体机制也并非包容性的,很多字体并不能简单地用 serif,bold,italic, bolditalic,smallcaps来概括(应该说很少有英文字体遵循TeX的那套命名体系)。

Avatar_small
Li Yanrui 说:
2008年10月20日 03:57

好吧。我抽空再组织一封邮件 post 过去。到时候,你得助阵 :D

shuge.lee 说:
2009年5月01日 07:28

字体发虚一直很不爽

于是,只用wqy-*+Android

Avatar_small
Martin Lee 说:
2010年4月30日 20:57

请问能否把修改过的文鼎字体发给我?
cheeseli@hotmail.com
或者放到网上某地方可以让我下载?
谢谢!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter