[Efont-devel] Re: FF+CLWFK のバグ・未実装機能

Back to archive index

Hidetaka Iwai tyuyu****@debia*****
2005年 5月 2日 (月) 21:15:39 JST


岩井です。

KANOU Hiroki <kanou****@khdd*****> wrote:
Message-ID: <20050****@arash*****>

> > 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 点の物が最初の
> パターンで、こざとへんの膨らみをよりよく表現するために点を追加したのでは
> ないでしょうか。

今ちょうど不慣れな CMUCL の debugger を使って同じ結論に到達したところ
です;) renderer/mincho.l で

  (defelement mincho kozato
    (let* ((...snip...)
           (p3 (cadddr points))
           (p3 (grid (plus2 p3 (normlen2 w (diff2 p1 p2))) dotsize))

で p3 が nil になるために前述のエラーが発生しました(gothic でもほぼ同
様です)。 fontforge/sfd.c の num_points_in_strokes[] を 3 から 4 に修
正することで、新たに作成した「こざとへん」では無事肉付けできるようにな
りました。

また、別の不具合になりますが、fontforge/charview.c について、
stroketypelist[] の userdata が hira_long から実際の配列の index とず
れているために、アウトラインビューで[点]->[ストローク情報]でストローク
タイプに kamae 以降の項目を選ぶとSIGSEGV になります。

regards,
--
 Hidetaka Iwai
 tyuyu****@debia*****
-------------- next part --------------
diff -urN tmp2/fontforge/sfd.c tmp/fontforge/sfd.c
--- tmp2/fontforge/sfd.c	Mon May  2 18:33:42 2005
+++ tmp/fontforge/sfd.c	Mon May  2 20:19:11 2005
@@ -4832,7 +4832,7 @@
 };
 const int num_points_in_strokes[num_enum_stroke] = {
     2, 2, 2, 3, 3, 4, 3,
-    3, 3, 4, 2, 4, 4, 
+    4, 3, 4, 2, 4, 4, 
     3, 3, 3,
     0,
     -4, -4, -4, -4, -4,
-------------- next part --------------
--- tmp2/fontforge/charview.c	Mon May  2 18:33:42 2005
+++ tmp/fontforge/charview.c	Mon May  2 18:24:21 2005
@@ -5311,12 +5311,12 @@
   { (unichar_t *) "shin-nyuu", NULL, 0, 0, (void *)13, NULL, 0, 0, 0, 0, 0, 0, 1},
   { (unichar_t *) "magaritate", NULL, 0, 0, (void *)14, NULL, 0, 0, 0, 0, 0, 0, 1},
   { (unichar_t *) "kagi", NULL, 0, 0, (void *)15, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "hira_long", NULL, 0, 0, (void *)20, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "kamae", NULL, 0, 0, (void *)22, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "kamae1", NULL, 0, 0, (void *)23, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "kamae2", NULL, 0, 0, (void *)24, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "nyou", NULL, 0, 0, (void *)27, NULL, 0, 0, 0, 0, 0, 0, 1},
-  { (unichar_t *) "tare", NULL, 0, 0, (void *)28, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "hira_long", NULL, 0, 0, (void *)16, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "kamae", NULL, 0, 0, (void *)17, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "kamae1", NULL, 0, 0, (void *)18, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "kamae2", NULL, 0, 0, (void *)19, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "nyou", NULL, 0, 0, (void *)20, NULL, 0, 0, 0, 0, 0, 0, 1},
+  { (unichar_t *) "tare", NULL, 0, 0, (void *)21, NULL, 0, 0, 0, 0, 0, 0, 1},
   { NULL }
 };
 


Efont-devel メーリングリストの案内
Back to archive index