
这是五笔界的月经题了,没想到都 3202 年了才登陆知乎。
王永民老师当年发明五笔 86 版时,不知道团队里哪个小天才负责给「延」字编码,他(她)把「延」字右上角的部分处理成「丿」+「止」(如图),所以编码是「丿止廴三」 THPD。86 五笔流传太广,大家只好将就。
但是,按照教育部的规范汉字字形和笔顺,「延」字的笔顺如动图所示。换句话说,「延」字右上角的「止」左下角不应该出头。所以,「延」字右上角不能处理成「丿止」,应该处理成「丿卜乙」。98 五笔就是与教育部规范保持一致,把「延」字处理成「丿卜乙廴」,编码为 THNP。
不过问题又来了,按照汉字的发展渊源,「延」右上角那个部件,确实是从「止」演变而来的。金文的「延」是简单粗暴的「彳止」。篆书给「止」上面加了一撇,而「止」左下角的「┴」也不再出头,变成了「└」。隶书和楷书把「彳」向右下方延长,变成了「廴」,与当代「延」字形一致。
那么当代的「延」字右上角的部件到底能不能算「丿止」呢?这真的就尴尬了。按照汉字发展的历史,以及五笔「取大优先」的规则,「延」字右上角处理成「丿止」是能自圆其说的;86 五笔就是这么干的。但是按照教育部颁布的规范字形和笔顺,「延」字右上角不可以写成「丿止」,学校也是这么教的;而王永民老师当时一心想让五笔进入中小学信息技术教材,所以他肯定要遵守教育部规范,在 98 五笔中,给「延」改了编码。
有没有一种可能, 左下角不出头的「止」是 86 五笔的一个隐藏字根呢?
实际上,王永民团队把轻微变形的字根和原版的字根安排在同一个键位上,是有先例的。例如:「氺」当作「水」处理,「⺩」当作「王」处理,还有一个特别过分的例子 ,「长」字去掉一撇一捺,当作「七」处理。
但是,左下角不出头的「止」并非隐藏字根。用过五笔的用户都知道,五笔有个「末笔字形识别码」的设定,用来减少重码。有一条取识别码的规则是「含有辶、廴的字,要把去掉辶、廴之后剩余的部分的最后一笔作为末笔」。那么,如果左下角不出头的「止」是隐藏字根,那么按照识别码的取码规则,「延」的末笔是折(5),字形是杂合型(3),所以识别码是 53 V。但是在 86 五笔和新世纪五笔中,「延」字的全码是 THPD,识别码为 13 D。根据识别码的取码规则反推,显然只有把「延」字右上角处理成「丿止」,末笔为横(1),再加上字形是杂合形(3),才能取识别码为 13 D。所以,这只能说明负责给「延」编码的人就是把「延」右上角写成了「丿止」,并非把左下角不出头的「止」设为隐藏字根,而且整个王永民团队没有异议。
其实谷月老师上小学时也是把「延」右上角写成「丿止」,没错,那时候谷月老师爱玩电脑,上课不听课,老是想着五笔打字和 Basic 编程,以致于很多字都是按照 86 五笔的取码规则写的,而不是按照教育部的规范字形和笔顺写,比方说,「九」「乃」「方」「瓦」把伸得最长的一折作为最后一笔,「戈」「戋」「我」把右下角的一撇作为最后一笔。
假如考虑到不同用户对同一个字的字形和拆分理解不同,给同一个字编不同的编码(一字多码)并不是问题。比如,可以同时给「延」编三个编码:「丿止廴三」THPD,「丿止廴巛」THPV,「丿卜乙廴」THNP。
王永民老师当年引入了一个设定:容错码。容错码有两层意思:一是一字多码(例如,「长」有两种编码,「丿七丶氵」TAYI 和 「丿一乙丶」TGNY;二是强行修改不常用字的编码从而减少重码,例如把「嘉」的编码改成 FKUL,免得它与更常用的「喜」FKUK 重码。王码公司官方的 WMDOS 内置的五笔输入法,容错码是最全的。
但是进入 Windows 时代以后,五笔实际上取消了容错码( 王码公司官方的五笔输入法和各种第三方输入法都找不到容错码了,不过用户也可以自己修改第三方五笔输入法的码表自行补充容错码),所以,一字多码的老办法就不好使了。
其实,学形码打字,总要死记硬背一些奇葩的拆分和编码。以五笔为例,「长」=「丿七丶」,「非」=「三║三」,「末」=「一木」,「未」=「二小」,「左右有」的第一个字根是「𠂇」,但是「直南」的第一个字根是「十」,「羽」是字根但是「习」不是字根。以五代仓颉为例,「絶」右上角那个字根不是「⺈」而是「刀」,「撐」右下角那个字根不是「牙」(取码为「竹」)而是「手」。我们为了打字而被迫习惯了,不是吗?
