From 701b2df0370d29b43284212877ab980026a06c84 Mon Sep 17 00:00:00 2001 From: arved Date: Sun, 11 Feb 2001 05:24:04 +0000 Subject: [PATCH] JPFOP Readme git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194051 13f79535-47bb-0310-9956-ffa450edef68 --- jpfop-0.17.0/readme.html | 276 ++++++++++++++++++++++++++++++++++ jpfop-0.17.0/readme_jp.html | 292 ++++++++++++++++++++++++++++++++++++ 2 files changed, 568 insertions(+) create mode 100644 jpfop-0.17.0/readme.html create mode 100644 jpfop-0.17.0/readme_jp.html diff --git a/jpfop-0.17.0/readme.html b/jpfop-0.17.0/readme.html new file mode 100644 index 000000000..aeaf12375 --- /dev/null +++ b/jpfop-0.17.0/readme.html @@ -0,0 +1,276 @@ + + + + +JAPANIZED PATCH for FOP-0.16.0 + + + +

JAPANIZED PATCH for FOP-0.16.0

+ + + +


+

1. Introduction

+

This patch supports the Type0 fonts for FOP-0.16.0 that is provided http://xml.apache.org/fop . When you have patched , you can use following family font name:

+ +

This patch is tested for compile and create PDF file following environments :

+ + +

NOTE: It is not possible that this patch works fine for other than Internationalized ( or Localized ) JDK . And if your machine does not support the japanese fonts , this patch can't create the PDF File that written in japanese .

+ +


+

2. Installation

+ +
    +
  1. Access http://xml.apache.org/dist/fop/ , and download fop-0_16_0.zip ( or fop-0_16_0.tar.gz ) .
  2. +
  3. Uncompress and extract fop-0_16_0.zip ( or .tar.gz ) .
  4. +
    This will create a directory named fop-0_16_0 .
    +
  5. Access http://www.sourceforge.net/projects/jpfop/ , and download jpfop_0_16_0.zip ( or jpfop_0_16_0.tar.gz ) .
  6. +
  7. Uncompress and extract jpfop-0.16.0.zip ( or .tar.gz ) under fop-0_16_0 directory .
  8. +
    This will create a directory named jpfop-0.16.0 under fop-0_16_0 directory .
    +
  9. Access http://xml.apache.org/dist/xalan-j/ , and download xalan-j_1_2_2.zip ( or xalan-j_1_2_2.tar.gz ) . +
  10. Bundle xerces.jar , xalan.jar and bsf.jar in xalan-j_1_2_2.zip ( or .tar.gz ) . +
    This patch can conveniently bundle xerces.jar , xalan.jar andbsf.jar, if you copy them to fop-0_16_0/lib directory .
  11. +
  12. +
    Run following command :
    +
    > cd fop-0_16_0
    +
    > build-jpfop ( ./build-jpfop.sh )
    +
  13. +
  14. The JAPANIZED Fop that named fop-0.16.0-jp.jar will be created after the Ant prints out BUILD SUCCESSED .
  15. +
  16. +
    Test JAPANIZED Fop following way :
    +
    > cd jpfop
    +
    > makesample_jpfop ( or ./makesample_jpfop.sh )
    +
    When no exception is thrown , following sample_jpfop.pdf file is created .
    +
  17. +
+
+

+Figure. sample_jpfop.pdf +
+ +

Note: This patch only provides Japanese Font , but it is easy to support Chinese or Korea . If you want to use the other CJKFont that does not include in this patch , you can use them to create font information in fop-0_16_0/src/codegen/cidfont and fop-0_16_0/src/codegen/cmp and to added it to FontSetup.java and build-jpfop.xml .

+ +

+ + +


+

3. Sources

+ +

3.1 Updated sources

+ +

This patch have updated following classes .

+
+
org.apache.fop.layout.LineArea
+
org.apache.fop.pdf.PDFFontDescriptor
+
org.apache.fop.pdf.PDFDocument
+
org.apache.fop.render.pdf.PDFRenderer
+
org.apache.fop.render.pdf.FontSetup
+
+ + +

3.1.1 org.apache.fop.layout.LineArea

+
+

The addText() method is updated . A Type0 composit font uses single-byte or multi-byte character codes that range is from 0 to 65535 . In FOP-0.16.0 , the character code is automatically transrated to "#" , if it is higher than 127 . I commented out that codes .

+

And I added new line code . In japanese , the words is not separated by whitespace , but currently fop only supports the new line algorithm that judges at every words . In this patch , when a line contains japanese , it breaks if overrun .

