Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 12c (12.2.1.2) E82763-01 |
|
前 |
次 |
フォントに関する問題がアプリケーションで生じた場合の解決に役立てるために、この項では、次のトラブルシューティング情報について説明します。
PostScriptファイル内で目的のフォントが使用されているかどうかの確認
PostScriptファイルには、PPDファイルを読み取った後、フォントのリストが作成されます。PostScriptファイルで次のタグを検索すると、フォントを確認できます。
DocumentNeededResource
には、PPDファイル内で参照されるフォントのリストが記述されています。
DocumentSuppliedResource
には、PostScriptドライバによってAFMファイルを見つけることができたフォントのリストが記述されています。
フィールドの%IncludeResource:font
の前にある%%Page
パラグラフには、そのフィールドで使用されるフォントの名前が記述されています。
PCL出力ファイルの場合は、特定のフォントが使用されているかどうかを確認できます。この情報に応じて、Oracle Reportsまたはプリンタのフォント設定を変更できます。
例:
次に示すのは、Lexmark Optraプリンタに基づくテストの結果です。フォントとその番号および制御コマンドは例であり、他のプリンタではこれとは異なる場合があります。
フォント情報 Lexmarkのプリンタには、使用可能なすべてのフォント(PCLエミュレーション・フォント)を印刷するメニュー・オプションがあります。これには、常駐フォント(デフォルト)とフラッシュ・フォント(プリンタに別途インストールされる)の両方が含まれます。
表9-6 フォント情報の例
フォント名 | スタイル | 太さ | 出力の例 |
---|---|---|---|
R0 Courier |
0 |
0 |
... <ESC>(<symset><ESC>(s0p<pitch>h0s0b4099T... |
R39 Courier Bold |
0 |
3 |
... <ESC>(<symset><ESC>(s0p<pitch>h0s3b4099T... |
R40 Courier Italic |
1 |
0 |
... <ESC>(<symset><ESC>(s0p<pitch>h1s0b4099T... |
R55 Century Schoolbook Roman |
0 |
0 |
... <ESC>(<symset><ESC>(s1p<point>v0s0b24703T ... |
表9-7 フラッシュ・フォント情報の例
フォント名 | シンボル・セット | スタイル | 太さ | 出力の例 |
---|---|---|---|---|
F2 OCR-A |
0O |
0 |
0 |
... <ESC>(0O<ESC>(s0p<pitch>h0s0b4200T ... |
F3 OCR-B |
1O |
0 |
3 |
... <ESC>(1O<ESC>(s0p<pitch>h0s0b4206T ... |
これらの例では、ほかにも多数のフォントがあり、それぞれ異なるコードが定義されています。たとえば、OCRBのコードは4206です。この番号の重要性については後述します。
出力の作成
正しいフォントが使用されない問題がある場合は、レポートを単純化します。つまり、出力を単純なものにします。これを行うには、select sysdate from dual
という問合せを使用し、フォントの数を少なくして単純なレポートを作成します。これにより実行時間が短くなり、出力ファイルのサイズも大幅に縮小されます。
出力ファイルの読取り
作成されるPCLファイルはバイナリ・ファイルですが、テキスト・エディタである程度まで読み取ることができます。最初の短い部分と最後の部分はバイナリですが、中間部分のデータは読取り可能です。
出力ファイルの検証
注目する必要のある情報は、ファイルの中間部分にある読取り可能なデータのみです。テキストを見つけて(これがレポート出力に表示されるテキストです)、そのテキストの直前の部分を確認します。
これは次のようになります。
....;SD1,14,2,0,3,10.34,5,0,6,0,7,4099;LB here is your text
この例では、フォントにはコード4099のものが選択されています。Lexmarkのプリンタでは、Courierが選択されます。
別の例として、フォントOCR-B(コード4206)が必要である場合を考えます。選択されたテキストの直前にこのコードが生成されていなければ、このフォントでは表示されません。これは次のようになります。
....;SD1,14,2,0,3,8.57,5,0,6,0,7,4206;LBThis is OCRB font....
印刷フォントの修正
出力ファイル内のコードは正しいけれども、プリンタでそのフォントが印刷されない場合は、そのフォントがプリンタでは使用できない状態にある可能性があります。この問題は、出力ファイル内のコード(TFMファイルから得られます)が、プリンタで処理可能なものと異なる場合にも発生します。このような場合、Lexmarkのプリンタでは、これらのフォントがプリンタのデフォルト・フォントによって置き換えられます。
フォントに対応するコードが出力ファイルにない場合、Oracle Reportsによってそのコードが出力ファイルに生成されなかったことを示しています。HPDファイルおよびTFMファイルを確認してください。
環境変数の確認
DEBUG_SLFIND
を利用すると、使用されたファイルを確認できます。フォントに関しては、アプリケーションがプリンタ定義ファイルを読み取った後に検索したAFMファイルおよびTFMファイルのリストと、エイリアス処理後に読み取ったフォント・ファイルを調べることができます。この方法では、あるフォントがマップされているかどうかを調べることもできます。通常は、次の順序でファイルの読取りが行われます。
最初にプリンタ定義ファイルを読み取ります。
このプリンタ定義ファイルで指定されているフォントに対応するフォント・ファイルをすべて読み取ります。
エイリアス・ファイルを読み取ります。
フォントのマッピングがある場合は、そのフォントのフォント情報ファイルを読み取ります。出力生成に使用されるフォントについては、最後にもう一度AFMファイルを読み取ります。
TK_DEBUG_POSTSCRIPT
は、PostScript出力に影響を及ぼします。これには、次の文字列の任意の組合せを設定できます。
Functionsを指定すると、コールされる個々のツールキット関数がPostScript出力のコメントとして出力されます。
Longを指定すると、量が多く時間もかかりますが、理解しやすいPostScriptが生成されます。
Memoryを指定すると、各ページの下部にメモリー使用率が表示されます。
これらのオプションはいずれも、環境変数内で指定するときに1文字に短縮できます。またこれらのオプションは、"/"で区切って自由に組み合せることができます。この環境変数では、大文字と小文字は区別されません。たとえば、すべてのオプションを使用するには、Func/L/Mem
のように指定します。
この変数を使用して生成された出力を顧客向けに使用することは、オラクル社によるサポートの対象外です。これは、診断目的にのみ使用してください。
注意: 環境変数DEBUG_SLFIND を任意のファイル名に設定してレポートを実行します。デバッグ情報は、その特定のファイルに書き込まれます。
使用方法: 詳細は、付録B「環境変数」を参照してください。 |
Webソース・ビューで正しく表示されないフォントの修正
Oracle Reports Builderのユーザー・インタフェースのテキスト(ウィンドウのタイトルなど)には、現行の言語に対応するシステム・リソース・ファイルから取得したフォントが使用されます。これらのシステム・リソース・ファイルは、Oracle Reportsのインストレーションに含まれています。Oracle Reportsでは、uifont.ali
の[rwbuilder]
セクションでこれらのフォントのマッピングを指定できます。マップされているフォントが見つかった場合は、元のフォントのかわりにそのフォントが使用されます。見つからなかった場合は、元のフォントが使用されます。
注意: マップされたフォントは固定幅フォントである必要があります。 |
レポート・エディタのWebソース・ビューでは、アラビア語、中央ヨーロッパ言語、キリル語、ギリシャ語、ヘブライ語、日本語、タイ語、トルコ語などが文字化けして表示されることがあります。uifont.ali
でOracle Reports Builderのフォント名を次のように設定することで、この問題を回避できます。
[rwbuilder] .....AR8MSWIN1256="Courier New" .....CL8MSWIN1251="Courier New" .....EE8MSWIN1250="Courier New" .....EL8MSWIN1253="Courier New" .....IW8MSWIN1255="Courier New" .....JA16SJIS="MS Gothic" .....TH8TISASCII="Andale Duospace WT" .....TR8MSWIN1254="Courier New"
Andale Duospace WT(固定幅)フォントは、My Oracle Support(http://support.oracle.com
)からダウンロードできます(パッチID 2766564)。
制約事項の理解
Windowsの場合:
Unicodeでは、True Type Big Fontを提供しています。これらのフォントには、複数の言語によるテキストの表示や印刷に必要な文字が含まれています。たとえば、西ヨーロッパ言語、中央ヨーロッパ言語およびアラビア語のテキストをフィールドに入力、表示または印刷したときに予期しない文字が出力された場合は、Big Fontを使用していない可能性があります。Microsoft Windowsでシングルバイト言語に用意されているBig Fontは、Arial、Courier NewおよびTimes New Romanです。詳細は、http://www.microsoft.com/typography/fonts/default.aspx
を参照してください。
Wingdingsフォントは、NLS_LANG
がUTF8
に設定されているときは表示されないことがあります。
Wingdingsフォントの中でUTF8の使用時に表示可能なものは、ASC 32から127の文字のみです。ASC 252はUTF8ではサポートされていないため空白表示されます。
この問題に対処するには、次のいずれかのフォント・セットを使用します。
Webdings - chr(97)
Wingdings2 - chr(80)
Wingdings2 - chr(87)
UNIXの場合:
AFMがサポートされるのは、日本語エンコードを除き、シングルバイトのPostScriptファイル生成時のみです。AFMファイルに対してサポートされるコード体系は、AdobeStandardEncoding
、ExtJIS12-88-CFEncoding
、FontSpecific
、HRoman
、ISOLatinHebrew
、JIS12-88-CFEncoding
およびJIS12e-88-CFEncoding
です。
サポート対象のAFMのバージョンは2.0です。
X11では、フォント属性として下線はサポートされません。ファイルへの出力は、後述する手順に従って行われます。
JDKでは、不具合によって太字の韓国語フォントが適切に表示されません。Oracle Reports ServicesではJREが使用されているため、太字の韓国語文字列がレポート内のグラフで使用されていると、すべて正しく表示されません。
PostScriptを印刷する場合、プリンタへのフォントのロードは行われません。したがって、目的のフォントが印刷結果に出力されるようにするには、そのフォントがプリンタにインストールされていることを確認する必要があります。
PCL出力の場合は、TFMフォント・フォーマットのみサポートされます。
UNIXのディスプレイ・システム(X11など)は、特定のアプリケーションやプリンタには一切依存しません。印刷と表示の間には、直接の関係はありません。画面に表示されるフォントが印刷されない場合もあります。
ディスプレイ・フォントとプリンタ・フォントにはいくつかの類似点もありますが、それ以上の相違点があります。
Xフォント(ディスプレイ・フォント)はビットマップの表示用絵文字であり、XサーバーによってXターミナル上に表示されます。
プリンタ・フォントはPostScriptフォント、つまりフォントを数値として表したものでビットマップではありません。このフォントはPostScriptプリンタ内に存在し、プリンタ上のPostScriptインタプリタによって生成されます。
テンプレートを適用すると、フォント・サイズが変更されることがあります。
例えば、テンプレートを作成してフォントをサイズ10のTimes New Romanに設定し(すべてのフィールドが対象)、レポートでこのテンプレートを使用するように設定した場合でも、レポート・エディタのペーパー・デザイン・ビューで表示されるフォントのサイズが変更されていることがあります。
これは、デフォルト設定のレイアウトでは目的の領域内に収まらない場合に行われます。
最初にテキスト・フィールドのサイズが縮小され、次にフォントのサイズが縮小されます。このようにすれば、テンプレートのフォント・サイズを維持してフィールドを折り返すよりもよい結果を得ることができます。
また、テンプレートを使用する場合に、テンプレートで指定されたものとは異なるフォントが選択されることがあります。これは、最初に文字セットの比較が行われるためです。したがって、テンプレートのフォントが現行の文字セットをサポートしないものである場合は、サポートするフォントに変更されます。これは、特にヘブライ語またはアラビア語環境で英語のテンプレートを使用した場合にはっきりとわかります。
共通の問題の解決
問題: ラベル・レポートを印刷すると、右マージンの文字が切り捨てられる
Windowsマシン上で郵便ラベル・レポートを印刷したのですが、各行の最後の数文字が切り捨てられていることがわかりました。レポートのプレビューでは、これらの文字は欠けてはいませんでした。ページのフォーマットとフォント設定を変えてみましたが、問題は解決しません。
解決策: PreviewをDESTYPE
にしてレポートが正しく表示されるのであれば、プリンタ・ドライバの問題ではありません。この問題の原因として、枠のプロパティが考えられます。
レイアウト・オブジェクトを囲む枠の水平拡張度が「固定」に設定されており、データの長さが枠のサイズを超える場合は、このようなデータの切捨てが発生します。
「水平拡張度」プロパティを、「拡張」または「可変」に設定してみてください。
問題: ファイルをHTMLCSSとして生成すると、列の1つが出力から欠落する
レポートをHTMLCSSファイル形式として出力しており、レポート・エディタのペーパー・デザイン・ビューでは問題なく表示されています。新たに作成されたファイルをクリックしてブラウザに表示されるレポートを確認すると、最後の列がレポート出力の中にありません。
レポートを再度実行すると、ペーパー・デザイン・ビューでは問題なく、最後の列も本来の位置に表示されます。このファイルをもう一度クリックしたときに、最後の列がレポート出力から脱落しているようです。PDFは、ペーパー・デザイン・ビューとAdobe Acrobat Readerで問題なく表示されます。
解決策:
Oracle Reports Builderおよびその他の実行中のアプリケーションを閉じます。
Windowsの「コントロール パネル」→「画面」→「設定」を選択します。
フォントを「小さいフォント」に設定して「適用」ボタンをクリックし、「OK」をクリックしてWindowsのフォント設定を変更します。
コンピュータを再起動して、新しいフォント設定を有効にします。
ここで、Windowsの「コントロール パネル」→「画面」→「設定」に戻って、システムのデフォルトとして小さいフォントを設定していることを確認できます。
HTMLCSSファイルをクリックすると、ブラウザにレポートが正しく表示され、すべての列が欠けることなく表示されます。
HTMLCSSファイルをブラウザで表示するときは、Windowsシステムのデフォルト設定として「小さいフォント」を選択しておくことをお薦めします。
大きいフォントがデフォルトで設定されている場合、HTMLCSSファイルが正しく表示されないことがあります。
問題: Oracle Reports Builderで、8ポイントより小さいビットマップ・フォント・サイズを選択する方法
解決策: レポートによっては、フォント・サイズを6ポイント以下にする必要があることもあります。フォントのマッピングおよびサイズ設定は、実際にはオペレーティング・システムのフォント・ファイルと、ドライバまたはプリンタの指定の両方によって実現されるものであるため、多くのフォントで6ポイント以下などの小さなフォント・サイズを指定することが可能です。
Oracle Reportsでは一般に、フォント・サイズを8まで小さくできます。このように設定するには、Oracle Reports Builderでレポートを開き、レイアウト・モデル・ビューに切り替えて、変更対象のレポート・オブジェクトを選択します。オブジェクトが選択されている状態で、フォント選択ボックスの横のリストからフォント・サイズを選択します。
一般に、選択できるサイズはTrueTypeフォントの場合は8から72、その他のフォントの場合はこれより少なくなります。
リストにあるサイズよりも小さいサイズや大きいサイズを入力できます。これを行うには、もう一度オブジェクトを選択して、カーソルをフォント・サイズ・フィールドに置き、[Delete]キーを押してサイズの数値を削除し、目的のフォント・サイズを入力して[Tab]キーを押します。変更は即座に反映されます。
この場合も、すべてのフォント・サイズを指定できるとは限らないことに注意してください。また、フォントと属性の組合せによっては実際に使用できないものもあります。あるフォント・サイズを選択できたとしても、印刷したときにそのフォントを読み取ることができるとは限りません。小さいフォント・サイズを指定し、さらに太字やイタリックなどの属性を組み合せた場合も、プリンタ・ドライバ、プリンタ、フォント・メトリック、言語、コード・セット、NLS_LANG
および人間の視覚などの制約が原因で、印刷または表示したときに読取り不可能の問題が発生することがあります。
問題: レポート出力でのフォント・サイズが、WindowsとUNIXとで異なる
Windows上で設計した単純なレポートで、サイズ8のArialフォントを使用しています。このレポートをSun Solarisに移植したときに、Solaris上の出力ではフォント・サイズが変更されていることがわかりました。UNIX環境では、レポートにフォント・サイズ9のHelveticaを使用しています。UNIX上では、Arialフォントは同等のフォントであるHelveticaにuifont.ali
を使用してマップされています。
解決策:
まず、xlsfont
コマンドなどのUNIXのフォント・ユーティリティを使用して、UNIXシステム上のHelveticaで使用可能なフォント・サイズを調べます。
Windowsの可変サイズ・フォントを、UNIXの可変サイズ・フォントにマップします。たとえば、WindowsでのマッピングをArial.8 = Helvetica.8
に変更し(UNIXシステム上でHelveticaに対してサイズ8が使用可能であることが前提)、uifont.ali
が正しいディレクトリにあることを確認します。
マシンにインストールされているHelveticaフォントがビットマップ(ラスタライズ済)であることが考えられますが、その場合は、任意のサイズに自動的に拡大または縮小することはありません。これに該当する場合は、拡張性に優れたType1フォントをインストールすれば、どのようなポイント・サイズでも選択できるようになります。
システムが異なれば、インストールされているフォントが同じであっても、フォント間の差が発生する可能性は常にあります。これは、システムによってフォント構成ファイルが異なるためです。
問題: 印刷時に、フォントが非TrueTypeフォントによって置き換えられる(ペーパー・デザイン・ビューでは、フォントの問題は発生しない)
解決策: プリンタ設定(詳細)を調べて、次のような指定がないことを確認します。
True Type Font: Substitute with Device Font
UNIX
問題 Oracle ReportsをX-Windowsエミュレータ上で実行しているときに、UNIXにインストールされているフォントがフォント検索ボックスに表示されない
解決策 X-Windowsエミュレータではフォント・パスは通常、ローカル・マシン上のフォント・ディレクトリになります。インストール済のフォントは使用できず、Oracle Reportsのフォント検索ボックスでは、ローカルのフォント・ディレクトリにあるフォントのみ使用されます。このような場合は、フォントがインストールされているリモート・マシン上でフォント・サーバーを起動し、フォント・パスのエントリがこのフォント・サーバーを指すようにします。フォント・サーバーの起動およびフォント・パス・エントリの設定の詳細は、システムのマニュアルおよびX-Windowsエミュレータのヘルプを参照してください。