Copper PDFはフォントを埋め込まないPDFと、フォントを埋め込んだPDFの両方を出力することができます。 デフォルトではフォントを埋め込みません。また、機能限定版ライセンスではフォントの埋め込みはできません。 フォントを埋め込まないPDFはサイズが小さくなりますが、表示する環境によっては全く意図しないフォントが使われてしまったり、 文字化けが生じてしまったり、まったく表示できないことがあります。 重要な文書、特に同じ表示が保障される必要がある場合は、フォントを埋め込んでください。
埋め込むフォントの指定は、Copper PDF 3.0.0 からはCSSの@font-faceルール(WebFont)を使うこともできますが、 高速に処理させるためには、あらかじめ設定しておくことを推奨します。 フォント関連の設定はprofilesディレクトリ 内のfontsディレクトリに含まれています。 まだ、デフォルトの設定では、ここにフォントファイルも置くことになります。 fontsディレクトリ内の構成は次のとおりです。
fonts |-- fonts.xml |-- truetype |-- warrays |-- afms |-- cmaps `-- encodings
Copper PDFはfonts.xmlを解析し、フォントへアクセスするための情報をfonts.xmlが配置されているのと同じディレクトリに、 fonts.xml.dbというファイル名で保存します。 Copper PDFはfonts.xmlの変更を自動検出するためfonts.xmlへの変更はすぐに反映されます。
ただし、OSへのフォントのインストールや、truetypeディレクトリ内におけるフォントファイルの追加・削除・置き換え等を自動検出しません。 変更を反映させるためには、touchコマンド等でfonts.xmlファイルのタイムスタンプを変更してください。
ドキュメント中で使用されるフォントを特定するためのCSSプロパティは font-family(ファミリ名), font-weight(太さ), font-size(大きさ), font-style(スタイル) の4つです(fontプロパティでまとめて指定することもできます)。 指定されたファミリ名、太さ、スタイルから、記述された文字を表記できる最も近いフォントが選択されます。
該当する太さのフォントが見つからない場合は、機械的に文字の輪郭を拡張して太いフォントがつくられます (逆に指定した太さより細いフォントがない場合、機械的に細いフォントをつくることはありません。 最も細いフォントが使われるだけです)。
また、font-styleにitalicまたはobliqueが指定されたとき、 斜体スタイルのフォントが見つからない場合は、フォントを機械的に傾けます。 同時にfont-weightが指定されている場合は、 以下の表のとおり、font-styleの指定がitalicかobliqueかで選択されるフォントが異なることがあります。
条件 | italic指定の場合 | oblique指定の場合 |
---|---|---|
太さとスタイルが一致するフォントがある | 太さとスタイルが一致するフォントを使用する | 太さとスタイルが一致するフォントを使用する |
太さだけ一致するフォントがある | 太さが一致するフォントを傾けて使用する | 太さが一致するフォントを傾けて使用する |
スタイルだけ一致するフォントがある | スタイルが一致するフォントを太くして使用する | スタイルが一致するフォントを太くして使用する |
太さだけ一致するフォントとスタイルだけ一致するフォントがある | スタイルが一致するフォントを太くして使用する | 太さが一致するフォントを傾けて使用する |
太さもスタイルも一致するフォントがない | 他の条件が一致するフォントを太くして傾けて使用する | 他の条件が一致するフォントを太くして傾けて使用する |
ドキュメント中でフォントが指定されていない場合、あるいは指定されたフォントが見つからない場合は、 output.default-font-family により設定されたフォントが使われます。 これはデフォルトではserif(ローマンあるいは明朝体)です。
CMapに該当するコードがない、 コアフォントにも該当する文字がない、かつインストール済みのフォントにも該当する文字がないといった理由で、 どうしても表示できない文字がドキュメント中に記述された場合は、 代わりに16進数でユニコードを表す組文字(のような文字)が表示されます。
Copper PDFがサポートするフォントには コアフォント、 CID-Keyedフォント CID Identityフォント、 埋め込みフォント、 の4種類があります。 コアフォントは常に利用可能ですが、埋め込みフォント、CID Identityフォント、CID-Keyedフォントのどれを利用するかは output.pdf.fonts.policy によって選択されます。 また、Copper PDFの拡張CSSプロパティ -cssj-font-policy によってドキュメント中で指定することもできます。デフォルトではコアフォントとCID-Keyedフォントだけが使われます。
output.pdf.fonts.policyまたは-cssj-font-policyにcid-keyed, cid-identity, embeddedを指定することで、 それぞれCID-Keyedフォント、CID Identityフォント、埋め込みフォントを切り替えることができます。 コアフォントは常に使用されますが、"-core"を指定することで除外することができます3.0.0。 またスペース区切で複数指定することも可能です2.0.1。 "embedded cid-keyed"のようにスペース区切りで複数指定された場合は、最初に指定されたものから優先的に使用されます2.0.9。ただし、コアフォントの優先度は常に最低となります。 また、outlinesを指定すると、PDFでembeddedフォントをテキストではなくアウトライン化した状態で表示することができます3.1.1。
PDF/A-1を出力する場合は、上記の設定に関わらず、埋め込みフォントだけが使われます2.1.0。
outlinesを指定すると、埋め込みフォントが使われ、なおかつ全てのフォントがアウトライン化されます。3.1.1。outlines指定はPDF/A-1でも有効です。
コアフォントは、ほとんどのPDF表示環境が標準的にサポートしているフォントで、フォントの埋め込みをせずに表示することができます。 14種類あることから、コア14フォントとも呼ばれます。 コアフォントはさらにletter(欧文文字・記号だけで構成されるもの)、symbol(欧文文字・記号以外の文字を含むもの)の2種類に分けられます。
次の表はコアフォントの一覧です。
正式名称 | 略称 | ファミリ名 | 太字 | 斜体 | 種類 |
---|---|---|---|---|---|
Times Roman | Times-Roman | Times | letter | ||
Times Bold | Times-Bold | Times | letter | ||
Times Italic | Times-Italic | Times | letter | ||
Times Bold Itatdc | Times-BoldItalic | Times | letter | ||
Helvetica | Helvetica | Helvetica | letter | ||
Helvetica Bold | Helvetica-Bold | Helvetica | letter | ||
Helvetica Oblique | Helvetica-Oblique | Helvetica | letter | ||
Helvetica Bold Oblique | Helvetica-BoldOblique | Helvetica | letter | ||
Courier | Courier | Courier | letter | ||
Courier Bold | Courier-Bold | Courier | letter | ||
Courier Oblique | Courier-Oblique | Courier | letter | ||
Courier Bold Oblique | Courier-BoldOblique | Courier | letter | ||
Symbol | Symbol | Symbol | symbol | ||
ITC Zapf Dingbats | ZapfDingbats | ZapfDingbats | symbol |
CSSのfont-familyプロパティによるフォントの指定は、 正式名称、略称、ファミリ名のいずれでも可能です。 ファミリ名を使用した場合は、 font-style, font-weight プロパティの指定により、同じファミリ名を持つフォントのうち、スタイルと太さが最も一致するフォントが自動的に選択されます。
コアフォントのフォントメトリックス情報(文字の幅などの情報)がAFM(Adobe Font Metrics)ファイルとして、 fonts/afmsディレクトリに収められています。 これらのファイルをユーザーが変更する必要はありません。
各文字とPDF内で使用される文字コードとの対応表が fonts/encodingsディレクトリに収められています。 UNICODE.txtはletterフォントの文字名とユニコードとの対応表です。 symbol.txtとzdingbat.txtはそれぞれSymbol, ITC Zapf Dingbatsのためのユニコード対応表です。 これらのファイルをユーザーが変更する必要はありません。
以下はletterフォントで使用できる文字セット(WinAnsiEncodingエンコーディング)の文字一覧表です。 それぞれの文字は8ビット(16進数で2桁)のユニコードに対応しており、縦が上位桁、横が下位桁です。 ただし、80から9Fまでのコードで空いている部分は対応する文字がないことを表し、 下に4桁の16進数字がある文字には、同じ文字に対して2つのコードがあります。 例えばダブルダガー()を表示する場合はドキュメント中で‡または‡と表記してください。
- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
2 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | |
8 | 20AC |
201A |
0192 |
201E |
2026 |
2020 |
2021 |
02C6 |
2030 |
0160 |
2039 |
0152 |
017D |
|||
9 | 2018 |
2019 |
201C |
201D |
2022 |
2013 |
2014 |
02DC |
2122 |
0161 |
203A |
0153 |
017E |
0178 |
||
A | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | | ® | ¯ | |
B | ° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | ¿ |
C | À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï |
D | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | × | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß |
E | à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï |
F | ð | ñ | ò | ó | ô | õ | ö | ÷ | ø | ù | ú | û | ü | ý | þ | ÿ |
以下はSymbolで使用できる文字の一覧です。 文字の下の数字は16進ユニコードです。
0020 00A0 |
! 0021 |
∀ 2200 |
# 0023 |
∃ 2203 |
% 0025 |
& 0026 |
∋ 220B |
( 0028 |
) 0029 |
∗ 2217 |
+ 002B |
, 002C |
− 2212 |
. 002E |
/ 002F |
0 0030 |
1 0031 |
2 0032 |
3 0033 |
4 0034 |
5 0035 |
6 0036 |
7 0037 |
8 0038 |
9 0039 |
: 003A |
; 003B |
< 003C |
= 003D |
> 003E |
? 003F |
≅ 2245 |
Α 0391 |
Β 0392 |
Χ 03A7 |
Δ 0394 2206 |
Ε 0395 |
Φ 03A6 |
Γ 0393 |
Η 0397 |
Ι 0399 |
ϑ 03D1 |
Κ 039A |
Λ 039B |
Μ 039C |
Ν 039D |
Ο 039F |
Π 03A0 |
Θ 0398 |
Ρ 03A1 |
Σ 03A3 |
Τ 03A4 |
Υ 03A5 |
ς 03C2 |
Ω 03A9 2126 |
Ξ 039E |
Ψ 03A8 |
Ζ 0396 |
[ 005B |
∴ 2234 |
] 005D |
⊥ 22A5 |
_ 005F |
F8E5 |
α 03B1 |
β 03B2 |
χ 03C7 |
δ 03B4 |
ε 03B5 |
φ 03C6 |
γ 03B3 |
η 03B7 |
ι 03B9 |
ϕ 03D5 |
κ 03BA |
λ 03BB |
µ 00B5 03BC |
ν 03BD |
ο 03BF |
π 03C0 |
θ 03B8 |
ρ 03C1 |
σ 03C3 |
τ 03C4 |
υ 03C5 |
ϖ 03D6 |
ω 03C9 |
ξ 03BE |
ψ 03C8 |
ζ 03B6 |
{ 007B |
| 007C |
} 007D |
∼ 223C |
|
€ 20AC |
ϒ 03D2 |
′ 2032 |
≤ 2264 |
⁄ 2044 2215 |
∞ 221E |
ƒ 0192 |
♣ 2663 |
♦ 2666 |
♥ 2665 |
♠ 2660 |
↔ 2194 |
← 2190 |
↑ 2191 |
→ 2192 |
↓ 2193 |
° 00B0 |
± 00B1 |
″ 2033 |
≥ 2265 |
× 00D7 |
∝ 221D |
∂ 2202 |
• 2022 |
÷ 00F7 |
≠ 2260 |
≡ 2261 |
≈ 2248 |
… 2026 |
F8E6 |
F8E7 |
↵ 21B5 |
ℵ 2135 |
ℑ 2111 |
ℜ 211C |
℘ 2118 |
⊗ 2297 |
⊕ 2295 |
∅ 2205 |
∩ 2229 |
∪ 222A |
⊃ 2283 |
⊇ 2287 |
⊄ 2284 |
⊂ 2282 |
⊆ 2286 |
∈ 2208 |
∉ 2209 |
∠ 2220 |
∇ 2207 |
F6DA |
F6D9 |
F6DB |
∏ 220F |
√ 221A |
⋅ 22C5 |
¬ 00AC |
∧ 2227 |
∨ 2228 |
⇔ 21D4 |
⇐ 21D0 |
⇑ 21D1 |
⇒ 21D2 |
⇓ 21D3 |
◊ 25CA |
〈 2329 |
F8E8 |
F8E9 |
F8EA |
∑ 2211 |
F8EB |
F8EC |
F8ED |
F8EE |
F8EF |
F8F0 |
F8F1 |
F8F2 |
F8F3 |
F8F4 |
〉 232A |
∫ 222B |
⌠ 2320 |
F8F5 |
⌡ 2321 |
F8F6 |
F8F7 |
F8F8 |
F8F9 |
F8FA |
F8FB |
F8FC |
F8FD |
F8FE |
以下はZapfDingbatsで使用できる文字の一覧です。 文字の下の数字は16進ユニコードです。
0020 00A0 |
✁ 2701 |
✂ 2702 |
✃ 2703 |
✄ 2704 |
☎ 260E |
✆ 2706 |
✇ 2707 |
✈ 2708 |
✉ 2709 |
☛ 261B |
☞ 261E |
✌ 270C |
✍ 270D |
✎ 270E |
✏ 270F |
✐ 2710 |
✑ 2711 |
✒ 2712 |
✓ 2713 |
✔ 2714 |
✕ 2715 |
✖ 2716 |
✗ 2717 |
✘ 2718 |
✙ 2719 |
✚ 271A |
✛ 271B |
✜ 271C |
✝ 271D |
✞ 271E |
✟ 271F |
✠ 2720 |
✡ 2721 |
✢ 2722 |
✣ 2723 |
✤ 2724 |
✥ 2725 |
✦ 2726 |
✧ 2727 |
★ 2605 |
✩ 2729 |
✪ 272A |
✫ 272B |
✬ 272C |
✭ 272D |
✮ 272E |
✯ 272F |
✰ 2730 |
✱ 2731 |
✲ 2732 |
✳ 2733 |
✴ 2734 |
✵ 2735 |
✶ 2736 |
✷ 2737 |
✸ 2738 |
✹ 2739 |
✺ 273A |
✻ 273B |
✼ 273C |
✽ 273D |
✾ 273E |
✿ 273F |
❀ 2740 |
❁ 2741 |
❂ 2742 |
❃ 2743 |
❄ 2744 |
❅ 2745 |
❆ 2746 |
❇ 2747 |
❈ 2748 |
❉ 2749 |
❊ 274A |
❋ 274B |
● 25CF |
❍ 274D |
■ 25A0 |
❏ 274F |
❐ 2750 |
❑ 2751 |
❒ 2752 |
▲ 25B2 |
▼ 25BC |
◆ 25C6 |
❖ 2756 |
◗ 25D7 |
❘ 2758 |
❙ 2759 |
❚ 275A |
❛ 275B |
❜ 275C |
❝ 275D |
❞ 275E |
|
F8D7 |
F8D8 |
F8D9 |
F8DA |
F8DB |
F8DC |
F8DD |
F8DE |
F8DF |
F8E0 |
F8E1 |
F8E2 |
F8E3 |
F8E4 |
||
❡ 2761 |
❢ 2762 |
❣ 2763 |
❤ 2764 |
❥ 2765 |
❦ 2766 |
❧ 2767 |
♣ 2663 |
♦ 2666 |
♥ 2665 |
♠ 2660 |
① 2460 |
② 2461 |
③ 2462 |
④ 2463 |
|
⑤ 2464 |
⑥ 2465 |
⑦ 2466 |
⑧ 2467 |
⑨ 2468 |
⑩ 2469 |
❶ 2776 |
❷ 2777 |
❸ 2778 |
❹ 2779 |
❺ 277A |
❻ 277B |
❼ 277C |
❽ 277D |
❾ 277E |
❿ 277F |
➀ 2780 |
➁ 2781 |
➂ 2782 |
➃ 2783 |
➄ 2784 |
➅ 2785 |
➆ 2786 |
➇ 2787 |
➈ 2788 |
➉ 2789 |
➊ 278A |
➋ 278B |
➌ 278C |
➍ 278D |
➎ 278E |
➏ 278F |
➐ 2790 |
➑ 2791 |
➒ 2792 |
➓ 2793 |
➔ 2794 |
→ 2192 |
↔ 2194 |
↕ 2195 |
➘ 2798 |
➙ 2799 |
➚ 279A |
➛ 279B |
➜ 279C |
➝ 279D |
➞ 279E |
➟ 279F |
➠ 27A0 |
➡ 27A1 |
➢ 27A2 |
➣ 27A3 |
➤ 27A4 |
➥ 27A5 |
➦ 27A6 |
➧ 27A7 |
➨ 27A8 |
➩ 27A9 |
➪ 27AA |
➫ 27AB |
➬ 27AC |
➭ 27AD |
➮ 27AE |
➯ 27AF |
➱ 27B1 |
➲ 27B2 |
➳ 27B3 |
➴ 27B4 |
➵ 27B5 |
➶ 27B6 |
➷ 27B7 |
➸ 27B8 |
➹ 27B9 |
➺ 27BA |
➻ 27BB |
➼ 27BC |
➽ 27BD |
➾ 27BE |
欧文以外の文字をPDFに含める場合は、CIDフォントを用います。 フォントを埋め込む方法と、フォントを埋め込まない方法があり、 フォントを埋め込まない方法には、さらにCID IdentityとCID-Keyedフォントの2種類の方法があります。 どの種類のフォントを利用するかは、入出力プロパティoutput.pdf.fonts.policyの設定によります。
埋め込みフォントまたはCID Identityを使用する場合、 Copper PDFにフォントをインストールする必要があります。 Copper PDFの出荷時の状態では、 truetypeディレクトリ配置したフォントが自動的に読み込まれるようにfonts.xmlが設定されています。
PDFにフォントの字体データそのものを埋め込む方式で、 環境に関係なく、確実に同じ字体で文字が表示されることが保証されます。
フォントを埋め込む場合、文書中で使用されている文字のフォントだけをPDFに含めるため、 ファイルサイズは最小限に抑えられますが、出力されたPDFは編集や加工には適しません。
表示や印刷の見栄えに厳密さが求められる場合や、 広く配布する文書、あるいは長期保存する文書に適しています。
フォントの埋め込みをせず、グリフID(フォントファイルに含まれる文字の番号)をそのままPDF内に記述する方式です。 Copper PDFの動作環境と、PDFを表示する環境に同一のフォントがインストールされている必要があります。 グリフIDは特定のフォントファイルに依存するため、 PDFを表示する環境にインストールされたフォントファイルが異なれば、 似たような書体のフォントであっても文字化けが発生するか、全く表示できなくなります。
同一のマシン上や、同じ組織内での編集や加工、印刷を目的とする文書に適しています。 フォントの埋め込みをする場合にくらべて、出力されるPDFのサイズは小さくなります。
CID Identityフォント同様にフォントの埋め込みをしませんが、 Adobe社により公開されているコード体系(CMap)を使用します。
PDFを表示する環境で利用可能な、書体の近いフォントが自動的に選ばれるので、 特定のフォントファイルに依存することはありません。 ただし、使用できる文字はAdobe社が提供するCMapファイルで定義された文字に限られます。 また、全ての環境でPDFを表示できることが保証されるものではありません。
特定の言語環境のWindowsやMacOS、特定のバージョン以降のAdobe Readerなど、 表示・編集・加工する環境が比較的限られ、表示や印刷の見栄えに厳密さが求められない文書には有効です。 PDFのファイルサイズは最も小さくなります。
CID-Keyedフォントの場合、表示環境にインストールされた、書体の近いフォントを選ぶために、 PANOSE-1(パノーズ)という10桁のコードを使います。 PDFでは、さらにクラスID・サブクラスIDというコードが先頭に付けられるため、12桁となります。
クラスID・サブクラスIDと、PANOSE-1コードはTrueTypeまたはOpenTypeフォントから、ツールを使って取得することができます。 Microsoft社が配布しているFontTools.exeに含まれるttfdump.exeというツールを利用すると便利です。
以下はmsgothic.ttcからフォントの情報を、out.txtというテキストファイルに書き出すコマンドです。 -c1は.ttcファイル(複数のTrueTypeフォントを含むファイル) の1番目のフォント情報を取得するためのオプションで、 2番目のフォント情報を取得する場合は-c2のように指定してください。 .ttfまたは.otfファイルではこのオプションは不要です。
C:\TTFDump>ttfdump.exe "C:\Windows\Fonts\msgothic.ttc" -c1 > out.txt
以下の部分(OS/2テーブル)のsFamilyClassがクラスID・サブクラスIDで、PANOSEが10桁のPANOSE-1コードです。 この場合、フォント設定ファイル中ではPANOSEコードを 8 1 2 11 6 9 7 2 5 8 2 4 と指定してください。
... 略 'OS/2' Table - OS/2 and Windows Metrics --------------------------------------- Size = 96 bytes (expecting 96 bytes) 'OS/2' version: 3 ... 略 ... yStrikeoutSize: 13 yStrikeoutPosition: 66 sFamilyClass: 8 subclass = 1 PANOSE: 2 11 6 9 7 2 5 8 2 4 Unicode Range 1( Bits 0 - 31 ): E00002FF Unicode Range 2( Bits 32- 63 ): 6AC7FDFB 略 ...
文字列をレイアウトするとき、各文字の幅や基底線の情報が必要です。 CID-Keyedフォントは、フォントそのものは含まないフォント幅情報ファイルをもとにレイアウトします。 フォント幅情報ファイルはfonts/warraysディレクトリに既定のものが用意されています。
出荷時のfonts.xmlの設定では、文書中がMincho, Gothicというフォント名で、 明朝体とゴシック体のフォントが使われるようになっています。 それぞれserif, sans-serifというCSS総称フォント名にも結び付けられており、 またMinchoはデフォルトのフォントです。 つまり、CID-Keyedフォントが利用する設定では、対応するフォントがない場合は全てMinchoとなります。 これらのフォントは、実際には多くの日本語表示環境に入っていると考えられる、 等幅の明朝体、ゴシック体フォントが使用されるようにPANOSEが設定されています。
Copper PDF 2.1.10 以降では、MS明朝、MSゴシック、MS P明朝、MS Pゴシック、MS UI Gothicの幅情報が用意されています。 出荷時のfonts.xmlの設定では、それぞれの名前で文書中から使用できるようになっています。 これらのフォントを使うと、日本語Windows環境を対象とした軽量なPDFを生成することができます。 ただし、MS系フォントが入っていない環境では、隣り合う文字が重なったり、離れすぎてしまったりという現象が発生します。
手持ちのフォントから幅情報を抽出し、新たにフォント幅情報ファイルを作成する場合は、付属のツールを使ってください。 以下のように、javaコマンドで直接jp.cssj.sakae.pdf.tools.WArrayToolを実行してください。 クラスパスとクラス名に続く引数はそれぞれ、cmapファイル、Javaエンコーディング名、フォントファイルです。 複数のフォントを含むファイル(.ttc)の場合、さらにフォントの番号を続けることができます。
java -cp lib/*.jar \ jp.cssj.sakae.pdf.tools.WArrayTool \ conf/profiles/fonts/cmaps/UniJIS-UTF16-H \ UTF-16BE \ /usr/share/fonts/truetype/kochi/kochi-mincho.ttf \ > conf/profiles/fonts/warrays/kochi-mincho.txt
埋め込みフォント、CID Identityフォントを使用する場合、 あるいは後述するようにCID-Keyedフォントのためにフォントの幅情報を抽出するためには、 Copper PDFが動作する環境にフォントファイルがインストールされている必要があります。
Copper PDFがサポートするフォントファイルの種類は以下の通りです。
また、Copper PDFは上記のフォントファイル以外に、Java実行環境によりサポートされるフォントファイルを使用することができます。 SunのJava実行環境(1.5.0以降)はTrueTypeに加えてType1フォント(.pfa, .pfb)、 F3フォント(.f3b)をサポートしています。
PDF出力に使用するフォントの情報はフォント設定ファイル(fonts.xml) に記述してください。 フォント設定ファイルはXML形式で、ルート要素はfontsです。 フォント設定ファイルには各種ファイルのファイルパスの情報も含まれており、 ファイルパスはフォント設定ファイルからの相対パスとなります。
fonts要素には次の要素が含まれています。
コアフォントのエンコーディング情報のファイルを設定します。 通常は編集する必要はありません。
letterフォント(SynbolとZapfDingbats以外のフォント)を使用する場合、使用できる文字セットにはStandardEncoding、 MacRomanEncoding、WinAnsiEncodingの3種類があります。 Copper PDFの出荷時にはWinAnsiEncodingが設定されています。 core-fonts要素のencoding属性 の指定を変更することで切り替えることができます。
属性 | 必須 | 説明 |
---|---|---|
src | グリフコードとグリフ名の対応を記述したファイルです。 |
CID-Keyedフォントのエンコーディング情報のファイルを設定します。 通常は編集する必要はありません。
属性 | 必須 | 説明 |
---|---|---|
src | Adobe Japan 1-4コードと文字コードの対応を記述したファイルです。 | |
java-encoding | 文字コードのJavaエンコーディング名です。 |
コアフォントの設定です。 通常は編集する必要はありませんが、使用するエンコーディングを変更したり、 ドキュメントから参照する際の別名を追加することができます。
属性 | 必須 | 説明 |
---|---|---|
unicode-src | ユニコードと文字名の対応を記述したファイルです。 | |
encoding | エンコーディング名です。encodingsで設定されたものの中から選択できます。 |
core-fonts要素にはletter-font, symbol-fontのいずれかを含むことができます。
letter-font要素は通常の欧文フォントの設定です。
属性 | 必須 | 説明 |
---|---|---|
src | AFMファイルです。 | |
encoding | core-fontsのencoding属性を上書きします。 |
symbol-font要素は記号フォント(SymbolまたはZapfDingbats)の設定です。
属性 | 必須 | 説明 |
---|---|---|
src | AFMファイルです。 | |
encoding-src | ユニコードとグリフコードの対応を記述したファイルです。 |
letter-fontおよびsymbol-font内にalias要素を追加することで、 ドキュメント中のfont-familyで参照することができる別名が追加されます。
属性 | 必須 | 説明 |
---|---|---|
name | フォントの別名です。 |
letter-fontおよびsymbol-font内のinclude, exclude要素により、 フォントが使用される文字範囲を指定できます2.0.3。 includeにより、フォントが使用される文字範囲を明示することができ、 excludeにより除外する文字範囲を明示することができます。 include, excludeの記述がない場合は、利用可能な全ての文字でフォントが利用されます。
属性 | 必須 | 説明 |
---|---|---|
unicode-range | カンマで区切ったユニコード範囲(詳細は後述)。 |
属性 | 必須 | 説明 |
---|---|---|
unicode-range | カンマで区切ったユニコード範囲(詳細は後述)。 |
unicode-rangeはU+に続く16進数によるユニコードとハイフンを用います。 例えば、日本語のかなを含める文字範囲の指定は次の通りです。
<include unicode-range="U+3030-30FF" />
また下位の桁をワイルドカードに置き換えることもできます。 以下の記述は U+1F00-1FFFと書くのと等価です。
<include unicode-range="U+1F??" />
複数の文字範囲はカンマで区切ってください。
<include unicode-range="U+3030-30FF,U+1F??" />
cid-fonts要素にはcid-keyed-font, font-file, font-dir, system-font, all-system-fontsのいずれかを含むことができます。
cid-keyed-font要素はフォントファイルを使用する代わりに、 フォントの幅情報を記述したファイルを利用してCID-Keyedフォントを定義するものです。
属性 | 必須 | 説明 |
---|---|---|
name | フォント名です。 | |
italic | フォントを斜体にする場合はtrue、そうでない場合はfalseを設定してください。 | |
weight | フォントの太さです。100から900まで100刻みの値で設定してください。400が普通の太さです。 | |
panose | PDFのFontDescripterのPanoseフィールドに対応する値です。 クラスID、サブクラスID、10桁のPANOSE-1コードの順でスペース区切りで記述した12の数字から構成されます。 | |
cmap | 横書きのCMap名です。 | |
vcmap | 縦書きのCMap名です。 | |
warray | フォント幅情報ファイルです。 |
font-file要素はフォントファイルを直接指定します。
属性 | 必須 | 説明 |
---|---|---|
name | フォント名フォントデータから取得されますが、ここで上書きすることもできます。 | |
src | フォントファイルです。 | |
index | 複数のフォントを含むTTCファイルの中で、使用するフォントの番号です。 省略した場合は0です。TTCファイルでない場合は無視されます。 | |
types | フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
|
|
italic | フォントが斜体かどうかはフォントデータから取得されますが、ここで上書きすることもできます。 斜体にする場合はtrue、そうでない場合はfalseを設定してください。 | |
weight | フォントの太さはフォントデータから取得されますが、ここで上書きすることもできます。 100から900まで100刻みの値で設定してください。 | |
cmap |
(type="cid-keyed"の場合) |
横書きのCMap名です。 |
vcmap | 縦書きのCMap名です。 |
font-dir要素は指定したディレクトリに存在するフォントファイルを直接まとめて読み込みます。
属性 | 必須 | 説明 |
---|---|---|
dir | フォントファイルが格納されるディレクトリです。 | |
types | フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
|
system-fontはJava実行環境を利用してフォントを読み込みます。 OSやウィンドウシステムにインストールされたフォントを名前で指定できますが、 縦書きなどフォントの一部の機能に制約があります。
属性 | 必須 | 説明 |
---|---|---|
name | フォント名です。フォントデータから取得されますが、ここで上書きすることもできます。 | |
src |
srcまたはfileが必要 |
システムにインストールされたフォント名です。 |
file3.0.0 |
srcまたはfileが必要 |
フォントファイルです。 font-file要素による読み込みでは、Copper PDF独自のプログラムで読み込みますが、 こちらではjava.awt.Fontを使用します。通常はfont-file要素を使ってください。 |
types | フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
|
|
italic | フォントが斜体かどうかはフォントデータから取得されますが、ここで上書きすることもできます。 斜体にする場合はtrue、そうでない場合はfalseを設定してください。 | |
weight | フォントの太さはフォントデータから取得されますが、ここで上書きすることもできます。 100から900まで100刻みの値で設定してください。400が普通の太さです。 | |
cmap | (type="cid-keyed"の場合) | 横書きのCMap名です。 |
vcmap | 縦書きのCMap名です。 |
all-system-fontsはJava実行環境が利用可能なフォントを全て読み込みます。
属性 | 必須 | 説明 |
---|---|---|
dir3.0.0 | フォントファイルが格納されるディレクトリです。 font-dir要素による読み込みでは、Copper PDF独自のプログラムで読み込みますが、 こちらではjava.awt.Fontを使用します。通常はfont-dir要素を使ってください。 | |
types | フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
|
フォントの名前はフォントデータから取得されますが、 cid-keyed-font, font-file, system-fontにalias要素を追加することにより、さらにフォントの別名を追加できます。 記述方法はcore-font, symbol-fontのalias と同じです。
cid-keyed-font, font-file, system-fontにinclude, exclude要素を追加することにより、 有効な文字範囲を指定することができます。 記述方法はcore-font, symbol-fontのinclude, exclude と同じです。
generic-fontsにはCSSの一般フォントファミリ名に対応する5つの名前の要素、 serif, sans-serif, monospace, fantasy, cursiveが含まれます。
font-family等で指定するフォント名には、 実際のフォント名以外に5種類の一般フォントファミリ名を指定することができます。 generic-fontsは、この一般フォントファミリ名と実際のフォントとの対応付けをするものです。
属性 | 必須 | 説明 |
---|---|---|
font-family | カンマで区切ったフォント名を優先順位の高いものから順に記述します。 |
属性 | 必須 | 説明 |
---|---|---|
font-family | カンマで区切ったフォント名を優先順位の高いものから順に記述します。 |
属性 | 必須 | 説明 |
---|---|---|
font-family | カンマで区切ったフォント名を優先順位の高いものから順に記述します。 |
属性 | 必須 | 説明 |
---|---|---|
font-family | カンマで区切ったフォント名を優先順位の高いものから順に記述します。 |
属性 | 必須 | 説明 |
---|---|---|
font-family | カンマで区切ったフォント名を優先順位の高いものから順に記述します。 |
output.pdf.fonts.policyにembeddedを指定するか、 CSSで-cssj-font-policy: embedded;をしていすると 埋め込みフォントが使用されますが、出荷時のフォント設定ファイルでは、大抵の場合は全ての文字が のような組み文字になってしまいます。 これは、デフォルトのフォントが一般フォントファミリのserifになっており、serifはCID-Keyedフォントにした対応付けてないためです。
output.default-font-familyでデフォルトのフォントを変更するか、 あるいはフォント設定ファイルを修正して、一般フォントファミリを埋め込み可能なフォントに対応させます。
例えばtruetypeディレクトリにIPAexフォント (https://ipafont.ipa.go.jp/) を配置した場合は、 generic-fontsの部分を以下のように設定することで、 フォントの埋め込みに、デフォルトでIPAフォントが使われるようになります。
<generic-fonts> <serif font-family="Mincho,IPAex明朝,UniKS-Myungjo,UniCNS-Ming,UniGB-Song" /> <sans-serif font-family="Gothic,IPAexゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" /> <monospace font-family="Gothic,IPAexゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" /> <fantasy font-family="Comic-Sans-MS,Gothic,IPAexゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" /> <cursive font-family="Comic-Sans-MS,Mincho,IPAex明朝,UniKS-Myungjo,UniCNS-Ming,UniGB-Song" /> </generic-fonts>