+
+ + +

3.1.2 org.apache.fop.pdf.PDFFontDescriptor

+
+

The toPDF() method is updated . A type of return value for Rectangle.toPDF() was byte[] , so A PDF Rectangle format was not exactly . I think that this is FOP's BUG .

+
+
previous codes:
+
+p.append("\n/FontBBox "); p.append(fontBBox.toPDF()); +
+
updated codes:
+
+p.append("\n/FontBBox "); p.append(new String(fontBBox.toPDF())); +
+
+
+ + +

3.1.3 org.apache.fop.pdf.PDFDocument

+
+

The makeFont() and makeFontDescriptor() methods is updated .

+ +

makeFont() method: When the implemented Font object does not have FontDescriptor object and that Font object is the instance of CIDFont , create Type0 font object .

+ +

makeFontDescriptor() method: I added the algorithm of OptionalFontDescriptor instance creation . And , in the original code of PDFFontDescriptor instance creation , the position of ItalicAngle and StemV was swapped . I think that this is FOP's BUG .

+
+ + +

3.1.4 org.apache.fop.render.pdf.PDFRenderer

+
+

The renderInlineArea() method is updated . The code of Type0 font ( CIDFont ) is added . The UTF-8 strings is encoded to by specified file encoding in CIDFont . If the CIDType in CIDFont is CIDFontType2 , encoded string is written because it's code poing is TrueType .

+ +

If the CIDType in CIDFont is CIDFontType0 , that cocoded strings is mapped to Adobe Type1 by CMap . When the font-style attribute in FO is specified Italic , Tm is written in PDF File . And/or if the font-weigth attribute is BOLD , TD is used .

+
+ + +

3.1.5 org.apache.fop.render.pdf.FontSetup

+
+

The setup() method is updated . I added the japanese font informations .

+
+ + +

+

3.2 Added classes and interfaces

+ +

This patch have updated following classes or interfaces .

+
+
org.apache.fop.layout.OptionalFontDescriptor
+
org.apache.fop.pdf.PDFCIDFont
+
org.apache.fop.pdf.PDFOptionalFontDescriptor
+
org.apache.fop.pdf.PDFFontType0
+
org.apache.fop.render.pdf.CIDFont
+
org.apache.fop.render.pdf.CMap
+
+ + +

3.2.1 org.apache.fop.layout.OptionalFontDescriptor

+
+

This interface is a FontDescriptor with optional attributes . For more details of FontDescriptor , see PDF1.3 Reference Manual [1] 7.11 Font descriptors page on 222 .

+
+ + +

3.2.2 org.apache.fop.pdf.PDFCIDFont

+
+

This class is a CIDFont in a PDF file . For more details of CIDFont , see PDF1.3 Reference Manual [1] 7.8 CIDFonts page on 210 and Adobe CMap and CID Font Files Specification Version 1.0 [2] .

+
+ + +

3.2.3 org.apache.fop.pdf.PDFOptionalFontDescriptor

+
+

This class is a FontDescriptor with optional attributes in a PDF file .

+
+ + +

3.2.4 org.apache.fop.pdf.PDFFontType0

+
+

This class is a Type0 Font in a PDF file . For more details of Type0 Font , see PDF1.3 Reference Manual [1] 7.7.7 Type0 Fonts page on 207 .

+
+ + +

3.2.5 org.apache.fop.render.pdf.CIDFont

+
+

This abstract class represents a CIDFont .

+
+ + +

3.2.6 org.apache.fop.render.pdf.CIDFontWidthsEntry

+
+

This class is an entry of Width in a CIDFont . In CIDFonts , following two formats is used to specify the width of glyphs:

+ +

For more details of the width of CIDFont , see PDF1.3 Reference Manual [1] 7.8.3 Character widths in CIDFonts page on 213 .

+
+ + + +

3.2.7 org.apache.fop.render.pdf.CMap

+
+

The CMap classes must implement this interface . The mapping() methods in the implemtend classes maps code points to a font number . For more details of Japanese CMaps , see Adobe CMap and CID Font Files Specification Version 1.0 [2] and Adobe-Japan1-4 Character Collection for CID-Keyed Fonts [3] .

+
+ +

3.2.8 org.apache.fop.render.pdf.Widths

+
+

This class is Width . This class can use Type1 , TruType , etc. , too .

+
+ + +

+

3.3 codegens

+ +

This patch automatically generates the following codes .

