Skip to content

我如何为「霞鹜」系列字体添加 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 了解。

,对标 Unicode 11.0),目前已发布 1 号修改单,汉字部分支持到扩展 I 区。该标准发布后,更多用于人名、地名和其他领域的生僻字被加入进来,得到了官方标准支持。

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 款手写风格字体:

由于时间精力有限,这些字体中有些是采用风格相近且授权兼容的其他字体增补缺字(如《霞鹜新晰黑+》),有些是采用 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 的计划吗?

结语

本文责编:@ 克莱德