在2014年9月11日的中文版式标准需求技术研讨会上,几位数字出版的工程师提出一个在实践发现中的CSS Font Module可能存在的中文字体及呈现问题,我们把问题提交到国际化工作组,下面对近期工作的总结, 期待各位进一步的意见和建议!
问题描述:
Q1: 中文的7-8种主要字体(宋,黑,仿宋,楷体,幼圆,雅黑等等),不能很好地匹配(对应到)CSS3字体标准所定义的五类通用字体generic font families里面(serif,sans-serif,cursive,fantasy,monospace)。
Q2: 中文字库很大,用 WebFont 等方式动态下载一个字体太耗费网络资源。大部分开发者希望能直接使用系统自带的字体,在没法获取这五类通用字体的情况下,自动从系统已有的字体里面寻找最接近的字体。
同类的问题也出现在其他的东亚字体及部分区域使用的字体中。如日文和韩文汉字显示中也有类似于中文黑体的字体。对这类需求的解决也同样可以覆盖他们的需求。
可能需要同样考虑这些通用字体类(generic font families)对其他语言文字的适配和兼容问题。如在阿拉伯语的naskh, nastaliq, ruq'ah, kufic, diwani, sini等字体,这些字体有很多不同的字符和使用方法,可能会影响到现有的行列对齐(justification)等CSS规则。这些字体同样也很难直接对应到预定义的这五类Generic Font Families。
可能的解决方案:
1. 扩展现有的五类通用字体来对应定义中文字体,如尽可能重用对应到现有的通用字体名字里面;
2. 定义一系列全新的通用字体,涵括所需要的中文字体;
3. 定义一个中文字体的注册器,来定义字体如何匹配,让开发者来定义中文字体如何对应到五类通用字体;
4. 自动分类用户系统已有的字体,通过分析和对比字体的相似度,把他们匹配到五类通用字体;
5. 优先匹配用户友好度高的字体,如对serif,优先匹配到用户更习惯的宋体;
期待听到大家关于以下几个具体问题的看法:
1. 在数字阅读的内容制作中,需求比较大的字体有哪些?
2. 对上面的问题描述有什么补充吗?或者有别的这方面的类似问题吗?
3. 觉得上面的几种解决方案哪个比较合适?
HTML中文兴趣小组的讨论:
HTML中文兴趣小组10月13日对此问题进行了讨论:
1. CSS Fonts字体中提到,将楷体和宋体都归入 serif 这个通用字体类中。我们认为,楷体更加适合归入 cursive 的通用字体类中,仿宋也同样应当归入 cursive。如果这个修改被接纳,将解决中文字体的主要问题。
2. 是否可以通过自定义font family的方式一劳永逸解决“定义新的中文font family"的问题呢?我们认为这一点上中文不同于日文,中文字体种类多,不同设备上可能还有不同的字体,将每一种字体映射到已定义的通用字体类(generic font family)中作用并不大。但对浏览器来说,应当需要一种机制来确保,在寻找楷体的替换时,应该从 cursive字体类中寻找。我们将定义一个相关的CSS Font的测试用例来加以说明。
3. 我们认为,中文webfont size应该不存在问题。通常中文使用特殊的字体主要用在标题显示,或一些小段的特殊文字(如引用等),font size在这些场合不会产生影响。
4. Bobby提到关于中文字体的斜体问题。在英文中,斜体通常表达引用内容。通常中文表达中,不会通过字体倾斜来表达同样的意思,而且有些字体在倾斜的时候会有显示问题。比较建议通过定义其他字体(如cursive字体类的其他字体)来承担英文斜体所承担的任务(表达引用等)。这一特征可以通过@font face来做定义。
感谢以下专家们的意见:
李松峰:
关于中文字体与CSS3通用字体匹配的问题,我认为这个标准给出的对应关系还是合适的:
- 黑体对应sans-serif(无衬线)
- 宋体对应serif(衬线)
- 楷体、仿宋对应cursive(手写体)
- 美术字体对应fantasy
- monospace是等宽字体——汉字都是等宽的,所以只适用于西方字体
关于中文字库大的问题,似乎也没有那么严重。一是字体变化比较频繁的往往是标题,而标题字数有限,在WebFont中仅嵌入那些标题用到的字 符,可以大大减小字库文件体积。二是上网速度越来越快,成本也会逐渐降低,如果必要的话,就算为显示正文下载一款几MB的字库,也不是什么大 负担,实在不行也可以考虑只嵌入正文中用到的字符。
数字阅读取决于屏幕分辨率,如果屏幕分辨率足够,辨识度高的宋体、楷体、仿宋和英文衬线字体还是首选;如果屏幕分辨率不够,可以考虑一些等线 体,如细黑、雅黑、准圆等。
Bobby Tung:
目前較急需處理的問題在於Serif的陳述裡把中文楷體也納入,但放在Cursive較為適當。(更详细的意见请见 http://lists.w3.org/Archives/Public/public-html-ig-zh/2014Oct /0000.html)
陈奕钧:
繁簡的主要印刷體一致,都是「黑、宋(=明)、楷、仿宋」;
sans-serif = 黑體,serif = 宋體,cursive = 楷體或仿宋體,fantasy => 沒有定論。
之前興趣小組大家討論过,cursive該不該對應到楷體,因為在西文中,cursive是比較潦草的手寫體。
中文印刷裡,楷體(或仿宋)常用來代替西文的意大利體(斜體,italic)的概念。
排版規範應該不太適合這樣定義,我們只是把概念很類似的東西拿過來用而已。Mac OS X和Windows上的確是「sans-serif = 黑體」「serif = 宋體」,cursive因為還沒有共識,還沒有瀏覽器敢動它。
但是CSS spec應該可以說,中文裡sans-serif就應該對應黑體。
現代瀏覽器通常就是認最後面的generics font families來決定要用什麼字體來顯示無法map到字體的字元。
张磊:
如果我又想用英文衬线字体,也想用宋体时,还是区别开比较灵活。希望能为中文新引入generic font family,比如按宋芳楷黑加4 种名字。
黄海平:
楷体,宋体,兰亭黑,兰亭中黑需求较大。我们目前字体不存在的时候用系统字体。第2,3,4种解决方案都比较合适。
参考文献:
[1] W3C i18n Blog Chinese Font Issue: https://www.w3.org/International/wiki/Chinese_font_families
[2] W3C CSS Font Module Level 3. http://www.w3.org/TR/css3-fonts/#generic-font-families
[3] W3C中文版式标准需求研讨会总结报告. http://www.chinaw3c.org/archives/636/
感谢吴小倩整理并汇总以上专家意见!
评论已关闭