+
+
org.apache.fop.render.pdf.cmap._90ms_RKSJ_H
+
org.apache.fop.render.pdf.fonts.jp.GothicBBBMedium
+
org.apache.fop.render.pdf.fonts.jp.MSGothic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBold
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldItalic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicItalic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMincho
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBold
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldItalic
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoItalic
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.Osaka
+
org.apache.fop.render.pdf.fonts.jp.RyuminLight
+
+ + +


+

4. Known problems

+ +

In this section , I write the known problems for this pathc . If you want to know about FOP's problems , see fop-dev@xml.apache.org and fop-cvs@xml.apache.org .

+ + + + +


+

5. References

+
    +
  1. Portable Document Format Reference Manual Version 1.3:
    +http://partners.adobe.com/asn/developer/acrosdk/DOCS/PDFRef.pdf
  2. +
  3. Adobe CMap and CID Font Files Specification Version 1.0:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5014.CMap_CIDFont_Spec.pdf
  4. +
  5. Adobe-Japan1-4 Character Collection for CID-Keyed Fonts:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5078.Adobe-Japan1-4.pdf
  6. +
  7. Adobe Font Metrics File Format Specification Version 4.1:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf
  8. +
+ + + diff --git a/jpfop-0.17.0/readme_jp.html b/jpfop-0.17.0/readme_jp.html new file mode 100644 index 000000000..78ec608a6 --- /dev/null +++ b/jpfop-0.17.0/readme_jp.html @@ -0,0 +1,292 @@ + + + + +FOP-0.16.0 日本語化パッチ + + + +

FOP-0.16.0 日本語化パッチ

+ + + +


+

1. はじめに

+

本パッチは、http://xml.apache.org/fop が提供している FOP-0.16.0 で日本語 ( Type0 フォント ) を表示可能にするためのパッチです。本パッチにより、以下のファミリフォント名が使用可能となります。

+ +

本パッチは、以下の環境でコンパイルと PDF 作成の動作確認をしております。

+ + +

注意:本パッチは、国際化対応版 JDK でなければ、正しく実行する事ができないかもしれません。また、日本語フォント表示可能なマシン環境でなければ、本パッチで生成された PDF ファイルを正しく表示できないかもしれません。

+ +


+

2. インストール

+ +
    +
  1. http://xml.apache.org/dist/fop/ より fop-0_16_0.zip ( or fop-0_16_0.tar.gz ) をダウンロード
  2. +
  3. fop-0_16_0.zip ( or .tar.gz ) を解凍
  4. +
  5. http://www.sourceforge.net/projects/jpfop/ より jpfop_0_16_0.zip ( or jpfop_0_16_0.tar.gz ) をダウンロード
  6. +
  7. fop-0_16_0 ディレクトリ配下に jpfop_0_16_0.zip ( or .tar.gz ) を解凍
  8. +
  9. http://xml.apache.org/dist/xalan-j/ より xalan-j_1_2_2.zip ( or xalan-j_1_2_2.tar.gz ) をダウンロード +
  10. xalan-j_1_2_2.zip ( or .tar.gz ) 内の xerces.jar、xalan.jar、bsf.jar をクラスパスに含める。 +
    本パッチでは、簡易的に、xerces.jar、xalan.jar、bsf.jar を fop-0_16_0/lib ディレクトリにコピーすることにより、自動的にこれら jar ファイルがクラスパスに含まれます。もし、それ以外の場所に jar ファイルがある場合には、build-jpfop.bat 内の変数 XERCES、XALAN、BSF に jar ファイルの場所を指定して下さい。
  11. +
  12. +
    コマンドラインより
    +
    > cd fop-0_16_0
    +
    > build-jpfop ( or ./build-jpfop.sh )
    +
    を実行。
    +
  13. +
  14. BUILD SUCCESSED と表示されれば、日本語対応版 fop-0.16.0-jp.jar 完成
  15. +
  16. +
    続けて、コマンドラインより
    +
    > cd jpfop
    +
    > makesample_jpfop ( or ./makesample_jpfop.sh )
    +
    と実行することにより、日本語対応版 FOP により、sample_jpfop.pdf が生成
    +
  17. +
+
+

+図.sample_jpfop.pdf +
+ +

注意:本パッチは、日本語フォントしか提供していませんが、韓国語、中国語への拡張も容易に出来るはずです。もし、本パッチが提供している以外のフォントを使用したい場合、fop-0_16_0/src/codegen/cidfont や fop-0_16_0/src/codegen/cmp 配下に情報を作成し、FontSetup.java と build-jpfop.xml にその情報を追加して下さい。

