[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mgp-users-jp 00923] Re: Some problems on `--enable-freetype-charset16'
- To: mituharu@math.s.chiba-u.ac.jp
- Subject: [mgp-users-jp 00923] Re: Some problems on `--enable-freetype-charset16'
- From: nishida@csl.sony.co.jp
- Date: Fri, 11 Jan 2002 18:09:28 -0800 (PST)
- Cc: mgp-users-jp@mew.org
- Delivered-to: mailing list mgp-users-jp@mew.org
- In-reply-to: <>
- Mailing-list: contact mgp-users-jp-help@mew.org; run by ezmlm
- References: <>
ありがとうございます。
2つとも対応してみました。こんな感じです。
*** tfont.c.orig Fri Jan 11 18:02:45 2002
--- tfont.c Fri Jan 11 17:56:25 2002
***************
*** 590,596 ****
#endif /* FREETYPE_CHARSET16 */
#if 1 /* latin2-4 encoding processing */
! if (code > 0xa0) {
if (registry)
regid = get_regid(registry) -1;
else {
--- 590,596 ----
#endif /* FREETYPE_CHARSET16 */
#if 1 /* latin2-4 encoding processing */
! if (code > 0xa0 && code < 256) {
if (registry)
regid = get_regid(registry) -1;
else {
***************
*** 602,608 ****
--- 602,615 ----
}
#endif
+ /*
+ * For freetype 1.4, suggested by mituharu@math.s.chiba-u.ac.jp
+ */
+ #if TT_FREETYPE_MAJOR == 1 && TT_FREETYPE_MINOR == 4
+ return TT_Char_Index(char_map, (u_short) code);
+ #else
return TT_Char_Index(char_map, (short) code);
+ #endif
}
#ifdef FREETYPE_CHARSET16
else {
--
西田佳史 nishida@csl.sony.co.jp
From: mituharu@math.s.chiba-u.ac.jp
Subject: [mgp-users-jp 00919] Some problems on `--enable-freetype-charset16'
Date: Tue, 25 Dec 2001 12:37:50 +0900
Message-ID: <>
mituharu> 千葉大の山本です。
mituharu>
mituharu> magicpoint 1.09a で --enable-freetype-charset16 を指定してコンパイルし、
mituharu> ftp://www.mew.org/pub/MagicPoint/ttf.tar.gz にあるフォントを使用したと
mituharu> きに文字が正しく表示されない場合がいくつかありましたので報告します。
mituharu>
mituharu> 1. tfont.c で
mituharu>
mituharu> if (code > 256)
mituharu> code = unicode_map[code];
mituharu> #endif /* FREETYPE_CHARSET16 */
mituharu>
mituharu> #if 1 /* latin2-4 encoding processing */
mituharu> if (code > 0xa0) {
mituharu> if (registry)
mituharu> regid = get_regid(registry) -1;
mituharu> else {
mituharu> if (mgp_charset)
mituharu> regid = get_regid(mgp_charset) -1;
mituharu> }
mituharu> if (latin_unicode_map[regid][code])
mituharu> code = latin_unicode_map[regid][code];
mituharu> }
mituharu> #endif
mituharu>
mituharu> return TT_Char_Index(char_map, (short) code);
mituharu>
mituharu> という部分がありますが、code = unicode_map[code] で Unicode に変換
mituharu> した後にその下の #if 1 /* latin2-4 encoding processing */ 〜 #endif
mituharu> の部分でさらに latin_unicode_map による変換が行われてしまう場合があ
mituharu> ります。(実際には配列の外を見てしまいますが。) 「#endif /*
mituharu> FREETYPE_CHARSET16 */」 の直前に else を入れれば回避できますが、
mituharu> #ifdef の部分が中途半端になってあまり良くないと思いますのでもう少し
mituharu> 整理した方がいいかもしれません。こちらでは Mac OS X (+ XFree86) と
mituharu> いう環境で問題が起きました。
mituharu>
mituharu> 2. RedHat 7.2 でコンパイルすると一部の文字が truetype フォントではなく
mituharu> X のフォントで表示されてしまいます。原因は上のソースコードの最後の
mituharu>
mituharu> return TT_Char_Index(char_map, (short) code);
mituharu>
mituharu> で、freetype 1.3.1 の freetype.h では
mituharu>
mituharu> EXPORT_DEF
mituharu> TT_UShort TT_Char_Index( TT_CharMap charMap,
mituharu> TT_UShort charCode );
mituharu>
mituharu> となっていて問題無いのですが、RedHat 7.2 に入っている freetype 1.4
mituharu> の freetype.h では
mituharu>
mituharu> EXPORT_DEF
mituharu> TT_UShort TT_Char_Index( TT_CharMap charMap,
mituharu> TT_ULong charCode );
mituharu>
mituharu> となってしまっているために符号拡張が起きてしまいます。(short) code
mituharu> を (u_short) code にすれば回避できます。
mituharu>
mituharu> RedHat 7.2 に入っている freetype 1.4 は正式リリースではなさそうなの
mituharu> でこれに合わせるべきかどうかという問題はありますが、一応報告してお
mituharu> きます。
mituharu>
mituharu> 山本 光晴
mituharu> mituharu@math.s.chiba-u.ac.jp