找回密碼
 入住家園
查看: 938|回復: 1

【转帖】张时钊老师的汉字笔画组字原理

[複製鏈接]
發表於 2005-10-2 13:55:52 | 顯示全部樓層 |閱讀模式
汉字笔画组字原理

       20年前,我提出“无字库汉字”,以后进一步认为“信息时代的汉字和中文信息处理的出路是:汉字植根于电脑的方法必须建立在笔画组字上”。近5年的实践证明:不要庞大的字库数据,只要50个笔画,就可由软件自动组出所有汉字。笔画组字的方法,虽已基本叙述在“无字库汉字演示和设计软件的使用说明”中,但没有突出组字的原理,也缺乏系统性。现在把我已达到的水平,集中陈述于下。

一、          汉字组织的三个层次

关于汉字的组织构造,虽有许多不同的表述,名称就繁多,但我只取笔画、字根和汉字三个层次,字根由笔画组成,汉字由字根组成。有些笔画可以成字,有些字根也可独立成字,称为独体字。合体字与独体字、字根一样,也可成为更复杂的汉字之组成部分,这时可平等地看作是“子字”。其中,如果有没参与字根组织的、孤立的笔画,也同样看作是“子字”,其作用与字根一样。一个字根也可成为更复杂的字根之组成部分,当然也可称为“子字根”,其作用将被看作与单一的笔画一样。

笔画。笔画数量少,不同作者的看法基本一致。但笔画名称略有出入,而且常有如“横折竖折横折竖钩(简称:横折折折钩)”这等长长的怪名称,我提议用“乃钩”“言折”之类简短形象的名字。其次是笔画的排序也常相左,参见我另一篇文章“汉字笔画表征求意见稿”,曾在网上进行投票,结果因参与的网友太少,没得出结论。不过这些与组字原理都关系不大。对于组字来说,是如何决定每个笔画在汉字应占的位置和大小,以及笔画在拉长或压扁时,保证笔画的粗细和形态(主要在首尾及转折处的笔锋)不变。我曾设想,笔画之下还有一级“元笔画”,电脑只要少量元笔画的数据,就可组出世界所有文字的字母和笔画。但目前还只能为每个汉字笔画设计轮廓数据,实际上,不同字体还要有不相同的数据。在轮廓线中间,起落笔及转折处,都另设一骨干点。骨干点组成的骨干线,在不同汉字中是要随它应占的空间不同而变形的(拉长或压扁),但轮廓点相对于与它最近的骨干点的相对距离是永远不变的,以此来保证笔画的粗细和形态特征。至于每个笔画应占的正确空间,由后面详述的“层积”理论按笔画的“线数”计算。每一笔画都有纵横两个方向的线数。“点”两个线数都为1(记为11),“竖点”的纵向线数增为2(记为12),如下表第一行所示。

主笔画       线数    形状或例字    付笔画          线数    形状或例字

a点            11    主1           A竖点            12    心1

b横            31    一             B短横            21    王2

c竖            13    丨,上1       C短竖            12     川2

u横撇弯钩(耳钩)33    阝1           U横撇折折钩(扬钩)33     扬4

“横”的线数为31,“坚”的则为13。线数最大值是3,实际上2和3差别不大,仅表示在这方向可以伸展,而与线数1有别。上表仅列出文末附表1中的4行,作为例子说明各项的意义:笔画名前的字母是代码,大写的是副笔。副笔与主笔形状相似,有时简直分不清,或者可以相互替代,在字根表中的笔画序列里就不分大小写了。这里只有a到y,共25种笔画,是按我现在的程序中使用的排序。因为大部分笔画没收在当前的字库中,我用例字后加数字来表示,例如“短横”的“形状或例字”是“王2”,就是表示王字的第二笔。

字根。字根也被称作部件、字元等。这些名字以前是为了研究汉字字形输入法提出来的,不同输入法作者“切分”出来的字根也就千奇百怪,难以统一了。笔画组字用的字根,更要从便于组出所有汉字的角度来选择。文后附的字根表,是我现在用的936个字根,按笔画顺序排列。当前字库中没有的,则表示为:含有它的例字,再加上该字根起止笔画数字。例如第300号的“翅14”,是“翅”字第一到第四笔,其笔画组成与299号的“支”完全一样。之所以要增加300号字根就是为了便于组出这类左下包围字,对于输入法来说,当然是多余的。表中还列出了由字根组字要用到的结构码和笔画数。下面将着重说明结构码的意义。

二、          由字根组出汉字

               ——————结构码

我们从说明比较简单的如何由字根组成汉字开始。无字库技术确也是从此发轫的。1984年,我为只有18K内存的袖珍机编研汉字系统时,就是只用240个字根组出任意汉字的。原来绝大部分汉字是由字根左右并列形成的,其次是上下结构的字,更少的是各种包围结构。例如,左上包围嵌套结构的“广”字头,它后面的字根都要写在它的右下方,即向下向右缩进。我发现,绝大部分情况下,字根都是以其固有的结构方式参加组字,个别以别的形式组字时,只要加一个结构码就可以了。而字根本身不要特别的结构码,把结构特性相同的字根编码放在一起,程序就可知道属于那个范围的字根应有什么结构特性。

现在转到微机上,字根增加到936,组字是更方便和正确了,同时给每个字根以一个3位整数的结构码,更精确地描述它的组字特性。字根结构特性分三类10种,百位数0——9指明它属那一种,另两位可作出精细的安排,对于嵌套结构,十位和个位数,分别指明X和Y方向缩进的程度。以下是对结构码的具体说明。

1、            左右结构类:结构码百位数为0,绝大部分末两位也为0。对于一些笔划很少的字根,组成结构复杂的汉字时,它们所占的位置太窄小,显现不出应有特性。可以用一个两位数,它除以10,就用来规定扩大它应占空间的倍数(应占空间是以笔画数分摊的)。

2、            上下结构类:结构码百位数为1,一般为100。有些字根底部中空,如“宀??”等,希望后续字根能升高写入其中空部分,末两位数用来规定后续笔画升到该字根内部的百分数。

3、            嵌套结构类:结构码百位数大于1,其后续笔画写入其内部。后续笔画占据的空间之边缘,离开嵌套字根边缘各有不同的距离。一般来说,如果上下两端或左右两边都有距离的话,是相等的。所以只要用一个数N(十位数)指定x方向离开十分之几,用一个个位数M指定y方向离开十分之几。而结构码是百位数L(整个结构码为LNM),它用来指明嵌套种类时,就已指明到底那几个方向是离开嵌套字根的边缘的,这些百位数分别是:

a.     左上包围(L=2):如“厥”字之“厂”、“扇”字之“户”等,左边离开N/10,上边离开M/10。

b.     右上包围(L=3):如“匍”字之“勹” 、“司”字之“?”等,右边离开N/10,上边离开M/10。

c.     上三包围(L=4):如“问”字之“门”、“同”字之“冂”等,左右都离开N/10,上边离开M/10。

d.     左三包围(L=5):如“医”字之“匚”、“匡”字之“匚”等,左边离开N/10,上下都离开M/10。

e.     下三包围(L=6):如“函”字之“凵”、“幽”字之“山”等,左右都离开N/10,下边离开M/10。

f.      左下包围(L=7):如“毯”字之“毛”、“翅”字之“支”等,左边离开N/10,下边离开M/10。

g.     走之包围(L=8):如“连”字之“辶”、“建”字之“廴”等,数据同f,但嵌套字根是最后写的。

h.     全包围(L=9):如“国”字之“囗”,“周”字之外框也可列入此类,左右都离开N/10,上下也都离开M/10。

走之包围(L=8)原来是属于左下包围(L=7)的,这样要先写走之,再写被包围的右上部分,不符合书写的笔顺。把它独立出来,只要把被包围的右上部分用圆括号括起来,就可移到前面,就符合笔顺要求了。但是,全包围之“囗”字,前两笔先写,最后才用一横封口,无论如何不能符合笔顺要求,若不改变原有计算笔顺的习惯,就要在由字根计算笔画排序时使用特别的程序。

加圆括号是组织汉字的一种手段。圆括号内的字根序列,与调用别的汉字一样,即是被看作子字的部分。子字与后面部分的关系是左右结构。如果要改为上下结构,其他非上下结构的字根要改为上下结构也一样,可在后面加结构符“:”。强迫字根改为左右结构的结构符是“””。强迫改为包围结构的结构符是“=”,它是全包围结构符,后面也可以附加数字。其他包围结构符不需要,但这种包围结构是需要的,特别是叠加对号∨错号
發表於 2005-10-2 16:06:21 | 顯示全部樓層
经典
您需要登錄後才可以回帖 登錄 | 入住家園

本版積分規則

手機版|小黑屋|吳語書院

GMT+8, 2026-9-4 17:51 , Processed in 0.029310 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表