+ +


+

3.1 日本人開発者の方へ

+

強制ではありませんが、以下について、jpfop-develop@lists.sourceforge.net へ報告をしていただけると非常に助かります。本メーリングリストの詳細は、http://lists.sourceforge.net/lists/listinfo/jpfop-develop を参照して下さい。

+
+
コンパイルについて
+
あなたの環境 ( OS , JDK など ) で、本パッチを用いて fop-0.16.0-jp.jar が作成できたか否か。特に、Linux、BSD、Machintosh、HP-UX 等の環境での報告は非常に助かります。作成できなかった場合、発生例外も報告していただけると助かります。
+

+
実行について
+
あなたの環境で日本語 PDF を作成した際、問題があるか否か。本パッチは、様々な環境でのテストが不十分なため、あなたの環境では問題があるかもしれません。例えば、Windows と Machintosh では、シフト JIS の 0x8740 付近のコードポイントが異なっています。 +
+これらの文字を使用した際、文字化け等の問題があるかもしれません。しかし、私の手元に Machintosh 環境がないため、これらの確認を行うことができていません。
+

+
閲覧について
+
本パッチの閲覧は、現在、Windows 用 Adobe Acrobat Reader 4.0/4.05a でのみしか行っていません。Machintosh 用 Acrobat Reader や UNIX 用 Acrobat Reader ( acroread ) での閲覧が正常に行われるかを報告して頂けると非常に助かります。また、問題報告の際にどのプラットフォームで作成した PDF を閲覧出来なかったのかも書いていただけると助かります。
+ +


+

3. ソース

+ +

3.1 修正したクラス

+ +

本パッチでは、fop-0.16.0 の以下のクラスを修正しています。

+
+
org.apache.fop.layout.LineArea
+
org.apache.fop.pdf.PDFFontDescriptor
+
org.apache.fop.pdf.PDFDocument
+
org.apache.fop.render.pdf.PDFRenderer
+
org.apache.fop.render.pdf.FontSetup
+
+ + +

3.1.1 org.apache.fop.layout.LineArea

+
+

修正したのは addText() メソッドです。日本語は 2 バイト文字なので、範囲は 0 から 65535 です。従来、127 以上の値をとる文字があった場合、自動的に "#" に変換していたので、そのコードをコメントアウトしました。

+

また、従来、単語ごとに改行の判定を行っていましたが、日本語では単語を半角スペースで区切らないため、正しく改行が行われませんでした。そのため、日本語の場合、1 行に表示できる文字数をオーバーした際に改行するコードを追加しました。

+
+ + +

3.1.2 org.apache.fop.pdf.PDFFontDescriptor

+
+

修正したのは toPDF() メソッドです。Rectangle.toPDF() の戻り値は、byte[] なので、既存のコードでは Rectangle に配列を正しく表示していない。これは、おそらく toPDF() メソッドの BUG でしょう。

+
+
修正前:
+
+p.append("\n/FontBBox "); p.append(fontBBox.toPDF()); +
+
修正後:
+
+p.append("\n/FontBBox "); p.append(new String(fontBBox.toPDF())); +
+
+
+ + +

3.1.3 org.apache.fop.pdf.PDFDocument

+
+

修正したのは makeFont() メソッドと makeFontDescriptor() メソッドです。

+ +

makeFont() メソッド : FontDescriptor が指定されていない際、CIDFont なのか判定し、CIDFont の場合、Type0 フォントと認識するように修正しました。

+ +

makeFontDescriptor() メソッド : オプションの属性を提供した OptionalFontDescriptor クラスが引数で渡された場合とそうでない場合の処理を分けました。また、PDFFontDescriptor オブジェクトをインスタンス化する際、ItalicAngle と StemV の位置が逆になっていました。これは、おそらく BUG でしょう。

+
+ + +

3.1.4 org.apache.fop.render.pdf.PDFRenderer

+
+

修正したのは renderInlineArea() メソッドです。Type0 フォント ( CIDFont ) の場合の処理を追加しました。まず、UTF-8 の文字列を CIDFont で指定したエンコーディングで変換します。CIDFontType2 の場合、コードポイントは TrueType なのでそのまま書き出します。

+ +

CIDFontType0 の場合、コードポイントは Adobe Type1 なので、CIDFont で指定した CMap に基づいてマッピングを行います。そして、Italic の場合、文字を斜めにします。BOLD の場合、位置をずらしながら 4 回書く処理をします。

+
+ + +

3.1.5 org.apache.fop.render.pdf.FontSetup

