私用区(PUA)里的字为什么靠不住
目录
适合谁看:手里有「自定义字」「补字」文件或老系统数据,发现换个电脑、换个字体字就变了或没了的人。
什么是私用区
Unicode 留出了一些码位,不分配给任何字符,供个人或机构自己约定使用,叫「私用区」:
| 范围 | 位置数 |
|---|---|
| U+E000–U+F8FF | 6,400(基本平面) |
| U+F0000–U+FFFFD | 65,534(第 15 平面) |
| U+100000–U+10FFFD | 65,534(第 16 平面) |
过去,一些字还没有进入标准,各单位就把它们放进私用区,再配一款自己的字体来显示。
问题在哪
- 没有统一含义:同一个私用区码位,在甲单位的字体里是一个字,在乙单位的字体里是另一个字,在普通字体里什么都没有;
- 离开原系统就失效:发邮件、导出 PDF、迁移数据库、换手机,只要对方没有那款专用字体,就显示方框或别的字;
- 搜索、排序、转换都不认:搜索引擎、输入法、简繁转换都不知道这个码位是什么字;
- 标准已经补上:很多当年只能放进私用区的字,后来进入了 Unicode 的正式码位。据 Unicode 汉字专家 Ken Lunde 的介绍,GB 18030-2022 也取消了旧版标准中对私用区映射的要求。
遇到私用区的字怎么办
- 先查有没有正式码位:在 Unihan 数据库中按部首、笔画或字形查找,或看本单位是否有对照表;
- 有正式码位的,迁移数据:把私用区码位批量替换成正式码位,并保留对照表;
- 确实没有的:在系统内部继续用私用区过渡,但要建立登记表,同时考虑向标准化机构提交新字申请;对外交换数据时附上说明,或用汉字描述序列标注,见《异体字、变体选择符和汉字描述序列》。
设计字体时的注意
字体设计者有时会在私用区放图标、标志或备用字形。这在字体内部使用没有问题,但不要指望用户在正文里输入这些码位;需要按特定写法显示的字,优先用标准的变体机制(OpenType 功能或变体选择符)。