Home • ChemFormatter • iText.NET • JFreeChart.NET • ConcatPDF • iTextFront • TIFF2PPT • J by J# • Programming J#
MSN Search

iText.NET

iText .NET
@SourceForge
ライセンス
更新履歴
ダウンロード
使い方
J# Examples
C# Examples
VB.NET Examples
コンパイル
ConcatPDF
iText (Java)
J by J#

SourceForge.net Logo

 

フォントの取得

iText でサポートされているフォント
PDF Reference Manual の第5章の最初で、テキストステートが扱われており、(5.4 節から始まる)第二部でフォントが説明されています。iText で Font オブジェクトを扱う方法を知りたいのならば、Font オブジェクトの章を先に読んでください。この章では、必要なフォントがどこにあるかを説明します。
先頭に戻る
ビルトインフォント
PDF は、14個の標準フォントについては、前提なしに使用できると規定しています。これらは、三つのラテン文字のタイプフェースがそれぞれ四つのフェースを持ったもの、および、二つの特殊文字フォント(Symbol と ITC Zapf Dingbats ®)です。これらのフォント、あるい同じメトリクスである利用可能な代替フォントは、すべての PDF エンドユーザアプリケーションで利用能と考えてよい。
これらの、'Base14 Fonts'は歴史的には、iText で最初にサポートされたフォントです。iText.jar の中を見てみれば、com/lowagie/text/pdf/fonts ディレクトリにこれらのフォントの AFM ファイルが見つかります。AFM は、Adobe の ASCII ベースのファイルフォーマットでありフォントのメトリックス情報が可読データとして保存するために使われています。iText では、これらのファイルを読むことにより、幅、カーニング、そのほか文字(正しくはグリフ)のメトリックスに関係する情報を得ます。
Font AFM file
Courier Courier.afm
Courier Bold Courier-Bold.afm
Courier Italic (Oblique) Courier-Oblique.afm
Courier Bold と Italic Courier-BoldOblique.afm
Helvetica Helvetica.afm
Helvetica Bold Helvetica-Bold.afm
Helvetica Italic (Oblique) Helvetica-Oblique.afm
Helvetica Bold と Italic Helvetica-BoldOblique.afm
Times Roman Times-Roman.afm
Times Roman Bold Times-Bold.afm
Times Roman Italic Times-Italic.afm
Times Roman Bold と Italic Times-BoldItalic.afm
Symbol Symbol.afm
ZapfDingBats® ZapfDingbats.afm
同じタイプフェース(Courier、Helvetica、Times Roman)の異なるフェース(標準、太字、斜体、太字斜体)は、異なるフォントして取り扱われます。
先頭に戻る
Fonts from files:
TTF ファイル (TrueType フォント)
TrueType フォントフォーマットは、Apple Computer、Inc.により開発され、Microsoft Windows オペレーティングシステムの標準フォントフォーマットとして採用されています。'C:/WINDOWS/FONTS' ディレクトリにたくさんの TTF ファイルを見ることができます。これらのフォントは iText で読むことができます。これは、どのオペレーティングシステムを使っているかは問題ではなく、フォントに残っている著作権を侵害していない限り(このような場合、iText は例外を発生します)、INUX や Apple のコンピュータの TTF ファイルも使うことができます。
Example: java com.lowagie.examples.fonts.getting.TrueType
Using a True Type font: see truetype.pdf
フォントファイルの登録
BaseFont を作成して Font オブジェクトにラップする代わりに、FontFactory を使うことができます。これは、Font オブジェクトを取得する、もっとも安定した方法です。残念ながら、FontFactory は、どこに(TTF およびその他の)フォントファイルが保存されているのか知りません。そのため、使用する前にフォントを登録しなければなりません。
FontFactory.register("c:\\windows\\fonts\\comic.ttf");
FontFactory.register("c:\\windows\\fonts\\msgothic.ttc");
register(java.lang.String) でフォントを登録したら、フォント名でフォントを取得できるようになります。getRegisteredFonts() で FontFactory に登録したすべてのフォントを問い合わすことができます。フォント名を自身で定義したいのならば、別名をつけて登録し(register(java.lang.String, java.lang.String))、実際のフォント名の変わりにその別名を使うだけです。
Example: java com.lowagie.examples.fonts.getting.RegisterFont
Registering Fonts with the FontFactory: see registerfont.pdf registered.txt
FontFactory クラスのすべてのメソッドはスタティックであることは、気をつけてください。同じ JVM に異なるアプリケーションがあると、予想していた以上のフォントが見つかるかもしれません。
フォントスタイルそれぞれについて異なるフォントがあるといったことを覚えていますが? スタイルを変更するたびにフォントを切り替えるのは、難しいかもしれません。ある場合には、fontitalic を探さなければならないし、あるときには fontoblique を探さなくてはなりません。あらかじめ同じフォントファミリーのすべてのスタイルを登録しておくと、FontFactory はスタイルに対応したフォントを自動的に取り出します。
Example: java com.lowagie.examples.fonts.getting.FontFactoryStyles
Changing the style of a fontfactory font: see fontfactorystyles.pdf
もちろん、新しいフォントが必要になるたびにディスクにあるフォントファイルの場所を指定するというのでは、とても親切設計とはいえません。そこで、registerDirectory(java.lang.String) です。このメソッドは、ディレクトリにあるすべてのフォントを登録することができます。この方法では、同じファミリの標準、太字、斜体、太字斜体の正確な名前を知っておく必要はない。このメソッドは、c:\windows\fonts、/usr/X/lib/X11/fonts/TrueType、/usr/X11R6/lib/X11/fonts/ttf、などのいくつかのありえそうなディレクトリを探しに行きます。(註:iText.NET では、レジストリからディレクトリの場所を決定します。)これで、ほとんどのWindows、Linux および Solaris で動作します。(そうでない場合は、フォントファイルを自分で登録しなければなりません。)次の例で、コンピュータ上の標準ディレクトリで利用可能なフォントを見ることができます。
Example: java com.lowagie.examples.fonts.getting.UsingFontFactory
Sums up the Fonts that are available in some standard font directories on your system: see FontFactory.pdf
TTC ファイル (TrueType コレクション)
TrueType Collection には、ひとつ以上のフォントが含まれています。例をみてわかるように、TTC ファイルの後ろにどのフォントを使うかの番号が付け加えられています。ある TTC ファイルのフォントの名前がわかっているのならば、enumerateTTCNames(java.lang.String) メソッドを使うことができます。msgothic.ttc ファイルには、(0) MS-Gothic、(1) MS-PGothic と (2) MS-UIGothic の三つのフォントが含まれています。例では、MS-PGothic を使いたいので、パスに 1 を付け加えています。
BaseFont.createFont(
  "c:\\windows\\fonts\\msgothic.ttc,1",
  BaseFont.IDENTITY_H,
  BaseFont.EMBEDDED);