+
+

修正したのは setup() メソッドです。日本語 Font を追加しました。

+
+ + +

+

3.2 新規に追加されるクラスとインタフェイス

+ +

本パッチでは、fop-0.16.0 に対して以下のクラスとインタフェイスを新規に追加します。

+
+
org.apache.fop.layout.OptionalFontDescriptor
+
org.apache.fop.pdf.PDFCIDFont
+
org.apache.fop.pdf.PDFOptionalFontDescriptor
+
org.apache.fop.pdf.PDFFontType0
+
org.apache.fop.render.pdf.CIDFont
+
org.apache.fop.render.pdf.CMap
+
+ + +

3.2.1 org.apache.fop.layout.OptionalFontDescriptor

+
+

オプションの属性を提供した FontDescriptor インタフェイスです。FontDescriptor の詳細については、PDF1.3 Reference Manual [1] 7.11 Font descriptors p.222 を参照して下さい。

+
+ + +

3.2.2 org.apache.fop.pdf.PDFCIDFont

+
+

PDF 中の CIDFont オブジェクトを表すクラスです。CIDFont の詳細については、PDF1.3 Reference Manual [1] 7.8 CIDFonts p.210 や Adobe CMap and CID Font Files Specification Version 1.0 [2] を参照して下さい。

+
+ + +

3.2.3 org.apache.fop.pdf.PDFOptionalFontDescriptor

+
+

PDF 中の FontDescriptor のオプションの属性を表すクラスです。

+
+ + +

3.2.4 org.apache.fop.pdf.PDFFontType0

+
+

PDF 中の Type0 フォントを表すクラスです。Type0 フォントの詳細については、PDF1.3 Reference Manual [1] 7.7.7 Type0 Fonts p.207 を参照して下さい。

+
+ + +

3.2.5 org.apache.fop.render.pdf.CIDFont

+
+

CIDFont を表すクラスです。

+
+ + +

3.2.6 org.apache.fop.render.pdf.CIDFontWidthsEntry

+
+

CIDFont の Width に含まれるエントリを表すクラスです。CIDFont では、

+ +

の 2 種類のフォーマットがあります。詳細は、PDF1.3 Reference Manual [1] 7.8.3 Character widths in CIDFonts p.213 を参照して下さい。

+
+ + + +

3.2.7 org.apache.fop.render.pdf.CMap

+
+

コードポイントを表すインタフェイスです。指定されたコードポイントを CMap に従ってマッピングします。日本語の Adobe コードポイントについては、Adobe-Japan1-4 Character Collection for CID-Keyed Fonts [3] を参照して下さい。

+
+ +

3.2.8 org.apache.fop.render.pdf.Widths

+
+

Width 属性を表すクラスです。

+
+ + +

+

3.3 新規に作成されるクラス

+ +

本パッチでは、fop-0.16.0 に対して、codegen を利用して以下のクラスが XML ファイルから自動的に生成されます。

+
+
org.apache.fop.render.pdf.cmap._90ms_RKSJ_H
+
org.apache.fop.render.pdf.fonts.jp.GothicBBBMedium
+
org.apache.fop.render.pdf.fonts.jp.MSGothic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBold
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldItalic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicBoldItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSGothicItalic
+
org.apache.fop.render.pdf.fonts.jp.MSGothicItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMincho
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBold
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldItalic
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoBoldItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoItalic
+
org.apache.fop.render.pdf.fonts.jp.MSMinchoItalicAlias
+
org.apache.fop.render.pdf.fonts.jp.Osaka
+
org.apache.fop.render.pdf.fonts.jp.RyuminLight
+
+ + +


+

4. 既知の日本語対応パッチの問題

+ +

本ドキュメントでは、一部を除き、日本語対応における既知の問題のみ書かれています。FOP の問題については、fop-dev@xml.apache.org や fop-cvs@xml.apache.org を参照して下さい。

+ + + + +


+

5. リファレンス

+
    +
  1. Portable Document Format Reference Manual Version 1.3:
    +http://partners.adobe.com/asn/developer/acrosdk/DOCS/PDFRef.pdf
  2. +
  3. Adobe CMap and CID Font Files Specification Version 1.0:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5014.CMap_CIDFont_Spec.pdf
  4. +
  5. Adobe-Japan1-4 Character Collection for CID-Keyed Fonts:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5078.Adobe-Japan1-4.pdf
  6. +
  7. Adobe Font Metrics File Format Specification Version 4.1:
    +http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf
  8. +
+ + + -- 2.39.5