#------- text_tool_jsawa.doc --------------------------------------- ■ はじめに 本パッチ text_tool_jsawa.diff は gimp 1.0.2 の app/text_tool.c に対する もので 松田さん (matsu@arch.comp.kyutech.ac.jp)が http://arch.comp.kyutech.ac.jp/~matsu/my_products/gtk/ で公開されている gimp-fontset-1998.10.09.patch を適用した text_tool.c に対する差分になっています。 当初は、fontsetのトグル機能がない別のもの [注]を使わせていただいておりまし たが、松田さんのパッチにより fontset のトグルがより有用なことに気付いたため 活用させていただいております。ありがとうございました。 [注] 本パッチを ftp://gum.awa.tohoku.ac.jpの /pub/gimp/text.patch.gz を適用した text_tool.c に あてることは、fontset に関連するところを削除すると 可能です。 ■ 著作権 本パッチ text_tool_jsawa.diff は GPL に従って公開しています。 転載したり、これを取り込んであらたなパッチを作成して公開したりする ことは私への連絡なしに自由に行ってください。 ■ 基礎知識 family_nameという用語の理解が必要なので、御存知の方がほとんどと思います が、説明いたします。 これは、X window systemのフォント命名規則である論理フォント名 (XLFD: XLogical Font Description)の`二番目の'構成要素で、次の場合は -vflib-gothic-black-i-normal--0-0-0-0-c-0-jisx0208.1983-0 gothicがfamily_nameです。 -adobe-helvetica-ナンタラカンタラ なら、helvetica が family_name. VFlib対応サーバ (X-VF) やFreeType対応サーバ (X-TT) をお使いの方は、 日本語TrueTypeフォントを使用していると思います。その際に、ゴシックや明朝に 対応する 論理フォント名をどのようにしているでしょうか。 例えば、VFlib対応サーバの場合、vfontcapにおける明朝体のエントリ名が min で、明朝体のボールド書体が min_b, 明朝体の斜体が min_slとしますと、 foo/lib/X11/fonts/VFlib/fonts.dir というファイルにおいて、 min.vflib -vflib-min-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 min_b.vflib -vflib-min_b-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 min_sl.vflib -vflib-min_sl-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 とはしない方が宜しいです。これだと、明朝体という1つの familyを別々の family_nameでアクセスしなければならなくなるからです。また、太字書体なのに min_b.vflib が `medium'だったり、斜体なのに min_sl.vflib が `r' というのも おかしいですし。 もしも該当する方は、次のように、XLFD流にして下さい。 min.vflib -vflib-min-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 min_b.vflib -vflib-min-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 min_sl.vflib -vflib-min-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0 family_nameは、`min'で統一し、三番目の weight_name (medium, bold等)と 四番目の slant を変えるわけです。このようにすることにより、TEXT TOOLで 日本語フォントの family_nameの1つを選択した際に、weight_name や slant のボタンでフォントを斜体にしたり太字にしたりするのが比較的にスマートに できるようになります。 X-TT の場合も同様ですので、具体的な解説は省略します。 なお、これより以後の文で、`フォント'という言及があればそれは family_nameのこととみなして下さい。 ■ このパッチ (text_tool_jsawa.diff) の目的 gimpに XIMに対応の国際化されたGtkをリンクすると、テキスト入力で日本語 フォントが使用できるようになります。しかし、問題があります。 a. gimpの TEXT TOOL (メニューボタンの`T'をクリックしてテキストを入力の時) 日本語文字(jisx0208.1983-0等)と非日本語文字(iso8859-1等)と を別々に指定できない。timesなどの非日本語文字を指定して、 入力欄にアスキー文字と日本語文字を混在させるとエラーになったり、 文字の大きさが揃わない。逆に、mincho等の日本語文字を指定して、 abcを入力するとabdのみ小さなフォントで表示される。 b. 'Xtns'(拡張)->'Script-Fu'->Logos 等におけるテキスト入力 非漢字のフォントを指定して、非漢字のみ入力するときは問題ないが、 非漢字フォントを指定して、ひらがなや漢字を入力するとエラーに なる。 これらの問題を解決するために、 ◎ デフォルトの日本語フォント(family_name)を環境変数 GIMP_KANJIで指定__できる__ようにし、 ◎ 日本語フォントと非日本語フォントを別々に指定__する__ように しました。 TEXT TOOL で日本語フォントを指定すると、それ以後は非日本語フォントを指定 しても、日本語フォントの指定はそのまま残ります。また、一度も TEXT TOOLで 日本語フォントを指定してない場合は、環境変数GIMP_KANJIが日本語の family_name (font) として使用され、この環境変数が存在しない場合は family_name は mincho とみなされます。 例えば、TEXT TOOL において、helveticaを選択した状態で、 "My name is 山田" と入力すると`山田'には "最後に指定した" 日本語フォントが用いられます。 ロゴ作成などの場合は、TEXT TOOL で最後に指定された日本語フォントが有効 になってますので、非日本語文字はtimesで日本語文字は明朝斜体でなどという ことができます。TEXT TOOL で一度も日本語フォントを指定してない場合は、 環境変数の指定ないしはデフォルト (mincho) のものが使用されます。 ■ X server について 固定ピッチの日本語フォントしか扱えないサーバだと、漢字等を拡大は できますが、ギザギザが目立ってしまいます。VFlib対応ないしはFree- Type対応のものが導入されていることが望ましいです。導入されてない 方は以下のURLからないし以下のURLに記された情報をもとに、バイナリを 入手されてはいかがでしょう。 VFlib対応サーバ: 漢字の回転、斜体など自由自在! OS/2なら、 http://www2s.biblobe.ne.jp/~vtgf3mpr/indxos2.htm FreeBSD, Linux, NetBSD, MkLinux 等の PC-Unixなら http://karin.ip.titech.ac.jp/~takagi/X-VFlib/index.html FreeType対応サーバ(X-TT) FreeBSD, Linux, NetBSD, MkLinux 等の PC-Unixなら http://cclub.cc.tut.ac.jp/~go/unix/xtt.html ■ 仕 様 ○ mincho, gothic, gyosho, fixed 文字の大小の区別なく、これらを含む font_family は日本語フォントと みなされます。 例えば、/somewhere/lib/X11/fonts/以下にあるfonts.dir にて、 -vflib-gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-GOTHIC-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-xx_gothicYY-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 このように二番目のエントリ名(family_name)にgothicを含むので、これは 日本語と判断されます。 -gothic-vflib_goth-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 この場合はそうではありません。 ○文字の大小の区別なく、先頭が "vf_" である font_family も日本語と みなされます。 例: -vflib-vf_marumoji-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 ○デフォルトで、日本語フォントの family_name を `mincho' としています。 ○デフォルトで、非日本語フォントの family_name を `times' としています。 ○デフォルトで, フォントの weight = `medium', slant = `r' としています。 ○ 環境変数 GIMP_KANJIにより、デフォルトの日本語フォントの family_nameを定義できます。 --Unix系の sh 系シェルなら % export GIMP_KANJI=gothic --OS/2でcmd.exeなど sh 系でないシェルなら > set GIMP_KANJI=gothic もしも、 > set GIMP_KANJI= gothic と、`='と`gothic'の間に` '(空白)が入ると、 -vflib-gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 にはマッチせず、 -vflib- gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 でなければマッチしないので、くれぐれも`='の直後に空白を入れないよ うに注意のこと。 ■ パッチが適用された gimp の使用法 (基礎知識の説明と合わせておよみ下さい。) □ X のフォントの準備 a) X サーバがFreeType対応(X-TT)でもVFlib対応(X-VFlib)でもない場合 つまり、固定ピッチの日本語フォントしか使用できない ___このパッチが適用された gimp のメリットは小さい___ foo/lib/X11/fonts/miscなどにある、 fonts.dir, fonts.alias で日本語フォントが定義されていると思います。新たに固定ピッチの 日本語フォントを導入してない限り、`mincho' という family_name のものは存在しないので、 % export GIMP_KANJI=fixed (sh系シェルなら) または > set GIMP_KANJI=fixed (OS/2でシェルが cmd.exeなら) として下さい。こうすることにより、デフォルトの日本語フォントが 存在しない`mincho'と定義されることによるエラーを防ぐことができます。 (Kappaなど 固定ピッチの日本語フォントをインストールしている場合は `mincho' や `gothic' が使えます) b) VFlib対応サーバの場合 family_nameが`mincho'や`gothic'のものを定義し、fonts.dirに登録 してあればオーケーです。 参考までに、gothicの場合の、VFlibとfonts.aliasの設定を示します。 ゴシック書体 : goth.ttf ゴシックボールド書体 : goth_b.ttf これら二つのTruetypeフォントをvfontcapで用いることにします。 i. vfontcapにて、goth.ttfを`goth'で、goth_b.ttfを`goth_b'で参照で きるように定義。 ii. vfontcapにて斜体の定義 goth_ob|goth_it:\ :sl#20:fc=goth: goth_b_ob|goth_b_it:\ :sl#20:fc=goth_b: sl#20 で20度右に傾けるようにしています。`|'に区切られたどの エントリ名でも斜体化されたフォントを参照できます。 iii. /foo/lib/X11/fonts/VFlib/fonts.dirの設定 -- 必須 goth.vflib -vflib-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 goth_ob.vflib -vflib-gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 goth_it.vflib -vflib-gothic-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0 goth_b.vflib -vflib-gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 goth_b_ob.vflib -vflib-gothic-bold-o-normal--0-0-0-0-c-0-jisx0208.1983-0 goth_b_it.vflib -vflib-gothic-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0 `o'は oblique(斜体)、`i'は italicの意味で前者はもともとのフォン トを機械的に傾けたものに対する名称で、italicは最初から斜体として 独自にデザインされたフォントに用いることになっています。この区別 に厳格に従う必要はないので、上記のように定義してしまいましょう。 fonts.dir が完成したら、fonts.scaleという名称のものにコピーします。 iii. /foo/lib/X11/fonts/VFlib/fonts.aliasの設定 -- 必須ではない GIMPを使用する場合は、FREEFONTが導入されていると思います。FREEFONT に含まれるフォントと日本語TrueTypeフォントを適切に関連付けるために fonts.aliasに以下のごとき行を追加。 -vflib-gothic-light-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-light-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-light-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-normal-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-normal-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-normal-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-black-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-bold-o-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-black-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-black-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -vflib-gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 weight_name (三番目のエントリー)のlight, normal, black は VFlib/fonts.dir[scale] では -vflib-gothic-* に対して定義されてない ので、上記のように前二者を -vflib-gothic-medium-*に、最後のものを -vflib-gothic-bold-* に対応させています。 以上のごとく、/foo/lib/X11/fonts/VFlib/の fonts.dir, fonts.scale, fonts.aliasを作成したら、XConfig(OS/2の場合)ないしXF86Configに FontPath "/foo/lib/X11/fonts/VFlib/" を追加して、X を再起動、あるいは、 % xset fp rehash としてフォントの設定の再読み込みを。 iV. -vflib-gothic-* の設定が正しいことを確認 % xfontsel -pattern '-vflib-gothic-*' % xfd -fn '-vflib-gothic-bold-i-normal--20-0-0-0-c-0-jisx0208.1983-0' このようにしてgothicの諸書体が表示されることを確認。成功したら、 明朝体、行書体等についても同様に定義してください。 デフォルトで漢字とみなされるmincho, gothic, gyoshoはぞれぞれ文字どおり に対応させれば良いのですが、教科書体や丸文字などを定義したい場合は、 family_nameの先頭に`vf_'を付加してください。すると、当パッチが適用された GIMPは日本語フォントとして認識します。 例: fonts.alias[scale]にて marumoji.vflib -vflib-vf_marumoji-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 以上、VFlib対応サーバの解説をしました。 c) X-TT (TrueTypeサーバの場合) VFlibの場合と同様にfonts.dir, fonts.scale等を設定することになります。 詳細は X-TT の web page の情報等を参照のこと。 □ 使い方 1. フォントの準備が整ったら、X を起動。 % startx -- -bpp 16 -deferglyphs all このように、'-deferglyphs all'を指定することにより、必要な文字だけをラス タライズするようにした方がいいです。 2. 環境変数: X-VFやX-TTでない X サーバーを使用なら、デフォルトの漢字フォント mincho のままではうまくないので、 % export GIMP_KANJI=fixed (sh系シェル) > set GIMP_KANJI=fixed (OS/2 cmdシェル) とでもしてください。もちろん、gyoshoに指定したり, お好きなように できます。ただし、もう一度念押ししますが、family_nameが大文字小文字 の区別なく、gothic, minchoないしgyoshoを含んでいるか、あるいは "vf_"から始まる family_name が存在してないとこの指定は意味を持ちませ ん。 3. GIMP の起動 Unix系なら、 % gimp OS/2なら > gimp --no-xshm (あるいは付属のバッチファイルを) ------- ここから先の説明は実際にGIMPを動かしながら読んでください ----- _________ gothic, mincho などの family_name で日本語のスケーラブル フォントが使用できるようになっており、なおかつボールド書体 および斜体が使用できるようになっている前提で解説します_______ 4-a1. TEXT-TOOLでの文字入力 / using fontset `File'->`New'(新規)ないし Crtl + n で新しいキャンバスをオープン。 GIMPのボタン`T'をクリックしてテキスト入力モードにします。 キャンバスの任意の位置でマウスの左ボタンをクリックすると、ダイアログ ボックスが出現します。 FREEFONTを導入している方はフォントファミリー名の`agate'にフォーカス が当たっていると思います。まず、"abc"などとアスキー文字を入力。最初は 50 pointになっているので、その大きさで"abc"が表示されるでしょう。 では漢字を入力するために、Shift + Space ないし Ctrl + Space でkinput2 を起動してください。"山"など漢字を入力して確定し、kinput2を起動キーと同じ 操作で終了させます。 <注> kinput2による日本語文字列の確定に失敗するなど、kinput2の 反応がなくなったら、マウスで(クリックするなどにより)入 力欄にフォーカスをあてるとよろしいでしょう。 この時点で漢字は mincho が使われていると思います。もしも、環境変数 GIMP_KANJIで別の family_nameが指定されていたら当該フォントで表示されて いるはずです。如何に? 日本語フォントに GIMP_KANJIで fixed を指定していると、ギザギザが目立ち ますが、X-VFないしX-TTで、日本語TrueTypeを mincho等に割り当てていると 美麗な 50 ポイントの漢字書体が表示されていることでしょう。 もしかしたら、この時点で漢字のみ斜体になっているかも知れませんが、すぐ に修正できます。 では、日本語だけフォントを変更しましょう。 family_name 欄をスクロールさせて、gothic にフォーカスをあててください。 漢字の部分のみゴシック体になったと思います。もしも、予想に反して斜体表示 なら、右半分にあるボタン slant で `r'を選択すると、今度はきちんと直立した 文字が表示されます。同様に weightで `bold'を選択すると斜体のボールド書体 に変化するはずです。 漢字の部分のみ斜体ボールドとなり、英字部分は agate のままですね。 では、英字のみ書体変更します。family_name 選択で今度は helveticaに フォーカスをあてると、英字部分のみ helvetica に変化します。ここで、`bold' など字体を変化させるようにすると、英字部分のみ変化するはずです。 このように、日本語フォントと非日本語フォントを別々に指定できます。 4-a2. TEXT-TOOLでの文字入力 / not using fontset この項目は、松田さん (matsu@arch.comp.kyutech.ac.jp)の gimp-fontset-1998.10.09.patch についての解説です。 すでにお気付きのことと思いますが、antialias のトグルボタンの右に fontsetというボタンがあります。これはデフォルトでオンになっています。 fontsetによるフォント指定では、一度に日本語と非日本語のフォントを 同時に指定できます。このボタンをクリックして、fontsetを使わないように すると、フォント(family_name)は一度に一種類のみしか使用できないかわり に symbol(family_name)など LANG=ja_JP.ujis等では使えないフォントを用 いることができます。フォントはいろいろありますが、symbol と nil 以外 では無効にする必要がないようです。 4-a1 からここまで実行できた方は、fontsetを押して fontset使用を解除して みてください。漢字の部分が文字化けしていると思います。 5. Script-Fu 関連での日本語入力 マウスで'Xtns(拡張)'->`Script-Fu'->`Logos(ロゴ)'と表示させて、 どれか1つロゴ作成メニューを選択してください。 使用するフォント欄はそのままにして、テキスト入力欄に、例えば、 "abc漢字"と入れます。次いでロゴを作成してください。"abc"は指定された 書体になっています。さて、"漢字"の部分はどうなっているでしょうか。 a) TEXT TOOL による日本語フォントをデフォルトから変更してないなら、 デフォルトの日本語フォントが使用されます。 b) TEXT TOOL により最後に指定された日本語フォントがデフォルトのもの と異なっていれば、当該フォントで作成されます。 c) TEXT TOOL で fontset を無効にしていれば、日本語の部分は文字化け するか、エラーになります。従って、TEXT TOOL で一度 fontset を無 効にしてから、日本語を含むロゴを作成する時は、fontset を使用する ように戻しておかねばなりません。 ここまでで解説しきれてないことを、最後に補足します。 ● 日本語フォントの family_name, weight_name (bold, medium等) および slant (r, i, o) を一度設定すると、変更しない限り TEXT TOOL や ロゴ作成のscript-fuで有効になる。family_name のみ 記憶されるのではない。 ● 日本語フォントの family_name を選択した時、当該フォントの 斜体や太字体も存在する場合は、weight と slant も明示的に TEXT TOOL において指定した方が良い。 ● 非日本語フォントの family_name, weight_nameおよび slantも 記憶される。したがって、TEXT TOOLで最後に設定した非日本語 フォントが -*-times-bold-i-* の時、ロゴ作成のフォントに 日本語 family_name として mincho を明示的に指定し、テキスト 入力欄に "abc漢字" と入れると、abc の部分は timesのボールドイタリック体に なる。 ただし、"漢字"の部分は斜体や太字体になってしまうことがある ので、ロゴ作成等では 非日本語フォントの指定を明示的に行い、 日本語フォントの指定は、weight_nameとslantまで含めて、 あらかじめ TEXT TOOLにおいて指定しておいた方が良い。このこと はロゴに日本語しか使わない場合においても同様である。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ■ ビルドの手順 詳細は、http://www2s.biglobe.ne.jp/~vtgf3mpr/gimp.htm 参照のこと □ gtk 1.0.6 のパッチあて 1) http://www.hi-ho.ne.jp/~asura/gtk/ より、 gtkconv-1.0.6.tgz 2) http://arch.comp.kyutech.ac.jp/~matsu/my_products/gtk/ より gtktext-mb-i18n-1998.09.17.patch xim-1998.10.26.patch □ gimp 1.0.2のパッチあ て 同じく、http://arch.comp.kyutech.ac.jp/~matsu/my_products/gtk/ より gimp-fontset-1998.10.09.patch そして、本パッチを あてて、gcc 等のコンパイラのオプションに、 -D__EMX__ をあたえてメイク。 以上。 1998.11.9 沢田石 順 jsawa@ibm.net http://www2s.biglobe.ne.jp/~vtgf3mpr/indxos2.htm #------- End of a file ----------------------------------------------------