このガイドは、フォント関連でよく起きる問題を簡単に説明するとともに、問題の背景や、よくとられる解決策を紹介するものです。このガイドで説明しているのは、OpenOffice.org version 641Dと1.0のLinux版およびSolaris版で発生する問題です。以前のヴァージョンをお使いで何らかの不具合が生じた場合は、最新の安定版にアップデートしてみて下さい。最新版ではその不具合が既に解消されている場合があります。
このガイドは、みなさんのお役に立つように書いたつもりですが、完全で間違いのないものだとは言い切れません。作業は現在も進行中です。改善または訂正すべき点や追加希望事項などありましたらdev@gsl.openoffice.orgまでメールを下さい。
<訳注>メールは英語でないとたぶん分かってもらえないと思います。
なお、説明中の<openoffice_dir>は、OpenOffice.orgのインストール先ディレクトリを意味します。
目 次
- フォントがアンチエイリアス表示されない
- フォントのアンチエイリアス表示を無効にするには
- アンチエイリアスされたフォントが次回起動時にリストから消えている
- スクリーンフォントのラスタライズの品質が悪い
- OpenOffice.orgにTrueTypeフォントまたはType1フォントを追加するには
- アプリケーションがクラッシュする
- pdf文書のフォントが汚い
- ユーザインターフェースフォントが乱れる
- ユーザインターフェースフォントを変更するには
- フォント関連のバグを報告するには
フォントがアンチエイリアス表示されない
症状
フォントがアンチエイリアス表示されず、ギザギザになる。
問題の背景
Openoffice.orgは、FreeTypeによってレンダリングされるフォントだけでなく、XFontsも使用します(FreeTypeについては後で説明します)。FreeTypeでラスタライズされたフォントはアンチエイリアス表示が可能ですが、XFontsについてはアンチエイリアス表示はできません。
また、どんなディスプレイでもアンチエイリアス表示が可能なわけではありません。アンチエイリアス表示をするには、Xサーバ(XServer)のXレンダリング拡張(X Rendering extention)による方法か、ウィンドウからイメージを取得したりウィンドウにイメージを貼り付けたりすること(XGetImage/XPutImage)でテキストを描画する方法のいずれかが利用できなければなりません。
トラブルシューティング
XFontsはアンチエイリアス表示されません。ですから、ユーザインターフェースのフォント表示がギザギザになるからと言って、アンチエイリアシングが機能していないと結論づけるのは早計です。インターフェースのフォントは形状で選ばれるのであって、アンチエイリアス可能なものが優先されるわけではないのです。
アンチエイリアス可能なフォントがあるかどうかチェックするには、OpenOffice.org Writer文書を開いてみて下さい。簡単なチェックだけなら、フォントリストボックスを開いてフォント一覧に目を通せばいいでしょう。全フォントを完璧に調べたいのなら、「書式->文字」ダイアログを開いて「フォント」タブを選びます。ここでは、利用可能な全フォントをスタイルの違い(標準、太字、斜体、...)まで含めて選択できます。もし、アンチエイリアス表示されたフォントが1つでも見つかったら、基本的にアンチエイリアス機能は有効になっていると言えます。それでも疑わしいと思われるなら、表示中のフォントサンプルを xmag で拡大してみるといいでしょう。OpenSymbolという名前のフォントが一覧にあるなら、それを拡大表示してみて下さい。アンチエイリアスがかかっているでしょう。ちなみに、OpenSymbolはOpenOffice.orgに同梱されたフォントで、正常ならアンチエイリアス表示されるはずです。
きちんとアンチエイリアス表示されるようにするには、XFree86のヴァージョン4.0.2, 4.0.3, 4.1または4.2(あるいはそれ以降)を使いましょう。また、OpenOffice.orgでは、Xレンダリング拡張とXinerama拡張(Xinerama extension)<訳注参照>とが同時に検出された場合は、アンチエイリアス表示が無効になります。さらに、色深度が8ビットのカラーディスプレイ(8bit PseudoColor visuals)をお使いの場合も、アンチエイリアス表示は無効になります。
お使いのXサーバがXレンダリング拡張をサポートしているかどうか調べるには、 xdpyinfo コマンドを実行し、その出力結果の中で拡張機能(extensions)の一覧を探し、RENDER という文字列があるかどうか確認して下さい。また、MozillaやKDEアプリケーションでアンチエイリアス表示ができているのなら、そのことがXレンダリング拡張が機能していることを強く示唆していると言えます。
Xinerama拡張が有効かどうか調べるには、やはり xdpyinfo コマンドを実行し、今度はXINERAMAという文字列があるかどうか確認します。
色深度が24ビットあるいは32ビットのディスプレイや8ビットグレースケールのディスプレイを使っている場合は、XGetImage/XPutImage方式によってテキストがアンチエイリアス表示されます。
フォントサイズが小さいとアンチエイリアス表示されません。テキストのアンチエイリアス表示の閾値は「ツール->オプション->OpenOffice.org->表示」ダイアログで変更することができます。「スクリーンフォントの縁を滑らかにする」ボックスにチェックを入れてから、その下のフィールドの数値を変更して下さい。
このフォントはアンチエイリアス表示されるはずなのにそうなってくれない、というようなフォントがある場合には、そのフォントが正しくシステムに追加されているかどうか確認して下さい(後の項目を参照)。
関連項目
フォントのアンチエイリアス表示を無効にするには
「ツール->オプション->OpenOffice.org->表示」ダイアログを開き、「スクリーンフォントの縁を滑らかにする」ボックスのチェックを外して下さい。「OK」ボタンを押してダイアログを閉じると、変更が直ちに画面に反映されます。
アンチエイリアス表示されたフォントが次回起動時にリストから消えている
症状
最初にOpenOffice.orgを起動した時にはOSが管理するフォントやOpenOffice.orgのインストール先にインストールされたフォントが使えたのに、2回目以降の起動時にはフォントが一覧から消えてしまっている。
問題の背景
現在、フォントキャッシュ<openoffice_dir>/share/psprint/pspfontcacheを解析するコードに、フォント属性の値を正しく取得できないというバグがあります。スタイル属性が太字や斜体のフォントはアンチエイリアス表示可能ですが、標準スタイルのフォントはアンチエイリアス表示されません。ほとんどの場合、標準スタイルのフォントがXサーバから取得した同タイプのフォントで置換されてしまうために、アンチエイリアス表示されなくなるようです。
回避方法
この問題を回避するには、フォントキャッシュファイルを削除し、次回以降にそのファイルが作成されないようにする必要があります。まず、OpenOffice.orgの全てのインスタンスを閉じた後、シェルまたはターミナルを起動し、OpenOffice.orgのインストール先ディレクトリに移動して下さい。OpenOffice.orgをマルチユーザインストールした場合、つまり、コマンドライン引数に/netまたは-netを付けてインストールした場合は、ユーザインストール時に指定したインストール先ディレクトリに移動して下さい。次に、移動先ディレクトリで次の表の通りコマンドを実行して下さい。
| シングルユーザインストール | マルチユーザインストール |
|---|---|
| rm share/psprint/pspfontcache | rm user/psprint/pspfontcache |
| touch share/psprint/pspfontcache | touch user/psprint/pspfontcache |
| chmod 444 share/psprint/pspfontcache | chmod 444 user/psprint/pspfontcache |
コマンドを実行した後、OpenOffice.orgを再起動すると、もう問題は起きなくなっているはずです。OpenOffice.orgを閉じて、もう一度起動してみましょう。もし問題が再び発生していたら、次のコマンドを実行してみて下さい。
| シングルユーザインストール | マルチユーザインストール |
|---|---|
| ls -l share/psprint/pspfontcache | ls -l user/psprint/pspfontcache |
先の手順に間違いがなければ、下の例のように、pspfontcacheのファイルサイズはゼロ、パーミッションは書き込み不可になっているはずです。
-r--r--r-- 1 joe user 0 May 2 12:32 pspfontcache
関連項目
- この問題についてはIssuezillaで最新情報が得られます。IssuezillaのNo.4336をご覧下さい。
スクリーンフォントのラスタライズの品質が悪い
症状
TrueTypeフォントが画面上でぎざぎざになったり、角ばったり、文字間隔がおかしくなったりする。MozillaやGnomeやKDEアプリケーションでは、同じフォントが実に綺麗に表示されるのに。
問題の説明
OpenOffice.orgでは、フォントのラスタライズにFreeTypeライブラリを利用しています。FreeTypeライブラリは、auto-hintingが有効、byte-hintingが無効という条件でコンパイルされています。auto-hintingでもかなりよいグリッドフィッティング効果が得られるのですが、byte-hintingに比べるとまだまだというフォントが多いのが現状です。この問題については、The FreeType Projectのサイトにある説明をご覧下さい。
トラブルシューティング
現状ではこの問題の回避方法はありません。文字の可読性を高めるためにグリフのアンチエイリアシングをグラフィック表示段階で行う機能をサポートしているXサーバをお使いになることをお勧めします。
OpenOffice.orgにTrueTypeフォントまたはType1フォントを追加するには
症状
- システムにインストールされているはずのフォントがOpenOffice.org Writerのフォントリストボックスに出てこない。
- TrueTypeまたはType1としてインストールしたから当然アンチエイリアス表示されると思っていたフォントがアンチエイリアス表示されない。アンチエイリアシング機能は有効になっているはずなのに。
問題の背景
OpenOffice.orgが使用するフォントには主に2つの供給源があります。1つはXサーバ(レガシーな代物ですね)。Xサーバから取得したフォントは画面表示だけに使用されます。もう1つは、ファイルから読みこまれたFreeTypeフォントとType1(PostScript)フォント。これらのフォントはFreeTypeライブラリによってラスタライズされ、画面表示と印刷の両方に使用できます。同じフォントがどちらの供給源からでも取得可能な場合は、FreeTypeによりラスタライズされたものが優先されます。
OpenOffice.org Writerでは、画面表示と印刷の両方に使用可能なフォントだけが表示されます。Xサーバから供給されるフォントは印刷には利用できないのでフォントリストボックスには出てきません。もしそれがリストに出てくるとしたら、そのフォント名と同じ名前のフォントが選択中のプリンタに搭載されているからです(Helvetica, Times, Courierのような標準的フォントは事実上あらゆるモデルのPostScriptプリンタで利用可能です)。
フォントを追加するには
OpenOffice.orgの全アプリケーションが利用できるようにフォントをインストールには、ファイルシステムにフォントがあるだけで十分です。OpenOffice.orgは次のディレクトリでフォントを探します。
| Solaris | Linux | |
|---|---|---|
| 1 | 下記ディレクトリ /usr/openwin/lib/X11/fonts/Type1 と /usr/openwin/lib/X11/fonts/Type1/sun | 下記ディレクトリ /usr/X11R6/lib/X11/fonts/Type1 |
| 2 | 下記ファイルに記載のディレクトリ(ロケールに依存) /usr/openwin/lib/locale/<locale>/OWfontpath | 次のコマンドが出力するディレクトリ /usr/sbin/chkfontpath または chkfontpath |
| 3 | 関数XGetFontPath()の返り値が示すフォントパス(fontpath) | Solarisと同じ |
| 4 | 環境変数SAL_FONTPATH_PRIVATEによって与えられるディレクトリ。 通常、この変数はsoffice Scriptによって次のようにセットされる <openoffice_dir>/share/fonts/truetype | Solarisと同じ |
フォントが上記ディレクトリのいずれかにインストールされていれば、OpenOffice.orgで利用可能です。フォントパス(fontpath)は、Xサーバがフォントを探すディレクトリをコンマ区切りで並べたリストです。注意して欲しいのは、(4)にもあるように<訳注>、OpenOffice.orgはこのパスもサーチしますので、結果として、Xサーバが調べるのと同じフォントファイルを調べるということです(ただし、Xサーバが同じマシン上で動いている場合の話です)。従って、お使いのローカルマシンのXサーバにフォントをインストールするだけで、OpenOffice.orgでそのフォントを利用するのには十分というわけです。
<訳注>原文 "as given in (4)" ですが、"as given in (3)" が正しいかも知れません。
もし、OpenOffice.orgだけで使えるように(つまり、Xサーバからは使用できない形で)フォントを追加したいのであれば、spadminユーティリティを使ってOpenOffice.orgのインストール先ディレクトリ(<openoffice_dir>/share/fonts/truetype)にフォントを追加して下さい。spadminによるフォントの追加方法はセットアップガイドに記載されています。
Xサーバにリモート接続しているディスプレイで追加フォントを確実に利用できるようにしたい場合も、spadminを使ってフォントを追加して下さい。フォントパスはXサーバが動いているマシン上になければ有効になりません。従って、追加フォントは、お使いのローカルマシンにインストールするか、XサーバとOpenOffice.orgとの共有ディレクトリにインストールするのが無難です。
自宅ユーザなら多分Xサーバをローカルマシン上で動かしているでしょう。そういう場合はそのマシンのフォントパスにフォントを追加するだけで十分です。
トラブルシューティング
OpenOffice.orgは、バイナリエンコードされたType1フォント(拡張子 .pfb )とテキストエンコードされたType1フォント(拡張子 .pfa )の両方を扱うことができますが、このとき、フォントに対応するAdobe Font Metricファイル(AFM)もいっしょにインストールする必要があります。AFMファイルは、ベース名をフォントファイルと同じにして(例:フォントファイル名がTimes.pfaならAFMファイル名はTimes.afm。同様に、Helvetica.pfbにはelvetica.afm)、フォントファイルと同じディレクトリか、afm という名前のサブディレクトリにインストールして下さい。
フォントがきちんとインストールできているか確信が持てないときはフォントキャッシュファイルを調べるといいでしょう(ネットワークインストールの場合は user/psprint/pspfontcache、シングルユーザインストールの場合は share/psprint/pspfontcache )。かなり読みづらい代物ですが、このファイルにはOpenOffice.orgが前回の起動時に認識した全てのファイル名が記載されています。このファイルは、削除しても大丈夫ですが、勝手に書き変えることのないように気を付けて下さい。
関連項目
アプリケーションがクラッシュする
症状
- sofficeコマンドやsetupコマンドを実行してもアプリケーションが起動しない。
- フォントリストボックスの中身を見るとアプリケーションがクラッシュする。
問題の背景
FreeTypeのラスタライザがフォントファイルの読込や解析を行う際、セグメンテーション違反が起きることがあります。この問題がよく起きるのは、TrueTypeフォーマットの仕様に厳密に準拠していないフォントを使っている場合です。
トラブルシューティング
クラッシュの原因には様々なものがあり得ますから、まず、それがフォント絡みの問題なのかどうかはっきり確かめることが重要です。それには、使用フォントを最小設定にリセットしてみるといいでしょう。Linuxなら、次のように xset コマンドを実行することでフォントパスを制限するといいでしょう。
xset fp /usr/X11R6/lib/X11/fonts/100dpi,/usr/X11R6/lib/X11/fonts/75dpi,/usr/X11R6/lib/X11/fonts/Type1,/usr/X11R6/lib/X11/fonts/misc
なお、上のコマンドは1行で入力し、パスと","(コンマ)との間には空白を入れないようにして下さい。OpenOffice.orgはXFontsのコアフォントセットでのテストを十分に行っていますので、上の通りフォントパスを制限すればフォント絡みのクラッシュは起きないはずです。それでももしクラッシュするようなら、問題はおそらくフォント以外のところにあります。
次にすることは、どのフォントがクラッシュを引き起こしているのか突き止めることです。よく使うのは次のような方法です。まず、次のコマンドでフォント設定を元に戻します。
xset fp restore
フォント設定を元に戻すと、クラッシュは当然再発します。次に、フォントパスを
xset -q
で表示させます。以下のコマンド
xset fp+ <path>
xset fp- <path>
を使えば、フォントパスに対してパスの追加・除外ができますので、これを使って、先に表示したフォントパスから1つずつディレクトリを外していきます。ある時点でクラッシュが起きなくなったら、その直前に除外したディレクトリに問題のフォントが存在するということになります。なお、フォントパスを変更したら、その都度OpenOffice.orgを再起動して下さい。
見付かったディレクトリの中のどのフォントが問題なのかを突き止めるには、まず、そのディレクトリにある全フォントを書込許可のある別のディレクトリにコピーし、コピー先のディレクトリをフォントパスに追加するとともに元のディレクトリをフォントパスから除外します。そして、コピー先のディレクトリから別のディレクトリへフォントファイルを1個あるいは数個ずつ移動しながら、移動の都度OpenOffice.orgを再起動します。ある時点でクラッシュが起きなくなったら、その直前に移動したフォントファイルの中にバグのあるフォントが存在するということになります。
問題のフォントが特定できたらIssuezillaにバグレポートを提出して下さい。
関連項目
- xsetコマンドに関する詳しい情報はmanpageをご覧下さい( man xset で見ることができます)。
PDF文書のフォントが汚い
症状
Acrobat ReaderでPDF文書を表示すると、内容は基本的に正しく表示されるが、テキストがアンチエイリアス表示されず、ラスタライズが粗くて読みにくい。
問題の背景
PDF文書の作成は2ステップで行われます。すなわち、まずファイルをPostScriptの一時文書として出力し、その一時文書をPDF文書に変換するわけです。この方法ですと、フォントを正しくレンダリングするのに必要な情報を両方の文書に埋め込まなければなりません。このフォント情報の埋め込みがどう行われるかが、最終的な文書品質に大きく影響するのです。TrueTypeの形状情報を解析できる高機能プリンタドライバを使えば、TrueTypeフォントをType42形式で埋め込むことができます。Type42はghostscriptやacrobat distillerで解析可能な形式ですので、PDF文書でも情報が保たれます。GENERICドライバではType42形式の埋め込みができず、強制的にType3形式のフォント情報が生成されてしまいます。そして、このフォント情報がPostScriptからPDFへの変換時にグラフィック表示に変換されてしまうために、表示品質が落ちるのです。
トラブルシューティング
PDF文書の出力にはGENERICドライバを使わず、Distillerドライバか、HP5やXeroxのような比較的新しいプリンタのドライバを使うようにしましょう。
関連項目
- プリンタ管理とPDF文書作成の全般についてはセットアップガイドをご覧下さい。
ユーザインターフェースフォントが乱れる
症状
RedHat Linuxユーザから、OpenOffice.orgのメニューとユーザインターフェースの文字がほとんど読めなかったり、全く表示されないことさえあるという苦情があった。
問題の背景
RedHat Linux 7.2にはulT1mo latin2というフォント群が同梱されていますが、そのうちの1つが Arial としてインストールされているため、OpenOffice.orgがそれをユーザインターフェース用フォントとして選択することがよくあります。
トラブルシューティング
試しに、ulT1mo latin2フォントのディレクトリをフォントパスから削除してみて下さい。これで問題が解消するケースが結構あります。
まず、お使いのシステムのフォントパスに上記ディレクトリへのパスが含まれているかどうか調べましょう。シェルで xset -q コマンドを実行し、 FontPath: セクションにあるリストに /usr/X11R6/lib/X11/fonts/latin2/Type1 が入っているかどうか確認して下さい。
もし上記ディレクトリがリストに入っていたら、 xset fp- <path_to_dirrectory> コマンドを実行してそのディレクトリをフォントパスから外した後、OpenOffice.orgを再起動し、問題が解消したかどうか確認して下さい。そのディレクトリが常にフォントパスから除外されるようにするには、Xサーバの設定ファイル(通常、/etc/X11/XF86Config-4ディレクトリにあります)を編集する必要があります。
フォントサーバをお使いの場合は、chkfontpathコマンドを実行し(chkfontpathがだめなら /usr/sbin/chkfontpath)、出力結果に上記ディレクトリへのパスが出てくるかどうか確認して下さい。このパスを外すにはフォントサーバの設定ファイル(通常、/etc/X11/xfs/configです)を編集する必要があります。設定を変更したらフォントサーバを再起動します(rootになって/etc/rc.d/init.d/xfs restart を実行して下さい)。
注意
システム設定を変更する前に、念のためシステム管理者に確認をとるようにして下さい。また、変更前には必ず設定ファイルをバックアップしておきましょう。
関連項目
ユーザインターフェースフォントを変更するには
OpenOffice.org builds 641に基づくヴァージョン(OpenOffice.org 1.0も含まれます)では、ユーザインターフェースのフォントを変更するオプションは特に設けていません。ですが、フォント置換機能を利用してフォントを変更することはできます。まず、メニューから
ツール->オプション->OpenOffice.org->フォントの置換
を選択して、「置換テーブルを使う」にチェックを入れます。そして、
Andale Sans UI
をお好みのフォントと置換して下さい。多分、「フォントの種類」側のフォントリストボックスを開いても Andale Sans UI は見つからないでしょうから、フィールドに Andale Sans UI と手入力して下さい。「置換侯補」側では、ドロップダウンリストボックスでどれかフォントを選んで下さい。その後、「OK」ボタンを押せば、設定が直ちに画面に反映されます。
フォント関連のバグを報告するには
OpenOffice.orgにバグを報告する場合は下記URLにあるガイドラインに従って下さい。
http://www.openoffice.org/project_issues.html
特に、http://www.openoffice.org/bugs/bug_writing_guidelines.htmlをよくお読み下さい。
ただ、フォント関連のバグの報告に関しては、ガイドラインで指示された情報に加えて以下のような情報があると助かります。
まず、ディスプレイの設定をお知らせ下さい。 xdpyinfo コマンドを実行すれば丁度よくまとまった情報が出力されますので、その出力結果をメールに添付すればいいでしょう。もしリモートディスプレイ接続をお使いなら(つまり、OpenOffice.orgの動いているマシンとは別のマシンでXサーバが動いているなら)、その旨明記して下さい。
次に、フォントパスの設定をお知らせ下さい。今度は xset -q コマンドの出力結果をメールに添付すればいいでしょう。フォントサーバをお使いなら chkfontpathコマンドも実行しましょう。もしこのコマンドをシェルまたはコマンドインタプリタで実行できなかったら、 /usr/sbin/chkfontpath とやってみて下さい。
それから、お使いのLinuxのディストリビューションもお知らせ下さい。もしディスプレイまたはデスクトップ関連のアップデートを適用したことがあれば、その旨明記して下さい(Xサーバをアップデートした、KDEまたはGnomeのデスクトップを変えた、など)。
ディストリビューションに同梱されていないフォントを追加したことがあれば、その旨明記して下さい。