この例は、フォントディレクトリに msgothic.ttc ファイルがないと動作しません。このフォントは、デフォルトではインストールされていません。この例を実行したいならば、Windows のインストール CD からこのファイルを抜き出して、フォントディレクトリに入れなければなりません。
OTF ファイル (OpenType フォント)
OpenType は、Microsoft と Adobe が共同で開発したクロスプラットフォームフォントフォーマットです。これは、フォント管理を単純化し、新しい印刷上の可能性と、多言語サポートを向上させます。Microsoft も Adobe も、将来的に TrueType や Type 1 フォントフォーマットを置き換えると宣言しており、Adobe は、すでに、Adobe Type Library をこのフォーマットに置き換えています。
Example: java com.lowagie.examples.fonts.getting.OpenTypeFont
Using an Open Type Font with Compact Font Format (CFF) data only (no true type outlines): see opentypefont.pdf
External resources for this example: liz.otf
AFM ファイル (Adobe フォントメトリックス)
iText.jar にある基本14フォントの AFM ファイル以外の .AFM あるいは .PFB ファイルがあれば、その同じディレクトリ (com/lowagie/text/pdf/fonts) にコピーし、次のように使うことができます。
BaseBont bf = BaseFont.createFont("myfont.afm"、BaseFont.WINANSI、BaseFont.EMBEDDED);
しかし、可能ならば、TrueType フォントを使いましょう。TrueType フォントは、サブセットを埋め込むことができるので、得られる文書は、非常に小さくなります。
先頭に戻る
jar (およびフォントパック) からフォントを取得する
CID フォントは、Postscript ベースのフォントであり、非常に多くの文字数(最大65,536)をサポートしています。このフォーマットは CJK フォント(CJK = Chinese Japanese Korean) に良く使われます。CID フォーマットは、フォント外部の文字-グリフテーブル(CMaps)の使用により文字の順序(エンコーディング)を変更することができます。
iText で、CJK フォントを使いたいならば、拡張 jar iTextAsian.jar が必要です。iText によって生成した CJK フォントを使ったテキストを読むならば、特別な Acrobat Reader フォントパックをダウンロード、インストールすることが必要です。(CJK フォントを含む PDF ファイルを開くときに、Reader が問い合わせるでしょう。)iTextAsian.jar によってサポートされているCJK フォントをインスタンス化することに関しては、他のフォントと同じぐらい容易です。
BaseFont bfChinese = BaseFont.createFont("STSong-Light"、"UniGB-UCS2-H"、BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese、12、Font.NORMAL);
Paragraph p = new Paragraph(chinese、FontChinese);
document.add(p);
縦書きテキストの書き方を知りたいならば、方向の部を参照してください。
Example: java com.lowagie.examples.fonts.getting.ChineseJapaneseKorean
Using CJK Fonts: see cjk.pdf
Extra jars needed in your CLASSPATH: iTextAsian.jar
iTextAsian.jar でサポートされているのは次の通りです。
  • 簡字体中国語
    STSong-Light と STSongStd-Light、エンコーディングは、UniGB-UCS2-H と UniGB-UCS2-V
  • 繁字体中国語
    MHei-Medium、MSung-Light と MSungStd-Light エンコーディングは、UniCNS-UCS2-H と UniCNS-UCS2-V
  • 日本語
    HeiseiMin-W3、HeiseiKakuGo-W5 と KozMinPro-Regular エンコーディングは、UniJIS-UCS2-H、UniJIS-UCS2-V、UniJIS-UCS2-HW-H と UniJIS-UCS2-HW-V
  • 韓国語
    HYGoThic-Medium、HYSMyeongJo-Medium と HYSMyeongJoStd エンコーディングは、UniKS-UCS2-H と UniKS-UCS2-V


CID フォント
しかし、こればすべてではありません。iTextAsianCmaps.jar という拡張 jar があります。これには、他の多くの CID フォントの cmaps が含まれています。次に、使い方を示します。
PdfEncodings.loadCmap(
  "GBK2K-H",
  PdfEncodings.CRLF_CID_NEWLINE); // needs to be done only once
byte text[] = my_GB_encoded_text;
String cid = PdfEncodings.convertCmap("GBK2K-H"、text);
BaseFont bf = BaseFont.createFont("STSong-Light"、"Identity-H"、false);
Paragraph p = new Paragraph(cid、new Font(bf、14));
document .add(p);
先頭に戻る

Copyright (C) 2001-2007 Kazuya Ujihara. All rights reserved.