这16门语言都有语言代码,写它们的那14套文字一个码位都没有
本文目录
- 一门语言有了代码,为什么它的文字可能还没有?
- 这是两套完全独立的编号体系
- 先把三个容易混的概念分开
- 本文的口径与截止时点
- 文字这一层的清单,一共有多少格?
- 226个代码,168套真正被编码
- 跟语言那一层比,这是一份极短的清单
- 共用带来的一个副作用
- 这个清单是一直在长的
- 为什么2014年那一版一次进了23套
- 有代码却没有码位的,是哪39个?
- 先把不该算的剔掉
- 27套里,10套只服务已经不说的语言
- 剩下14套,写的是今天还在用的语言
- 代码表里为什么会有托尔金造出来的文字?
- 先说那6个占位码
- 再说那6套虚构文字
- 剔除动作本身就是一个判据
- 那14套文字背后,是16门今天还在用的语言
- 逐条核对的结果
- 这份名单是怎么核出来的,以及第一版怎么错的
- 使用规模最大的那几门
- 为什么这批文字集中在几个特定区域
- 卡住的到底是排队,还是没有人在推?
- 开工前的预期是排队很久
- 真正排过队的只有35套,中位数1年
- 那39条先有码位后有代码的说明了什么
- 没进队的意思是没有人提交提案
- 提案里最难的不是列字符
- 有一份公开的管线可以查进度
- 官方那份未支持清单,为什么只列了两套?
- 官方清单上的现代文字只有两套
- 更值得注意的是分栏方式
- 这条对怎么用官方文档是一个提醒
- 一套文字要过几道闸,才算能在网上当字用?
- 四道闸,缺一不可
- 四道闸各自由谁把守
- 第三道和第四道,本站量过
- 怎么快速查一门语言过到了第几道
- 还有一个更快的粗筛
- 没有码位的文字,今天怎么出现在网页上?
- 三种办法,各有各的代价
- 私有区这个办法为什么危险
- 那正确的做法是什么
- 保哥这次的预期错在哪几条?
- 错的第一条:以为是排队
- 错的第二条:以为官方清单是全的
- 错的第三条:以为没码位的都是死文字
- 对了的一条
- 这件事对做小语种SEO的人有什么用?
- 用法一:进一个新市场之前先查第二道闸
- 用法二:把码位当成内容形态的分界线
- 用法三:这套读法可以搬到别的标准上
- 用法四:给这件事一个合理的优先级
- 常见问题解答
- 没有码位的文字,我可以自己申请吗?
- 这14套文字的名单会变吗?
- 我的页面上放了这类文字的图片,替代文本该怎么写?
- 私有区方案真的一点都不能用吗?
- 页面上同时出现两套文字,语言标签该怎么写?
- 怎么知道我的目标市场用户实际用哪套文字?
- 为什么语言代码和书写系统代码是两套体系?
- 权威参考资料
摘要:一门语言拿到语言代码和它的文字拿到码位,是两道分开的闸。把226个书写系统代码跟Unicode16.0的168套已编码文字对了一遍:39个代码至今没有码位,剔掉占位码和虚构文字之后还剩27套真实文字,其中14套是今天仍在使用的语言在用的。这14套背后的16门语言,全部有语言代码。更意外的是等待时长——真正排过队的只有35套,中位数1年,最长5年。卡住的那批不是在排队,是根本没有人提交提案。
先说一个具体的场景。你接了一个尼泊尔市场的项目,用户群里有相当一部分是尼瓦尔人,你想在页面上放一句他们自己文字写的问候语。
查语言代码,有,尼瓦尔语在册,代码规规矩矩。查这门语言用什么文字写,答案是一种叫兰札的字体。再查这套文字在Unicode里的位置——没有。
不是查不到,是没有。这套文字有自己的国际书写系统代码,编号303,代码是四个字母,2021年正式分配。但它至今没有分到任何一块码位,也就是说你在键盘上、在数据库里、在任何一个纯文本字段里,都打不出这套字。
上一篇数了替一门语言申请代码的是谁(616份申请书里过半出自同一个组织)。这一篇要问的是同一件事的另一半:语言那道闸过了,文字这道闸过了吗。
结论可以先摆出来:这两道闸的通过情况并不同步,而且不同步的方向出人意料——文字那道闸的流程其实比语言那道快,卡住的地方不在审批,在没有人去提。
一门语言有了代码,为什么它的文字可能还没有?
这是两套完全独立的编号体系
语言有语言的编号,文字有文字的编号。前者是三个小写字母,后者是四个字母首字母大写。它们由不同的标准维护,走不同的申请流程,各有各的注册机构。
你在页面上写的语言标签里,这两样有时会同时出现。中文的两种写法就是典型:语言部分相同,后面跟的书写系统部分不同。多数人以为那是同一份表里的两列,其实是两份表。
更关键的是:文字有编号,不代表它能被打出来。编号只是标准里给它留了一个名字,码位才是它在计算机里有没有身体。这两件事之间还隔着一道完全独立的流程。
这一层的规矩本站在讲语言标签的时候提过一次(结构化数据里的语言字段该怎么写),但那一篇讲的是怎么写,这一篇要问的是写了之后能不能用。
顺带说清楚一个常见误解:书写系统代码不是给你在页面上随便标着玩的。语言标签的规则里明确写着,只有当这门语言确实用多套文字书写、而且需要区分的时候才该带上它。中文、塞尔维亚语、乌兹别克语属于该带的,德语法语属于不该带的。
先把三个容易混的概念分开
第一个是书写系统代码。它回答的是这套文字在国际标准里叫什么、编号多少。目前一共226个。
第二个是码位。它回答的是这套文字的每一个字符在计算机里对应哪个编号。这一层由另一个组织负责,走的是提案、评审、投票的流程。
第三个是字体。有码位不代表你的设备上有字形,缺字形的表现是屏幕上一串方块。这一层跟前两层又是分开的,本站量过字体子集在首屏上的成本,那是第三层的问题。
这一篇只处理前两层的关系:有编号但没码位的,有多少,都是些什么。
还有一层比字体更靠后,就是输入法。这一层放在后面单独讲,因为它是四道闸里最容易被整个忘掉的一道。
本文的口径与截止时点
书写系统代码表取的是完整的一份,最新一条分配于2025年4月。码位那一侧取的是Unicode16.0这一版,也就是当前的正式版本。
这个口径要说清楚,因为这两份表都在动。今天没有码位的文字,明年可能就有了;下一版发布之后,这一篇里的39这个数字就会变。所以这一篇给的不是一份长期名单,是一张某个时点的快照,真正可复用的是读这张表的方法。
不量字体覆盖,不量输入法,不量这些文字在实际内容里的使用量。前两样是另外两层,最后一样没有可靠的公开数据。
也不做趋势预测。哪一套文字下一版会进去,管线表上写着的比任何推测都准,文中会给查法。
文字这一层的清单,一共有多少格?
226个代码,168套真正被编码
把书写系统代码表拉下来数一遍:一共226个代码。每一条带四样东西——四字母代码、三位数字编号、英文名、法文名,另外还有两列是Unicode那边的属性值和版本号。
带版本号的187个,也就是说这些文字已经进了Unicode,而且能查到是从哪一版开始进的。不带版本号的39个,占17.3%。
另一边,Unicode16.0这一版实际编码的书写系统是168套。这两个数对不上,差19个,原因是代码表里有一批是变体码和组合码——同一套文字的不同写法、两套文字的组合、以及几个纯粹的元代码。
做了一次交叉核对:代码表里带Unicode属性值的172个,跟实际编码的168套比,差的4个全是元代码,而反过来在Unicode里有、代码表里查不到的是0个。两份表零漏,可以放心互推。这一步是必须做的,否则后面所有对差都不可信。
跟语言那一层比,这是一份极短的清单
语言那一层在册7929门。文字这一层只有226个代码、187个有码位。
平均每38门还在使用的语言,共用一套有码位的文字。这个比例说明了一件常被忽略的事:文字是被大量共用的,绝大多数语言并不拥有自己的文字。
拉丁字母一套就覆盖了几千门语言,西里尔字母、阿拉伯字母、天城文各自覆盖上百门。所以文字这一层的空白,影响面反而比语言那一层的空白更大——一套文字缺席,可能同时卡住好几门语言。
反过来也有语言拥有多套文字的情况,印度那边尤其多,本站在印度十一门语言九种文字那一篇里算过这笔账。
共用带来的一个副作用
文字被大量共用,还带来一个做词表时会遇到的具体问题:同一套文字里,不同语言用的字符子集不一样。
拉丁字母是最典型的。基础26个字母之外,越南语要六种声调符号的组合,波兰语要带尾钩的字母,土耳其语要那个不带点的i。这些字符各自属于不同的码位区间,有的在基本区,有的在扩展区。
结果就是:你的系统支持拉丁字母,不等于它支持这门用拉丁字母的语言。支持一套文字和支持一门语言,中间还差一个字符子集的距离。本站在讲大小写折叠的时候写过这类坑最典型的样子。
这个清单是一直在长的
按版本号数一遍每一版新增了多少套文字:最早那一版一次进了36套,那是存量。之后三十年里,2014年那一版一次进了23套,是第二个高峰,其余每版通常是2到7套。
把2010年之后的加起来:187套已编码文字里,有79套是2010年之后才拿到码位的,占42%。
换句话说,文字进Unicode这件事不是一段已经完成的历史,是一项还在进行的日常工作。四成的文字是最近十几年才进去的,这个速度还在继续。
这一条对做技术选型的人有直接含义:你的系统如果还在用十几年前的字符集假设,那批新进来的文字它一个都不认识。
具体会怎么表现?不是报错,是静默的降级:搜索搜不到、排序排不对、截断截在半个字符中间。这类问题的共同特征是不报警,得靠人去发现。本站量界面上哪些文案没被翻译的时候遇到的是同一种失效方式:出错提示和空状态排在队尾,而它们恰恰是用户最需要看懂的那一批。
为什么2014年那一版一次进了23套
翻一下那一版的时间点,2014年前后正是几个大型文字编码项目集中结题的时候。二十多套文字同时被推进同一版,不是因为那年发现了二十多套新文字,是因为几个提案的进度正好撞在了一起。
这条曲线跟上一篇那条语言申请量曲线是同一个形状:它量的不是世界上还剩多少套文字没编码,是那几年有多少人在做提案。产能由人决定,不由需求决定。
这个形状值得做内容排期的人记一下。任何一份由少数人产出的公开数据,它的时间曲线首先是这些人的工作日程,其次才是外部世界的变化。
有代码却没有码位的,是哪39个?
先把不该算的剔掉
39个里有6个是特殊占位码:两个用来划定私有使用区间的起止码,还有四个元代码,分别表示未确定的文字、未编码的文字、继承上文的文字、以及无文字内容。这几个从设计上就不会有码位。
还有6套是虚构或人造的文字:托尔金给中土世界造的三套、某部科幻剧集里外星人用的一套,以及两套二十世纪发明的符号系统。这几套有代码,是因为确实有人在用它们排版和出版,但它们跟语言使用者社群没有关系。
剔掉这12个,剩下27套是真实存在过或正在被使用的文字。这27套才是这一篇要看的名单。
顺带说,剔除这一步不能省。如果照39这个数直接写,会得出一个偏高的结论,而且里面混着两个私有区间码——那两个恰恰是解决没有码位这个问题的临时办法,把它们算进问题本身就闹笑话了。
27套里,10套只服务已经不说的语言
把这27套逐条查它写的是哪门语言,再回到语言码表里看那门语言的状态。
10套对应的语言在册状态是历史语言或已灭绝:女真文、契丹大字、书体钵罗钵文、西德文、埃及世俗体、玛雅圣书体、印度河文字、原始楔形文字、原始埃兰文字,以及一套至今没有确定对应语言的早期字母。
这一批的缺席对做内容的人没有影响。它们的使用者是研究者,需求是在论文和数据库里精确引用,而这类需求通常用图片或者专门的转写方案就能满足。
另有1套不对应任何单一语言:那是给视障者用的一套触觉文字,跟盲文是两个体系,十九世纪发明,今天在英国仍有少量使用。
这一套单独拎出来说一句:它没有码位,但它的实际使用场景是凸起的实体印刷,不是屏幕。一套文字要不要码位,取决于它有没有在数字环境里被使用的需求,不取决于它有没有人用。这条判据能解释这份名单里的不少条目。
剩下14套,写的是今天还在用的语言
这14套是这一篇真正的名单。按代码分配的年份排:
西非两套——克佩勒文和洛马文,2010年分配代码。苏里南一套——阿法卡文,同年。密克罗尼西亚一套——沃莱艾文,同年。
缅甸泰国交界一套——勒克文,2015年。中国三套——纳西东巴文、纳西哥巴文、水书,2017年同一天分配。
尼泊尔一套——兰札文,2021年。印度两套——托隆西基文和奇索伊文,分别在2021年和2023年。越南一套——傣约文,2023年。乍得和苏丹交界一套——贝里亚埃尔菲文,2025年1月,是全表最新的一条。
还有一套年代最早:复活节岛的朗格朗格文,2004年那批存量登记里就有它,二十一年过去仍然没有码位。
这一套的情况特殊:它至今没有被完全释读,学界对它的字符总数、字符边界甚至书写方向都还有分歧。而Unicode提案的第一项要求就是给出完整的字符清单。释读不完,这一条就永远满足不了。
这是这份名单里唯一一类靠时间和资源都解决不了的:不是没人推,是推不动。剩下那些的障碍是人力,这一套的障碍是知识本身还不够。
把这两类分开是有意义的。人力型的空白,只要有一个机构立项就能在两三年内填上;知识型的空白,投再多钱也没用,得等学界先有共识。做规划的时候把这两类混在一起,会对时间做出完全错误的估计。
代码表里为什么会有托尔金造出来的文字?
先说那6个占位码
39个没有码位的代码里,有6个从设计上就不该有码位,它们是留给系统用的。
两个是私有使用区间的起止标记,中间那一段编号谁都可以拿去自己用,标准不管里面装什么。四个是元代码:一个表示这段文字的书写系统未确定,一个表示未编码,一个表示继承上文,还有一个表示这份文档里根本没有文字内容。
这四个元代码在实际系统里用得比想象中多。你的内容管理系统给一条只有数字和标点的记录打标签时,用的往往就是那个表示无文字内容的代码。
把它们算进没有码位的文字里是一个典型的统计错误。一份代码表里通常混着两类东西:真实对象的编号,和给系统留的槽位。做统计之前必须先把后者剔掉。这条在语言码表那边同样成立,上一篇提过在册表里也有几个特殊代码。
再说那6套虚构文字
剩下的12个里有6套是被人凭空造出来的:托尔金为中土世界设计的三套字母、一部科幻剧集里外星种族用的一套、一套二十世纪中期发明的图形符号系统,还有一套十九世纪为语音教学设计的记音符号。
它们有代码,理由很实在:确实有人用它们排版、出版、做研究。给它们一个编号,图书馆的编目系统才能标注这本书是用什么文字印的。
有意思的是这几套里有一套后来拿到了码位,另外几套至今没有。拿到码位的那套背后有一个组织在做提案,其余几套没有。又是同一条规律:跟这套文字有多少人用关系不大,跟有没有人替它办手续关系很大。
这几套的存在还提醒了一件事:编号本身不承诺使用者社群的存在。你在任何一份标准清单里看到一个条目,不能反推出背后有多少人。这条对做市场评估的人是硬提醒,因为清单是最容易被当成需求证据的东西。
剔除动作本身就是一个判据
39减掉6个占位码、再减掉6套虚构文字,得到27套真实文字。这一步的减法比那个39更重要。
如果不做这一步,直接拿39去写,会得出两个错误:一是高估了问题的规模,二是把私有使用区间算进了问题本身——而私有区恰恰是这个问题的临时解法之一。把解法算成问题,是统计里最尴尬的一类错误。
做数据的人可以把这一步固化成习惯:任何一份清单在做加减之前,先问里面有几类不同性质的条目。清单越权威,混着的类别往往越多,因为权威清单要照顾的用途也多。
本站在数语言那一层的时候做过同样的动作,在册的七千多门里要先分出在用、灭绝、历史、人造几类,不同的问题该用不同的分母(语言代码注销那一篇里那张分类表就是干这个用的)。
那14套文字背后,是16门今天还在用的语言
逐条核对的结果
把这14套文字对应的语言逐条查回语言码表,得到16门标着在用的语言:三门克佩勒语、两门洛马语、东马龙克里奥尔语、沃莱艾语、纳西语、水语、尼瓦尔语、霍语、扎加瓦语、傣端语、两门克伦语、拉帕努伊语。
这16门语言全部有语言代码,而且全部标着在用。语言那道闸它们都过了,卡住的是文字那道闸。
这个对照是这一篇的核心。它把一个看起来很技术的问题变成了一个很具体的问题:这些语言的使用者可以在任何一份国际清单里被登记、被统计、被写进语言选择器,但他们没法用自己的文字在网上打一个字。
换个说法更直白:语言那道闸管的是这门话算不算数,文字这道闸管的是这套字能不能敲出来。前者是身份问题,后者是能力问题,而做内容的人真正会撞上的是后者。
要说明的是,这些语言绝大多数还有另一套文字可以用。纳西语可以用汉字或拼音写,尼瓦尔语可以用天城文写,克伦语有拉丁化方案。所以这不是不能上网的问题,是那套文字上不了网的问题。
这份名单是怎么核出来的,以及第一版怎么错的
第一版核对用的是名字匹配:拿文字的英文名去语言码表里搜同名的语言。跑完一看,托隆西基文匹配到153门语言,傣约文匹配到42门,那套触觉文字匹配到22门。
原因很好笑。托隆西基文写的是霍语,英文名是两个字母,于是所有名字里带这两个字母的语言全被捞了进来。傣约文那个词是傣,东南亚一大片语言名里都有它。
凡是靠名字匹配建立的对应关系,都必须逐条回原表核对。本工程在别处已经吃过这个亏:做外链清单的时候有一轮87条链接里11条对不上,也是靠逐条回核才发现的。这一次的代价小,因为异常值大到一眼能看出来;真正危险的是那种匹配到两三门、看起来很合理的假阳性。
最终这张表是人工逐条指定语言代码之后核出来的,14套文字对16门语言,每一条都能追到具体的三字母代码,代码本身再拿ISO 639-3的完整码表回查一遍在册状态。
使用规模最大的那几门
这16门里有几门的使用者规模并不小。霍语在印度东部有上百万使用者,是宪法附表之外使用人数最多的语言之一。克伦语在缅甸和泰国边境有数百万人。尼瓦尔语在加德满都谷地有几十万。
这里必须谨慎:使用人数这个数字的来源问题,上一篇已经讲过——它多半来自某个申请人在某一年填的一个约数,不同语言之间不可比。所以这里只说量级,不给精确值。
但即使按最保守的量级看,这14套文字背后也是几百万人。这个规模足以说明,文字没有码位不是一个只影响几个研究者的边缘问题。
另一头也确实有很小的:沃莱艾文的使用社群只有几千人,阿法卡文更少。规模差异很大,共同点只有一个——都还没有码位。
为什么这批文字集中在几个特定区域
把这14套的地理位置摆开:西非三套、东南亚三套、中国三套、南亚三套、大洋洲两套。
这个分布跟上一篇那份语言申请的国家分布高度重合,原因也一样——这些地方的文字多样性高,而当地没有把文字编码列进职责的机构。
唯一的例外是中国那三套。纳西东巴文和水书在国内都有正式的研究机构和保护项目,学术资料不缺。缺的是把这些资料转成一份符合Unicode要求的技术提案的那个动作——那是另一套完全不同的专业能力,跟古文字研究本身不是一回事。
还有一个共同点:这14套里有相当一部分是十九世纪或二十世纪由本地人自己发明的文字,为的是给一门原本没有文字的语言创造书写方式。这类文字的社群通常很坚定,但规模小、缺乏学术资源,恰好最难凑齐一份合格的提案。
卡住的到底是排队,还是没有人在推?
开工前的预期是排队很久
保哥开工前的预期很直接:这些文字大概是在排队。Unicode那边的评审流程很严格,提案要经过技术委员会和国际标准组织两轮,慢是正常的。
于是去算等待时长:拿每套文字的代码分配年份,减去它进Unicode的版本发布年份,看中间隔了几年。
2004年那批是标准发布当天的存量一次性登记,42条,不计等待。剩下逐条分配的145条,结果跟预期完全不一样。
真正排过队的只有35套,中位数1年
145条里,先有代码后进Unicode的只有35条。这35条的等待时长中位数是1年,最长的是契丹小字,5年。
另外71条是同一年拿到代码和码位的。还有39条更有意思——它们是先进了Unicode,之后才补的书写系统代码,也就是说码位那一侧走在了编号那一侧前面。
把这三档合起来看:这条流程的实际速度是很快的。一套文字一旦有人认真提案,通常一两年之内就能拿到码位,超过5年的一个都没有。
所以那27套卡住的文字不是在队伍里排着。队伍很短,而且走得很快。它们根本没进队。
那39条先有码位后有代码的说明了什么
145条里有39条是反过来的:先进了Unicode,之后才补的书写系统代码。
这个顺序初看很奇怪——按理说应该先在标准里登记名字,再申请码位。实际情况是两套体系各自独立运行,而做码位提案的人和做代码登记的人常常不是同一批,所以谁先谁后取决于谁先想起来。
还有71条是同一年拿到两样的,那是有人一次把两边的手续都办了。三档合起来看,这两道闸之间没有强制的先后关系,也没有任何机制保证办了一边就会办另一边。
对用数据的人来说,这条的含义是:不能拿有没有书写系统代码去推断有没有码位,反过来也不行。两份表必须各查一次。
这条听起来琐碎,但它是这一篇能成立的技术前提。如果两套体系是同步的,这一篇根本不存在——有代码就有码位,没什么可写的。正因为它们各自独立,中间那个差集才有意义。
没进队的意思是没有人提交提案
这条流程的起点是一份提案:要给出这套文字的全部字符、字符之间的关系、排序规则、实际使用的样本,通常还要附上使用者社群的意见。
这份提案的工作量比语言代码申请大一个数量级。语言代码申请是三五页表格,文字提案是一份几十页的技术文档,要有字符表、有字形样例、有编码模型的论证。
提案里最难的不是列字符
列字符表反而是相对机械的一步。真正难的是编码模型:这套文字里哪些是独立字符、哪些是变体、哪些是组合出来的,得给出一套自洽的说法。
举个具体的难点。很多文字里同一个音有好几种写法,取决于它在词里的位置。这些写法要算成一个字符加上下文规则,还是算成几个独立字符?这个决定会影响排序、搜索、大小写折叠的全部行为,而且一旦定下来几乎不可能改。
这就是为什么提案要几十页,也是为什么它需要一个既懂这套文字、又懂字符编码模型的人。这两种知识很少长在同一个人身上,而提案要求它们同时在场。
顺带说,这个难点跟做内容的人遇到的一类问题同构:给一个品类建属性表的时候,哪些算独立属性、哪些算某个属性的取值,这个决定同样会一路影响到筛选器和搜索。定错了以后改,成本是重建。
能做这件事的人比能填语言申请表的人还少。加州大学伯克利分校有一个专门的项目在做这件事,它的存在本身就说明了问题——如果这件事有足够多的人自发在做,就不需要一个专门的项目来推。
这跟上一篇的结论是同一条:办得成办不成,取决于有没有一个具体的人愿意去办那份手续。只是文字这一层的手续更重,所以空白更持久。
有一份公开的管线可以查进度
Unicode那边维护着一份待编码字符的管线表,已经被接受、正在走流程的提案都在上面,能看到每一项走到哪一步了。
用法很简单:你关心的那套文字如果在管线里,说明有人在推,等就是了;如果不在,说明这件事还没开始,等多久都不会有结果。
这里补一个实操细节:管线表里的条目分几个阶段,从被技术委员会接受、到进入国际标准投票、到确定进哪一版。看到一套文字出现在表上还不够,要看它走到了第几阶段。刚被接受和已经确定版本号,中间可能还差两三年。
这个判据比看新闻可靠。一套文字被媒体报道过不代表提案在走,很多报道说的是某个学者在做研究,而研究和提案之间还隔着好几年。
管线表还有一个用法:看一套文字在里面停了多久。已经进表但好几版都没动的,通常是卡在了某个技术分歧上,比如字符边界怎么切、某几个符号算不算独立字符。这类分歧解决起来比补材料慢得多。
官方那份未支持清单,为什么只列了两套?
官方清单上的现代文字只有两套
Unicode官网上有一页专门列还没被支持的文字,分成两栏:一栏叫现代文字,一栏叫古代和废弃文字。
现代文字那一栏只列了两套:洛马文和纳西东巴文。
而按代码表跟码位表对差算出来的,今天仍在使用的语言所用的、没有码位的文字是14套。官方清单只列了其中两套,差7倍。
这不是官方藏着什么。这一页最后一次实质更新是好几年前的事,页面本身也标注过它已经不再用于跟踪状态。它不是错的,是旧的。
这类页面在大机构的网站上很常见。一个页面建立的时候有人维护,后来职责转移了、工具换了,页面留在原地。它不会被删掉,因为删掉会破坏外部链接;但也不会被更新,因为没有人的KPI里写着这件事。
对使用者来说,最危险的不是错误的页面,是停更的页面——它每一句话在当年都是对的。
更值得注意的是分栏方式
把兰札文放在古代和废弃那一栏里,这一条能说明不少东西。
兰札文写的是尼瓦尔语。尼瓦尔语在语言码表里标着在用,在加德满都谷地有几十万使用者,这门语言本身完全不是古代语言。这套文字今天主要用于宗教文本、招牌和装饰,使用场景确实窄了,但它有活着的使用社群。
这就出现了一个分类上的错位:语言那一侧判它在用,文字这一侧判它废弃。两套体系对同一件事给出了不同的答案,而它们各自都有道理。
做内容的人遇到这类分歧的时候,判据应该是需求侧而不是标准侧:你的目标用户会不会用这套文字搜索、会不会在这套文字的内容上停留。标准里怎么归类不影响这个答案。
这跟本站反复讲的那条是一回事:标准里的地位和市场里的活跃度是两个东西,前者不能当后者的代理指标。上一篇用裁决书的词频证过一次,这一篇用分栏方式又证了一次。
这条对怎么用官方文档是一个提醒
一份挂在官方域名下的清单,可信度通常被默认为最高。但清单和规范是两种东西:规范改动有流程、有版本号,清单往往是某个人在某一年整理的,之后没人再动。
判据可以固化一下:凡是清单类的页面,先找它的更新时间;找不到更新时间的,用它前先拿一份原始数据对一次。这一篇的14套就是这么对出来的,用的是官方自己发布的两份机器可读文件。
本站在别的地方也用过这条。做小语种页面审计时,很多所谓的官方支持语言清单跟实际能用的语言对不上,最后都得回到原始数据文件去数(三家系统的界面语言清单)。
一套文字要过几道闸,才算能在网上当字用?
四道闸,缺一不可
第一道:书写系统代码。这决定了它在标准里有没有名字,是后面所有事的前提。目前226套过了这一道。
第二道:Unicode码位。这决定了它能不能被存成文本。187套过了这一道。
第三道:字体字形。有码位但没有字形,屏幕上是方块。这一道由字体厂商和开源字体项目决定,跟前两道完全无关。
第四道:输入法。有字形但打不出来,用户只能复制粘贴。这一道通常最晚到,而且经常没人负责。
四道闸是串联的,任何一道没过,用户那一端的体验都是这套文字不能用。而做技术选型的人常常只查了第二道就以为万事大吉。
四道闸各自由谁把守
第一道和第二道由国际标准组织把守,流程公开、有档案、能查进度。这两道虽然慢,但至少是可预期的。
第三道由字体厂商和开源字体项目把守。这一层没有承诺,一套文字有没有可用字体,取决于有没有人愿意做,以及有没有钱做。
第四道由操作系统厂商和输入法开发者把守。这一层连一份公开清单都没有,你只能自己拿设备去试。
四道闸的可预期性是递减的,而对用户体验的影响是递增的——用户不关心码位,他只关心能不能打出来。
第三道和第四道,本站量过
字体这一道,问题通常不在有没有,在字形集有多全和文件有多大。一套覆盖完整的非拉丁字体动辄几百KB到几MB,直接影响首屏。这笔账在字体子集那一篇里算过。
输入法这一道更隐蔽。一门语言的正字法要求某几个字符,而当地主流键盘布局上没有这几个键,用户就会用形近字符替代,你的关键词表里就会出现两套写法。这类情况本站在讲波斯语的时候写过(两个常用字母各有两个合法码位)。
把四道闸摆在一起看会发现一个规律:越靠后的闸,越没有一个明确的责任方。标准组织管前两道,第三道靠字体项目,第四道靠操作系统厂商和输入法开发者,而这两类主体都不对小语种负有义务。
怎么快速查一门语言过到了第几道
给一套可以在半小时内跑完的动作。
第一步,查这门语言用什么文字,拿到那套文字的四字母代码。第二步,在书写系统代码表里搜这个代码,看有没有Unicode版本号——有,说明第二道过了;空着,后面三道不用查了。
第三步,在自己的设备上打开一段这套文字的样本文本,看是不是方块。第四步,试着在系统的输入法设置里找这门语言,看能不能装上。
第三步有个坑要提醒:你自己的设备上能显示,不代表用户的设备能显示。开发者的机器通常装了一堆字体,判断显示情况要用干净环境,或者直接查这套文字在主流系统默认字体里的覆盖情况。
第四步也一样。你能在设置里找到并装上,不等于目标市场的用户会去装。输入法这一层的正确问法不是能不能装,是当地人默认装的那套键盘上有没有它。
四步做完,你知道这个市场的内容能做到什么程度。第二道没过的,页面上只能放图片,搜索引擎抓不到一个字。
还有一个更快的粗筛
如果懒得走四步,有个一分钟的粗筛:在搜索引擎里用这套文字搜一个常见词,看返回结果里有没有真正用这套文字写的网页。
返回的全是介绍这套文字的百科条目和学术论文、而不是用它写的内容,基本可以判定这一层没打通。这个判据不严谨,但很少判错,因为一套真正能用的文字必然会有人拿它写日常内容。
反过来如果搜出来一堆本地网站,那说明前三道闸至少是通的,剩下要查的只有输入法那一道。
没有码位的文字,今天怎么出现在网页上?
三种办法,各有各的代价
第一种是图片。把文字排好版截成图放上去。这是最常见的做法,代价是这些内容对搜索引擎完全不可见,对读屏软件也不可见。
第二种是私有使用区。字符集里预留了一大块没有分配含义的码位,谁都可以往里塞自己的字符。做一套字体,把字形挂在这些码位上,装了这套字体的设备就能正常显示。
第三种是转写。用另一套已有码位的文字把它写出来,比如用拉丁字母转写。这是唯一一种搜索引擎能读的方案,代价是它已经不是原来那套文字了。
转写这条路本身也有讲究。同一套文字常常有好几套互不兼容的转写方案,学界一套、政府一套、民间还有一套。选错了转写方案,你的内容跟用户搜的词照样对不上,本站在讲希腊语的时候写过这类情况的完整形态(拉丁转写的覆盖问题)。
判据是:选用户实际在打的那一套,不是选最规范的那一套。这两者经常不是同一个。
私有区这个办法为什么危险
私有区的字符在标准里没有含义,含义由使用它的那套字体私下约定。这意味着同一串字节,换一台设备、换一套字体,显示出来可能是完全不同的东西,也可能是一串乱码。
更麻烦的是搜索和排序全部失效。搜索引擎看到的是一串没有语义的码位,没法分词、没法建索引、没法做同义扩展。内容存在,但在检索这一层等于不存在。
还有一个长期风险:等这套文字将来真的拿到了正式码位,所有用私有区存的历史内容都要做一次迁移,而迁移映射表往往已经找不到了。
迁移这件事的难度还常常被低估。私有区方案通常不是一家做的,同一套文字可能有三四个互不兼容的私有映射,各自服务于不同的字体。迁移的时候你得先判断这段字节用的是哪一套映射,而这个信息一般没有被记录下来。
这个剧本本站写过它的完整版。有一门语言曾经全网通行一套非标准编码,官方标准化之后花了好几年才换过来,而当年那批用旧编码的页面今天基本上一条都打不开。另一个语系的编码遗留也是同样的形态,只是发生得更早。
那一次的教训里最值钱的一条是:编码迁移的成本不在转换脚本上,在判断每一份历史数据当初用的是哪一套编码上。转换本身是几行代码,判断是个考古工作。
那正确的做法是什么
如果第二道闸没过,保哥的建议是三条一起用。
正文用有码位的那套文字或者转写方案写,保证搜索引擎能抓、能索引、能匹配查询。这是流量的来源,不能省。
那套没有码位的文字用图片呈现,放在品牌表达、标题装饰、文化元素这些位置上,并且一定要配替代文本。替代文本写的是这段文字的意思和转写,不是这是一张图片。这一层怎么写本站量过(非拉丁文字的替代文本)。
还有一个容易漏的位置:结构化数据。你在页面上用图片展示的那个名称,在结构化数据里要写成能被机器读的形式,也就是转写或者另一套文字的写法。图片里的字对机器完全不存在,而结构化数据是它唯一能拿到这个信息的地方。
不要用私有区。省下的那点排版便利,抵不上内容在检索层消失的代价,更抵不上将来迁移的成本。
保哥这次的预期错在哪几条?
错的第一条:以为是排队
前面讲过了,实测的等待中位数只有1年。这条错得最彻底,而且它改变了整篇文章的结论方向。
如果真的是排队,结论会是流程太慢、应该扩容评审力量。实测之后结论变成了:流程不是瓶颈,提案供给才是瓶颈。这两个结论对应的行动完全不同。
这条也让这一篇跟上一篇接上了。上一篇的结论是语言代码那道闸卡在有没有人填表,这一篇的结论是文字这道闸卡在有没有人写提案。两道闸,同一个瓶颈。
两篇合起来,那条原语可以写成一句话:一门语言在标准体系里的身份,是被人一件一件办出来的,而办事的人极少。这句话解释了这个体系里几乎所有的空白,也解释了为什么这些空白不会自己消失。
错的第二条:以为官方清单是全的
开工时的计划本来是直接引用官方那份未支持清单,省掉自己对差的功夫。列出来两套,跟预期的几十套差太远,才回头去做交叉。
做完才知道官方那份清单已经好几年没更新。如果照着它写,这一篇会得出一个乐观得多的结论:只有两套文字还没被支持,这件事基本上做完了。
错的第三条:以为没码位的都是死文字
第三个预期是这批文字应该主要是考古材料,跟现代市场没关系。
实测是27套里14套服务于今天还在用的语言,比例超过一半。而且里面有使用者上百万的语言。
这条错的根源是把文字的知名度当成了它的活跃度。一套文字在中文互联网上查不到多少资料,不代表用它的人少,只代表写中文资料的人没去过那里。这个偏差跟本站量过的低资源语言在模型里的表现是同一个来源。
这个偏差有一个很实用的推论:你能查到多少资料,反映的是有多少人写过它,不是它本身有多大。做市场调研的时候,资料的丰富程度只能当作研究成本的指标,不能当作市场规模的指标。
两者甚至常常是反的。一个资料丰富的市场通常意味着已经有很多人研究过、进去过、竞争过;一个查不到资料的市场,可能只是还没人写中文介绍。
对了的一条
唯一猜对的是两份表能对得上。开工前判断这两份官方数据应该是同步维护的,实测交叉核对下来差的4个全是元代码,反向漏0个。
这条虽然不刺激,但它是整篇文章成立的前提。如果两份表对不上,后面所有的对差结论都是噪声。做交叉分析之前先验证两个数据源能不能互推,这一步不能省。
这件事对做小语种SEO的人有什么用?
用法一:进一个新市场之前先查第二道闸
动作前面给过了,两步就能查完。查的成本几乎为零,不查的代价是排期做到一半才发现内容形态得整个换。
真正会踩到这一条的场景不多,但一旦踩到就是硬伤。涉及少数民族市场、宗教文本、文化类目、以及某些南亚东南亚的细分市场时,值得多花这五分钟。
还有一类场景容易被忽略:做文化类目的商品,比如手工艺品、宗教用品、地方特产。这类商品的名称、图案、包装上常常带着当地文字,而这些文字未必有码位。你在商品标题里想写那个名字,可能根本写不出来。
更常见的是半踩:主流文字有码位,但这门语言正字法要求的某几个附加字符是后来才加进去的,老系统不认。这种情况比整套文字缺席常见得多。
这类半踩的典型症状是:页面在新设备上完全正常,在某些老终端或者某个第三方系统里有几个字变成问号。因为只坏几个字,很容易被当成偶发故障放过去,而实际上那是一个稳定复现的字符集问题。
排查的入手点是先确定那几个字的码位落在哪个区间,再查那个区间是哪一版加进来的。从PDF里抠文本那一篇里遇到的也是同一类问题,只是那次的断层发生在文本层而不是字符集。
用法二:把码位当成内容形态的分界线
这条可以直接写进选品或者选市场的判据表:第二道闸过了,这个市场可以做文字内容;没过,只能做图片内容,而图片内容在搜索上的天花板低一个数量级。
这个判据比看人口、看GDP都硬,因为它决定的不是市场大小,是你能不能用搜索这个渠道触达。
顺带说,这也是评估一个市场竞争强度的暗线。一个文字层没打通的市场,几乎不会有成熟的本地竞争对手在做搜索,因为大家都做不了。
但要提醒一句别把这条读反了:没有竞争不等于有机会。文字层没打通往往意味着这个市场的线上交易本身就很薄,用户可能连搜索习惯都还没形成。竞争少和需求少经常是同一件事的两个说法,得分开验证。
验证的办法是绕开这套文字去看需求侧:这个人群在用哪套文字或者哪门语言上网、有没有在搜商业词、当地有没有能承接的支付和物流。这些问题的答案跟文字编码没关系。
这一步做完往往会得出一个朴素的结论:这个人群实际上在用另一门大语言上网,你要做的是那门大语言的内容,而不是纠结这套文字。文字编码这一层的价值,多数时候是帮你尽早排除一个选项,而不是打开一个市场。
用法三:这套读法可以搬到别的标准上
这一篇的方法只有一句话:拿标准里的登记表,跟这套标准实际落地的数据对差,看差集里是什么。
能这么读的不止书写系统。语言代码跟界面语言清单可以对差,货币代码跟支付渠道支持的币种可以对差,国家代码跟物流覆盖可以对差。差集永远比并集有信息量,因为并集是宣传口径,差集是实际边界。
本站已经用这个方法量过几层了:区域格式数据的自有率是拿标准数据跟继承标记对差,语言选择器的排序是拿代码顺序跟自称顺序对差。每一次差集里都有东西。
用法四:给这件事一个合理的优先级
最后说句实在的。对绝大多数做跨境电商的读者来说,这一篇涉及的14套文字,一辈子可能一套都碰不到。
这一篇真正的价值不在名单,在那个结构:你以为的基础设施,是由一层一层独立的手续叠出来的,每一层都可能缺席,而缺席的原因通常不是技术难,是没有人负责。
这个结构在别处天天遇到。某个市场的支付方式、某门语言的分词器、某个平台的品类树——你用的时候以为它是天然存在的,出问题的时候才发现它背后是几个人的工作量。做排期的时候给这类依赖留一点余量,比事后救火便宜得多。
最后留一句给两篇合起来的读者。这两篇量的是同一件事的两道闸,得到的是同一个结论,而这个结论有个不太舒服的推论:你所在行业里那些看起来最稳固的基础设施,往往最没有备份。
不是说它们会塌,是说当它们需要变化的时候,推动变化的力量比你想象的小得多。知道这一点,至少能让你在做长期依赖的时候多问一句:这件事今天是谁在维护,如果这个人不做了会怎么样。
这个问题问出来通常会有点尴尬,因为多数时候答案是没人知道。但问过和没问过的区别在于,问过的人会在方案里留一条退路,没问过的人只有在出事那天才开始找。
放到这一篇的语境里,退路是什么很清楚:那套文字今天没有码位,你的方案就不能把它当成文本资产来规划。图片可以用,转写可以用,唯独不能假设它明年就能打出来。
常见问题解答
没有码位的文字,我可以自己申请吗?
可以,流程对所有人开放。但提案的门槛比语言代码申请高很多,要提交完整的字符清单、编码模型论证、字形样例和使用证据,通常还需要使用者社群的支持信。现实的做法是联系专门做这件事的项目,由他们协助或者代为提交。
这14套文字的名单会变吗?
会,而且变化不慢。Unicode每年发布一版,每版通常新增几套文字。这一篇的数字取自当前正式版本,下一版发布之后这份名单就要重数一遍。判断方法在文中给过:拿书写系统代码表跟当版的编码数据对差。
我的页面上放了这类文字的图片,替代文本该怎么写?
写这段文字的意思,加上拉丁转写。不要写这是某某文字的图片这种描述性文字,那对搜索和读屏都没有价值。转写很重要,因为它是这段内容唯一能被检索到的形态。
私有区方案真的一点都不能用吗?
内部系统里可以用,比如你自己的数据库、内部的排版工具。不能用在对外的网页上,也不能用在任何将来要迁移的数据里。判据是:这批数据将来会不会需要被别人读——会,就不能用私有区。
页面上同时出现两套文字,语言标签该怎么写?
整页的语言标签写主要那一套,页面里用另一套文字的片段单独标注。片段级的标注在实际站点上落实率极低,但它正是这类混排页面唯一能把信息传出去的地方,读屏软件和检索都靠它。
怎么知道我的目标市场用户实际用哪套文字?
看当地媒体和大型零售站的实际页面,不要看语言资料。有些语言在正式场合用一套文字、在日常网络上用另一套,甚至直接用拉丁转写。这个差别在词表阶段就会影响你的覆盖面。
为什么语言代码和书写系统代码是两套体系?
因为语言和文字本来就是多对多的关系。同一门语言可以用几套文字写,同一套文字可以写几千门语言。用一套编号同时表达这两件事会立刻打架,所以标准把它们拆开了,需要同时表达的时候再用语言标签把两者拼起来。
本文标题:《这16门语言都有语言代码,写它们的那14套文字一个码位都没有》
本文链接:https://zhangwenbao.com/minor-language-script-code-without-unicode.html
版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0