KANOU Hiroki
kanou****@khdd*****
2005年 5月 2日 (月) 19:40:32 JST
狩野です。 岩井さん、問題点のご指摘ありがとうございました。 > 1. アウトラインビューから[ファイル]->[書き出し] でフォーマットを > Skeleton として出力したときに、グリフ名が UTF-8 で出力されますが、 > CLWFK で利用することを考えると EUC-JP で出力できた方が便利ではない > でしょうか? (fontforge/prefs.c で EUC-JP がコメントアウトされている > のは何故でしょう?) EUC-JP 回りの定義ですが、最初からコメントアウトされていたみたいです。 http://cvs.sourceforge.net/viewcvs.py/pfaedit/pfaedit/pfaedit/prefs.c?r1=1.48&r2=1.49 「ujis」が何だか分からなかったので、とりあえず #if 0 したのかもしれません。 FontForge のコード変換回りについては、去年の10月28日に内蔵のライブラリから iconv を使うように変更されたので、このコードがどれだけ使われているかは 調べてみないと分かりません。 コード変換は、書き出しだけなら char *pi = utf8buf, *po = iconvbuf; iconv_t cvt = iconv_open("EUC-JP", "UTF-8"); size_t ileft = strlen(utf8buf), oleft=sizeof(iconvbuf); iconv(cvt, pi, &ileft, po, &oleft); puts(iconvbuf); で済みますけど、読み込みはもう少し面倒なので、読み込みルーチンを先に すっきり整理してからにしようと思っています。 > 2. prim-sample.l の「こざとへん」を CLWFK で肉付けしようとするとエラー > になります。このとき生成された lisp code と backtrace を添付します。 ちゃんと見てはいないんですけれども、 > (kozato (4 5 6))) が原因ではないかと思います。grep kozato primdata/*.l してみると、kozato の後ろの点リストが 4 要素の物と 3 要素の物があります。3 点の物が最初の パターンで、こざとへんの膨らみをよりよく表現するために点を追加したのでは ないでしょうか。 一般に、平仮名用の hira-long などを除いて、ストロークに含まれる点の個数は 決まっています。リストで指定した点の個数が多すぎるのは単に無視される だけで問題ありませんが、少ないとご指摘のようなエラーが発生します。 こざとへんは prim-patch.l と prim-kozato.l にも定義されています。 prim-kozato.l から定義を切り取って試したところ、ちゃんと動作しました。 prim-patch.l は、xlimit の行をコメントアウトすれば読み込めます。 (xlimit の構文とその使用法については、現在調査中です) このあたりの、重複していたり、実際に生きていないデータの整理も、コードを 読みながら進めたいと思っています。 ちなみに、FF+CLWFK の現在のバグや未実装機能のリストは以下の通りです。 CLWFK 本体の機能追加やデータ整備についてはここには含まれていません。 行頭の数字は優先順位 (1が再優先) /難易度 (5 が最も難しい) の 5 段階評価です。 ・全体構成 2/2 独立した [skeleton font] モード このモード以外では動作を標準品の FontForge と互換にしなければならない。 ・プリミティブエディタ 2/4 リンクポイントと折れ点との間は点線で結ぶ 折れ点と折れ点との間は実線で結ぶ 3/4 リンクポイントかつ折れ点 (ストロークの端以外) を設定できるようにする 3/2 xlimit,ylimit,center の設定 3/4 xunit,yunit を適切な GUI で表示 3/3 kamae 定義が邪魔にならないようにする せめて点線にするなどして、重なっているストロークを見やすくしたい。 4/2 ストロークの種類に応じた線の表示色変更 現在、文字による表示を行っているが分かりにくい。 5/4 ストローク名の賢い配置 始点を共有するストロークの名前が重なり合わないようにしたい 3/4 ストロークの種類に応じた点の個数の制限 点を追加するとき、ストロークごとに定められた個数を超えると リンクポイント扱いになる。 5/4 スケルトン部品パレットの表示 [一] [乙] [丶] [ノ] などの表示のあるツールを専用のパレット上に (部品の種類だけ)追加する。 5/5 マジックストロークツール 自動的にストロークの種類を判別するツールをパレット上に追加する。 5/4 端点が近辺のストロークにスナップする機能 余計かも。 4/3 複数ストロークに対するストローク情報ダイアログの同時適用 複数の決定があれば、デフォルトは空欄に。 4/2「明朝を表示」「ゴシックを表示」をトグルモードにする 再表示時に自動的に CLWFK を呼び出せるように。 ・組合せエディタ 2/5 組合せエディタ ・ファイルI/O 1/3 xlimit,ylimit などの読み込み 2/3 SFD ファイルへのスケルトン情報保存 2/4 (defprimitive mincho/gothic) で定義したプリミティブも読み書き できるようにする 4/3 解析できない部分のコメント保存 5/3 漢字コード変換 iconv を使うこと。 ・ダイアログ 3/2 プリミティブの名前を編集したら文字名を修正 ・CLWFK とのインターフェイス 3/3 CLWFK の呼び出し前にエラー回復ファイルを作る その他の危ない操作も同様。 4/4 CLWFK が結果を返さない場合タイムアウトしてエラーメッセージを出す ・CLWFK 3/5 例外をちゃんと投げられるようにする 5/3 コンパイル時の警告をなくす コンパイラのバグっぽい奴もある。 ・FontForge 5/5 日本語のタイトルバー表示 Xt の内部ではどのような処理をしているのか? 5/3 ファイルピッカーで .. を連続でダブルクリックしても上のディレクトリに 動いてくれない よそをクリックする必要があるようである。 ・テスト 3/4 Windows でのコンパイル Lisp インタプリタと組合せて動かないとあまりうまみがない。 ・エラーチェック 3/3 CLWFK を呼ぶときに、ストロークの点の個数を確認 kozato に点が 3 つしかないとか。 3/3 kamae 類のチェック kamae2 があって kamae1 がないとか, kamae と kamae1 があるとか。 ・リファクタリング 4/2 lisp 読み込みルーチン バッファを統合したほうが読みやすいと思う。機能追加の前に整理。 ・バグ 1/3 bBuildSkeleton() が渡す引数がおかしい c->curfv はFontView である。FontView 内で選択された最初の文字 (SplineChar)を渡すようにしなければおかしい。 1/3 プリミティブ「象」が正しく読み込めない 3/4 「塗りつぶし」の灰色領域と、ゴシックの肉づけの位置が微妙に異なる 縱画・横画だけの文字なら一致してよさそうなものだが… ・手抜きを直す 3/4 アンドゥが正しくできるようにする 狩野 宏樹 <kanou****@khdd*****>