我如何为「霞鹜」系列字体添加 GB 18030-2022 字符集支持 - 少数派
- description: 好久没有在少数派里发文章了。上次发文章的时候本人还在上大学,还在玩手机字体DIY;现在本人已经大学毕业四年,成了一名社畜,而业余爱好由手机字体转向了开源字体(尽管这两个爱好跟本人的专业和工作毫不相干) ...
- source: url
- author: 落霞孤鹜lxgw
好久没有在少数派里发文章了。上次发文章的时候本人还在上大学,还在玩手机字体 DIY;现在本人已经大学毕业四年,成了一名社畜,而业余爱好由手机字体转向了开源字体(尽管这两个爱好跟本人的专业和工作毫不相干)。
目前经过多年的积累,本人的一些业余开源二创字体项目做到了大字符集,同时想到了 GB 18030-2022 这一强制标准已经实行了几年,而一些字体用户也有大字库需求,于是写了这篇文章,介绍本人一些主要开源字体项目的同时,也算冒个泡。如有表述不严谨的地方,还请不吝赐正。
GB 18030-2022 何为?¶
标准概述¶
《GB 18030-2022 信息技术 中文标准字符集》是以汉字为主,包含 10 种少数民族文字的超大型中文编码字符集,是强制性国家标准。这个超大字符集向下兼容 GBK 和 GB/T 2312,最初发布时收录 87887 个汉字 1
一图读懂|GB 18030-2022《信息技术 中文编码字符集》.国家市场监督管理总局.2022-07-08
(收录到扩展 F 区 2 本文所提及的“︁基本区”︁“︁扩展 I 区”︁等均为 Unicode 所定义的针对汉字(CJK 表意文字)的区块,详情可在 unicode.org 了解。
GB 18030-2022 分为 3 个实现级别:
- 实现级别 1: 与 GB 18030-2005 的强制部分衔接(包含除最后 16 字外的基本区以及除最后 10 字外的扩展 A 区,共 2.7 万余字);
- 实现级别 2: 在上一实现级别基础上增补《通用规范汉字表》汉字(扩展 B~E 区 196 字);
- 实现级别 3: 字符集范围内的全部汉字和康熙部首。 3
GB 18030-2022 信息技术 中文编码字符集.国家标准全文公开系统.2022-07-19
在 GB 18030 标准于 2000 年首次发布之前,我国曾于 1980 年颁布了 GB 2312-80(现已转为推荐性标准),共收录 6763 个简体中文汉字和偏旁部首;后来又于 1995 年发布了《汉字内码扩展规范》(技监标函〔1995〕229 号,简称 GBK),包含了当时 ISO 10646.1 收录的 20902 个汉字,并补充了一些汉字和偏旁部首。虽然在当时 GBK 相对于 GB/T 2312 而言已经算是大字库,但在现在看来,GBK 所收录的两万字只能说是「︁基本够用」︁,还有一些较为生僻的字没有支持。
不支持 GB 18030 字符集,会带来哪些使用体验上的影响?¶
我们知道,当一个字体缺少某个字时,这个字要么显示成「︁豆腐块」︁(形似「︁□」︁或「︁〿」︁)或者其他的缺字标记(.notdef),影响正常阅读;要么显示成其他字体,会导致这个字显得突兀,影响排版效果。
一般来说,字体支持的字符集越大,缺字情况相应就越少,比如:如果一个字体只支持 GB/T 2312-1980 字符集(如市面上大部分的简体字库),则会有繁体字、异体字以及「︁啰」︁「︁赟」︁等常用、次常用规范字显示异常;如果支持到 GBK,则会有「︁㸆」︁「︁䗴」︁「︁𥻗」︁「︁𬌗」︁等扩展区的字显示异常(这种缺字现象因文段内容而异)。
相应地,如果字体支持到 GB 18030 字符集,则会大大减少这种缺字现象。《思源黑体》《苹方》《微软雅黑》等系统默认界面字体也都支持到 GB 18030-2022 实现级别 2,而最新版本 Windows 内置的 SimSun-ExtB 和 SimSun-ExtG 则新增了实现级别 3 汉字的支持,一些新版本的手机系统也内置了实现级别 3 的字体。
不同字符集字体的比较
此外,GBK 补充了当时并未进入国际编码的汉字和偏旁,这些新增的字映射在 Unicode 的私用区。而后来随着 Unicode 3.0(1999)、Unicode 3.1(2001)等后续版本的发布,这些字符均已进入 Unicode,造成了这些字符所谓的「︁一字双码」︁现象(如「︁䶮」︁既有 U+4DAE 的正式码位,又有 U+E863 的临时码位)。而大部分 GBK 字符集的字体对于这些新增的字一般只有私用区临时码位,没有正式码位支持。GB 18030-2000 及后续修订版本将映射于临时码位的字符调整到正式码位,或者删除临时码位的字形,一定程度上解决了「︁一字双码」︁的历史遗留问题。
GB 18030-2022 所做的字符和代码调整,一定程度上解决“︁一字双码”︁历史遗留。图源:openstd.samr.gov.cn
不同字符集字体中 GBK 补充汉字的码位差别
为什么很多用户反馈 / 需要这部分字符集支持?¶
自从分享自己修改的开源字体后,时常会收到一些用户的反馈,希望本人开源字体支持 GB 18030,这些用户大多是将字体用于手机阅读或系统界面字体,因此他们希望本人的开源字体能够像 Android 的原生中文 UI 字体《思源黑体》(谷歌发行的版本叫 Noto Sans CJK )那样「︁不缺字」︁,尽管 GB 18030 里面有很多汉字在日常生活中几乎不会用到;此外也有一些用户有办公、书籍排版或其他大字库需求,希望字体支持到 GB 18030-2022。
为回应这些用户的反馈或需求,经过数年积淀,本人的「︁霞鹜」︁字体系列提供了一些支持 GB 18030-2022 字符集的字体。接下来,本人将列出并介绍这些字体,供大家了解和选用。
「霞鹜系列」有哪些支持 GB 18030-2022 字符集的字体?¶
本人的「︁霞鹜」︁系列开源字体中,已有下列 4 款字体在收字范围方面达到了实现级别 2,包括 3 款正文字体和 1 款手写风格字体:
- 霞鹜文楷 GB / LXGW WenKai GB (原版 《霞鹜文楷》 完整版也达到了这一级别)
- 霞鹜新晰黑+ / LXGW Neo XiHei Plus
- 霞鹜新致宋+ / LXGW Neo ZhiSong Plus
- 小赖字体 / Xiaolai
由于时间精力有限,这些字体中有些是采用风格相近且授权兼容的其他字体增补缺字(如《霞鹜新晰黑+》),有些是采用 AI 生成字形补字,增补的字形较为粗糙(如《霞鹜文楷 GB》)。点击上述链接可进入各个字体的 GitHub 项目页面。以下为这些字体的详细介绍。
霞鹜文楷(原版和 GB 版)¶
《霞鹜文楷》是一款 CJK 开源字体家族,基于日本厂商 Fontworks(今 Monotype KK)所开源发布的 Klee One (クレー One)衍生,兼有楷体和仿宋的特征,可姑且算作正文字体。《霞鹜文楷》也是「︁霞鹜」︁系列最受欢迎的字体,甚至在央视的节目和广告中也能看到这款字体的身影。
CCTV-1《简牍探中华》以及某时段湖南文旅广告使用了《霞鹜文楷》字体
《霞鹜文楷》共有 4 种字形版本(原版、GB、TC、KR)和 2 种字库版本(完整版和轻便版,TC 和 KR 不分)。其中, 《霞鹜文楷(原版)》 在修改《通用规范汉字表》范围内汉字的同时,保留了传统印刷体「︁断笔」︁「︁直点」︁等特征;而 《霞鹜文楷 GB》 则尽可能严格按照中国大陆的字形标准(G 源字形)对字形、笔形作进一步修改,与原版文楷相比更符合楷体书写习惯。TC 为旧字形版,KR 为韩文版,这里不作赘述。
《霞鹜文楷(原版)》与《霞鹜文楷 GB》的笔形差异
《霞鹜文楷(原版)》和《霞鹜文楷 GB》的 完整版 支持 GB 18030-2022 实现级别 2,其中基本区除 Klee One 原有字形外均为手拼手改,扩展 A 区则有四千多字采用 zi2zi 深度学习技术从《思源宋体》生成,字形较为粗糙。
《霞鹜文楷》家族采用 SIL OFL 1.1 授权协议 。
霞鹜文楷 GB / LXGW WenKai GB
霞鹜新晰黑+、霞鹜新致宋+¶
《霞鹜新晰黑》 和 《霞鹜新致宋》 是「︁霞鹜」︁系列的两款正文字体,分别基于日本信息处理推进机构(IPA)所发布的 《IPAex ゴシック》和《IPAmj 明朝》 衍生而来(IPA 黑体和明朝分别基于 TypeBank 黑体和明朝衍生)。
这两款字体均包含支持 GBK 字符集的 普通版 ,以及支持 GB 18030-2022 实现级别 2 的 Plus 版 (中文字体名称后带全角加号)。其中, 《霞鹜新致宋+》 完全利用《IPAmj 明朝》及其已有衍生字体,修改字形后增补扩展 A 区汉字,增补部分与普通版《霞鹜新致宋》风格高度契合;而 《霞鹜新晰黑+》 则主要采用授权兼容的 Droid Sans Fallback(Apache License 2.0 授权)减细后增补汉字,增补部分与普通版《霞鹜新晰黑》原有的字形在风格上有一定差异。
《霞鹜新晰黑+》《霞鹜新致宋+》采用 IPA Font License 1.0 授权协议 。
霞鹜新晰黑+ / LXGW Neo XiHei Plus
霞鹜新致宋+ / LXGW Neo ZhiSong Plus
小赖字体¶
《小赖字体》 是一款大字库的手写风格字体,基于濑户望(Seto Nozomi)制作的 《濑户字体(Seto Font)》 衍生。初名《小濑字体(Kose Font)》,因用户多把「︁濑」︁打成「︁赖」︁而改为现名。
《小赖字体》在《濑户字体》的基础上手动增补了简体字,修改了一些常用字的字形,缺字主要采用同源 AI 生成字体《 cjkFonts 全濑体 》补全。抛开字形规范性不谈,《小赖字体》在收字层面支持 GB 18030-2022 实现级别 2。
《小赖字体》采用 SIL OFL 1.1 授权协议。
小赖字体 / Xiaolai
生也有涯,字也无涯¶
介绍了以上符合实现级别 2 的字体,有人会问:「 ︁有没有符合实现级别 3 的字体? 」 ︁ 或者「 ︁这些字体什么时候能够达到实现级别 3? 」 ︁
对于这些问题,本人理解这些用户对上述字体支持更多汉字的需求,但是实现级别 3 所包含的汉字量级实在是过于庞大了。目前支持这一量级的字体屈指可数,其中免费商用的如 《MiSans L3》 《阿里巴巴普惠体 L3》 等,都是字体厂商有足够人手、物力(甚至财力)的支持下花费大量时间才补完的,就不用说那些付费商业字体了;就算是开源的 《遍黑体》 ,2020 年立项,2025 年 3 月才把扩展 B~I 区以及兼容汉字区的所有汉字做完,这也是在有多人协助的情况下才完成的。更何况,实现级别 3 是用于政务服务和公共服务的产品才需要达到的要求,而一般的操作系统软件只需要满足实现级别 2 的要求。
本文所介绍的开源字体中,除了 GB 18030-2022 实现级别 2 范围内的字外,也按需收录了少量实现级别 3 的字,这些字或来源于《新华字典》《现代汉语词典》等辞书,或为人名、地名、方言、科技名词等领域的生僻字里还不算太罕见的字。
新晰黑、新致宋、文楷 GB、小赖字体中少量实现级别 3 的字
至于实现级别 3 的其余汉字,则根本没有计划去增补,如果真要由本人靠单人独力「︁愚公移山」︁式去增补实现级别 3 的所有汉字,来满足某一部分用户需求的话,⸺
姑且从《庄子》里摘出半句作为回应:
「 ︁以有涯随无涯,殆已。 」
「霞鹜系列」其他字体有支持 GB 18030-2022 的计划吗?¶
除了本文介绍的字体,「︁霞鹜」︁系列还有更多没有做到 GB 18030-2022 字符集(如 《霞鹜臻楷 GB》 《悠哉字体》 只做到了 GBK, 《霞鹜漫黑》 甚至只有 1.3 万字,距离支持 GB 18030-2022 实现级别 2 还差得远)。一方面,《霞鹜漫黑》这种风格的字体一般不用于正文,也就没有大字符集的需求;另一方面,GB 18030-2022 实现级别 2 确实有很多日常生活中很少用到的字。就像市面上的多数用于广告、海报等设计用途的简体中文字体只支持 GB/T 2312-1980 字符集,虽然字库小,但是并没有觉得不够用。要把这些收字较少的字体都补到 GB 18030-2022 实现级别 2,同样是累人的工程,就算借助 zi2zi 等深度学习技术去生成字形,也会对显卡等电脑硬件产生损耗,而且生成的字形效果也不尽如人意。因此对于这些没到 GB 18030-2022 字符集的字体,目前没有计划去补全,望理解。
用 zi2zi-pytorch 从《思源宋体 ExtraLight》生成《霞鹜文楷》字形的过程和结果图片,可以看到一些生成的字形效果并不理想
结语¶
感觉这篇文章又写成了一篇流水账,不过也算是介绍了本人所维护的「︁霞鹜」︁系列开源字体中的一些主要字体项目,希望这篇文章能够在开源大字库字体这方面带给用户一些选择。最后感谢这些字体的原始厂商(作者)的无私开源,以及为这些字体协助补字的字体爱好者们。
- 1 一图读懂|GB 18030-2022《信息技术 中文编码字符集》.国家市场监督管理总局.2022-07-08
- 2 本文所提及的“︁基本区”︁“︁扩展 I 区”︁等均为 Unicode 所定义的针对汉字(CJK 表意文字)的区块,详情可在 unicode.org 了解。
- 3 GB 18030-2022 信息技术 中文编码字符集.国家标准全文公开系统.2022-07-19
70
8
GB 18030-2022 何为?
标准概述
不支持 GB 18030 字符集,会带来哪些使用体验上的影响?
为什么很多用户反馈 / 需要这部分字符集支持?
「霞鹜系列」有哪些支持 GB 18030-2022 字符集的字体?
霞鹜文楷(原版和 GB 版)
霞鹜新晰黑+、霞鹜新致宋+
小赖字体
生也有涯,字也无涯
「霞鹜系列」其他字体有支持 GB 18030-2022 的计划吗?
结语
本文责编:@ 克莱德