テーブルの内容のフォントがあまりに汚いので、原因を調べた。M+フォントを入れた影響かもしれない。
まず、JAVA_HOMEがopenjdkの方を向いていた。sunのものにしておけば長年の利用実績があるので安心である。

それから、このマシーンのOSやソフトはFedora 7-8あたりからのアップデートであるので、IPAフォントを一旦uninstallし、そしてinstallした。
自然に治ってしまった(原因不明)。また私が変更したのか、squirrel-sql.shがJAVA_HOMEがない場合の処理が誤っていたので、修正した。(これは、もともとのインストーラが作成したものであった。したがって以下のように修正した。)


#! /bin/sh
echo "JAVA_HOME is $JAVA_HOME"
if [ -n ${JAVA_HOME} ] ; then
echo "JAVA_HOME is set." ;
JAVA="${JAVA_HOME}/bin/java";
elif [ -r /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre ] ; then
echo "JAVA HOME is not set but openjdk exists." ;
JAVA=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
else
echo "neither..."
JAVA=java
fi
以下省略
echo " JAVA is $JAVA"

以下がその他フォントをIPAPGothicで利用している様子。

その後確認をしたら、やはりM+フォントを~/.fontsディレクトリ(なければ作成すること)にコピーしたのでそこを調べると、

$ ls
COPYING.font.ja M+2P+IPAG-circle.ttf Makefile.in ipam.ttf
M+1P+IPAG-circle.ttf M+2P+IPAG.ttf ipag.ttf ipamp.ttf
M+1P+IPAG.ttf M+2VM+IPAG-circle.ttf ipagp.ttf
M+1VM+IPAG-circle.ttf Makefile.am ipagui.ttf

という形で入ったのが分かった。

fc-listでは問題がなかったのに、大変不思議である。エンコードとかの問題であるかもしれないので、font-forgeで調べようと思う。
mplus(http://mix-mplus-ipa.sourceforge.jp/)を入れる前後でのフォントの全種別(http://www.javadrive.jp/tutorial/font/index3.htmlを参考にしました。)の様子:

最初のほうの画面にはIPA関係のフォントが入っていない。

IPA関係のフォントが入っている。

javaで検証するには、

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
 Font fonts[] = ge.getAllFonts();

でフォントの配列を取得すればいい(懐かしい!)。

このM-PLUSのほうのipag.ttfはビットマップフォントが3種類(12,14,16point?)入っていた。
ttfの方はUnicodeBmpというタイプでotfのファイルの方はUnicodeFullというような区別がされていた。

以下はFontForgeで2つのフォントのUnicode範囲を調べている画面である。

ipag.ttfの場合:

ipag.otfの場合

2010-02-14 後書
ge.getAllfonts() 部分を -Dsun.java2d.debugfonts=true でデバッグ’してみました。

Feb 14, 2010 9:35:24 AM sun.font.FontManager initialiseDeferredFont
INFO: Opening deferred font file /usr/share/fonts/ipa-mincho/ipam.otf
Feb 14, 2010 9:35:24 AM sun.font.FontManager registerFontFile
WARNING: Unusable font: /usr/share/fonts/ipa-mincho/ipam.otf java.awt.FontForma\
tException: Bad native name /usr/share/fonts/ipa-mincho/ipam.otf
Feb 14, 2010 9:35:24 AM sun.font.FontManager findFont2D
INFO: Search for font: Lucida Sans Regular
Feb 14, 2010 9:35:24 AM sun.font.FontManager initialiseDeferredFont
INFO: Opening deferred font file /usr/share/fonts/dejavu/DejaVuSansMono-BoldObl\
ique.ttf
Feb 14, 2010 9:35:24 AM sun.font.TrueTypeFont open
INFO: open TTF: /usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
Feb 14, 2010 9:35:24 AM sun.font.FontManager addToFontList
INFO: Add to Family DejaVu Sans Mono, Font DejaVu Sans Mono Bold Oblique rank=2
Feb 14, 2010 9:35:24 AM sun.font.FontManager registerFontFile

このようにBad native nameという例外が発生しているようなのだ。うまくいっているフォントのほうはaddToFontList処理に進んでいる。
実は、gnuの方のjavaになっていたので以上のエラーが発生していた。しかし、それを修正しても、やはりaddtoFontListにまではすすんでない。

以下は別問題であると思う。

たしかにfontforgeでこれらのoftフォントを開いた時にエラーがでていたようだ。

名前に関係していると思われる部分。

一見うまくいっていると思われるnplus側のほうだが、

またその名前関係の表示

どうもotfファイルを処理していないのではないか?と疑ってみた(javaのj2seのソースにそれを扱うところがなかったので)。そこで、このfontforgeの機能を使ってotf==>ttfの変換をしてみた。
TTC/OTFからTTFへの変換
に詳しい。ひとつだけ変換してみた。ipag.otf ==>IPAGothic.ttfになったが、これは認識して問題がなかった。きちんとフォント選択ダイアログに表示された!
実際にはこのfontforgeの変換の際にいろいろと規格にあっていないと文句を言われるが…
今まではfallbackというディレクトリを作成し、あるフォントが見つからないとかという場合にそこから見つけるようにシンボリックリンクをはって設定をしていた。