スケルトンデータ

primdata 以下のファイルに入っています。BNF風に書いてみることにします。なお、Lisp言語では、

(A . (B C))  =  (A B C)
(A . () ) = (A)

であることを注意してください。

ファイルにはスケルトンデータの定義が並んでいます

skeleton-defs = 
              |skeleton-def skeleton-defs

デフォルトの定義は、setqで、書体固有の定義はdefprimitiveで行います

skeleton-def = (setq symbol 'skeleton)
             | (defprimitive fonttype symbol 'skeleton)

スケルトンデータは、点の定義、エレメント定義、スケルトン属性からなります

skeleton = (points elements . skeleton-attributes)

点の定義はx座標、y座標、点属性からなります。左上を(0,0) 右下を(400,400)とする座標系です。

points = ()
       | (point . points)
point = ( x y . point-attributes )
x = INT
y = INT 

点属性には今のところ、link-ok(その点が他のエレメントに接続可能)がありますが、 これは、スケルトンエディタで利用するためのもので、アウトライン生成の際は使いません。

point-attributes = ()
                 | (point-attribute . point-attributes)
point-attribute = (link-ok BOOL)

エレメントの定義はエレメントの種類、制御点、エレメント属性からなります

elements = ()
         | (element . elements)
element = (element-type element-points . element-attributes)

エレメントの種類は、以下の通りです

element-type = ten | tate | yoko | hidari | tatehidari | tatehane 
             | magaritate | kokoro |  kozato | shin-nyuu
             | outline | hira-circle | hira-long

制御点は pointsのインデックス(0から開始)のリストで表します。多くのエレメントは 制御点の数が固定ですが、outline, hira-longなどは可変長です。

element-points = ()
                | (element-point . element-points)
element-point = INT

エレメント属性は属性名と属性値の連想リストで実現されます。

element-attributes = ()
                   = ((attribute-name . attribute-value) . element-attributes)

文法としてはこれ以上規定していませんが、主なエレメント属性には以下のものがあります。 :link:このエレメントの途中に接続する他のエレメントの点 :hirawidth:hira-longで使われる。各制御点付近での線幅 :curve:outlineで使われる。制御点のうち、前後がなめらかに接続する点のelement-points中のインデックス

スケルトン属性も属性値と属性値の連想リストで実現されます。

skeleton-attributes = ()
                    | ((attribute-name . attribute-value) . skeleton-atributes)

文法としてはこれ以上規定していませんが、主なスケルトン属性には以下のものがあります。

:tateheight:部品を組み合わせる際の単位高さ :yokowidth:部品を組み合わせる際の単位幅 :updown:??? :center:縦方向に組み合わせる際に中心合わせをおこなうX座標 :width:??? :kamae:内部に部品を入れる部品(例、「くにがまえ」「まだれ」、「しんにゅう」)の場合、入れる場所の目安(最適な位置をプログラムで求めるが、その初期値に使う) :kamae2:内部に複数部品を入れる部品(例、「繭の下」)の2つめの部品を入れる場所の目安。

組合せデータ

jointdata以下のファイルに入っています。

ファイルには組合せデータの定義が並んでいます

joint-defs = ()
           | joint-def joint-defs

デフォルトの定義は、setqで、書体固有の定義はdefjointで行います

joint-def = (setq symbol 'joint)
          | (defjoint fonttype symbol 'joint)

組合せデータは組合せの種類の後に、joint-dataのリストが並びます

joint = (joint-type . joints)
joints = ()
       | joint joints

組合せの種類としては以下のようなものがあります。

joint-type = tate|yoko|kamae|kamae2|nyou|tare

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-04-03 (火) 22:43:06 (3647d)