少争辩,多研究,发展中文- -| 回首页 | 2005年索引 | - -走小字库道路,创中国人电脑

细说元笔画

                                      

细说元笔画
    在搞汉字笔画组字时,必须用50种左右的汉字笔画。比较起来,英文字母似乎简单得多,好像可以只要半圆弧和直线段两种。实际却不然。因为半圆弧和直线段,都可有4种不同的方向,那就要8种元笔画。而且这8种元笔画,仍难以组成其它ASCII字符,此外还有大量各种拼音文字的不同字母及形态各异的日本假名。............说实在,当我给自己提出这个任务后,很长一段时间里,还搞不清“元笔画”到底应该是怎样的。
    经过反复摸索,慢慢变得清楚起来。现在我说的一个“元笔画”,是指可由简单的小程序画出的一类图形,文后附有最后使用的VB子程序。目前共7类,毎类用一个ASCII字符加几个参数(即字符串),就可画出需要的图形,再由它们组合成所有非汉字字符。这些类是:

 元笔画名称    代表字符
1.线段           !  
2.圆孤           @  
3.螺旋形          &   
4.多角形         #   
5.波形           $ 
6.不定形         %    
7.任意曲线        ~

    我虽然把汉字库里的所有ASCII及其他非汉字字符都用这样的“元笔画”组出来了。但离我的最高目标(由它们能够很方便地组出所有文字,或所有字母),还很远,组出的字形也很差,还需要研究和创造。最后会成为什么样子,很难预料。汉字笔画也应该由元笔画组出。您看到,比笔画复杂得多的平假名都已用元笔画组出来了,组出所有汉字笔画是不困难的。这样,计算机真的不需要任何字模,完全无字库了。当然,常用的字母、字符、汉字笔画、字根等,应该有一定的标准写法,最好指定一个标准字符串并规定其内码。但它已不是现在意义下、用.ttf文件存贮的的字库了。如果仍要称它为字库,那么全世界就只有这一个字库,内码长度不超过2字节,所有文字都由它们组出。还可以写出种种符号,例如任意的八角星、十角星、十二角星,各种形状的序数符(如写在六角形内的序数)等等。
    现在对现有的7种元笔画进一步进行解说。实际上只要说清下面的《元笔画各参数意义表》就可以了。每个元笔画是用一个“首符”再加几个作为参数的字符组成的串来表示的。前6种元笔画的参数都是数字0-9,前5种元笔画的参数最多只有5个,即表中列的a1~ a5,且可以缺省,各有一定的缺省值。例如无参数的一个字符“!”,是一水平线,缺省的参数值a1=0,位置在正中a2=5,宽度最小 a3=1,长度最大a4=9。实际用到绘图语句中,要乘以括弧内的数字,因为直线长度是从中点开始算的,所以少一半。a1不为0时,a1*18是直线的斜角,5*18=90度,所以“!5”就是一根位在中间的垂线,参数a1>5,则是向后倒的。参照此表,再在计算机上试验一下,不难得到需要的元笔画。
    圆孤@的参数a1<6时,是简单的圆环,调节参数a2,可增环宽直至成黑圆点。参数a1>=6时,才是圆弧(有开口的圆环), a1-6=0~3是开口方向,0向右,1向上,2向左,3向下。开口角度等于a2*30,最大是240度。特别设a2=9,生成U字形,即开口是180度,与a2=6一样,但开口两边各接一段直线段,开口向上时,就是U,开口向其它3个方向,则是数学符号。这个元笔画的轮廓线主要由两个圆在两开口点连接而成。外圆固定为最大,内圆按宽度a3而缩小。a4=0时,两圆是同心圆,为了生成字符“C”,内圆要向右偏,弧的左边就比开口处宽厚,故要用串“@6311”。
    螺旋形&的参数a1<3时,是发散的圆螺旋线,大于3时,则是螺旋折线,a1指一圈折线的角数。用a3还可整体顺转一定角度,以满足需要(上一个圆孤@的参数a5,下一个星形#的参数a3,也是起同样的作用)。
    星形#的参数a3=0时,是实心的星形,a2为星形的内圆(星体)大小。a3>0时,实为多角形,如五角星应为“#221”,而“#22”则是有五个光芒的星形。
    波形$的诸参数,意义清楚,用不着再加说明。
    不定形%的参数一定要刚好是11个数字。除a1外的5对数字描述两条曲线,毎条曲线5个点。如果a1是偶数,曲线的走向是横向的,那么它们都在均匀分布的5条垂直线上,首尾两点在字符空间的左右两端,而毎对数字分别是上下两条曲线的纵向坐标。如果a1是奇数,毎对数字分别是左右两条曲线的横向坐标。而a1的大小,则规定曲线是否经过平滑化,表中说得很清楚。例如字符“【”的串为“%55957565759”,a1=5,是奇数,曲线纵向,左曲线的横坐标都为5,是位居中部的垂直线,不平滑,右曲线横坐标依次是97679,曲线经平滑成凸向左边的圆弧。
    任意曲线~的参数,是唯一可以用英文字母的,参数个数原则上无限制(实际受可存贮的字串长度的限制)。它是把写字符的空间,平分为8*7个方格,每个方格的位置指定一个字符表示,如表末尾所示。这样,一个字符串就可连一条折线,如果要多条线,中间可用0隔开(0不是点)。第一个参数a1是数字时,是指定曲线的宽度,如果是字母,则认为a1=0。a1还有区分曲线性质的作用,当a1<5时,曲线是平滑曲线,曲线的宽度等于a1+1;a1>5时,则是折线,宽度等于a1-4。日文片假名就可用这种元笔画生成,如串“~Cb0QLW0dO7ElvX"就会画出“ぁ”。
    这些元笔画可以和汉字笔画、字根、汉字或其他字符本身,再组成更复杂的字符。这时,单个元笔画的结构属性是上下结构。要改为左右结构时,后加结构符“"”。如果加包围结构符“=”,后面的笔画将叠加其上。要调节笔画位置,可用空白符Z,象汉字笔画组字中的z。




     元笔画各参数意义表

元笔画 首符  参数a1       a2       a3       a4        a5
线段   !  直线斜角 (*18)  水平位置(*70)  直线宽度    直线长度(*40)
          0为水平线      垂直位置(*70)  直线宽度    直线长度(*40)
圆孤   @  <6为圆径      圆环宽度1-9 
        -6为开口方向   开口角度(9为U)  圆弧宽度1-9  内圆心偏离程度  整体顺转角度(*5)
螺旋形  &  2顺,1逆,0有圆心   旋线宽=旋线隙   整体顺转角度     
        >=3为一周角数    旋线宽=旋线隙   整体顺转角度     
星形   #  星形的角数(+3)   星形的内圆大小  0       旋转角度
          多角形的角数(+3)  间a2-1角连直线  连线宽度    旋转角度
波形   $  波数        波幅       波线宽度    a4>0,波向垂直
不定形  %  a1指定曲线的特性:奇数,方向垂直,等于1;3;5时,分别为两边;左边;右边已经平滑,否则是折线
                 偶数,方向水平,等于0;2;4时,分别为上下;上边;下边已经平滑,否则是折线          
        第二个数开始的10个数串指定的点组成封闭曲线。第02468和13579个数分别成左右两曲线。
任意曲线 ~  a1<5时为平滑曲线宽度(+1),a1>5时是折线,宽度为a1-4
               任意曲线形由依次的符号点连成,各符号平面位置如下(碰到0则中断):
         1  A  I  Q  a  i  q
         2  B  J  R  r  j  r
         3  C  K  S  c  k  s
         4  D  L  T  d  l  t
         5  E  M  U  e  m  u
         6  F  N  V  f  n  v
         7  G  O  W  g  o  w
         8  H  P  X  h  p  x


           画元笔画的子程序
(略,要查看者请点http://www.chancezoo.org/hz/xsybh.htm)

【作者: chancezoo】【访问统计:】【2005年10月18日 星期二 15:33】【 加入博采】【打印

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=3254402

回复

评论内容: