←前へ 目次↑ 次へ→

2.4. フォントの設定

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
fonts.xml
フォント設定ファイルです。Copper PDFが使用するフォントの設定が記述されています。
truetype
出荷時のfonts.xmlの設定では、このディレクトリ内のフォントファイルを自動的に読み込むようになっています。 使用したいフォントをここにコピー(あるいはシンボリックリンク)して、設定を反映してください。 truetypeというディレクトリ名はCopper PDF 2.0.2までTrueTypeフォントしか使用できなかったためで、 実際はOpenType CFF/Type2(.otf)フォント、WOFF3.1.0にも対応しています。
warrays
CID-Keydフォントを使用するために、 既定のフォントの幅情報が配置されています。
cmaps
CID-KeydフォントのためのCMapファイルが配置されています。
afms
コアフォントのフォントメトリックス情報がAFM形式で配置されています。
encodings
コアフォントのための文字名と各エンコーディングとの対応表が配置されています。

2.4.1. フォント設定の反映

Copper PDFはfonts.xmlを解析し、フォントへアクセスするための情報をfonts.xmlが配置されているのと同じディレクトリに、 fonts.xml.dbというファイル名で保存します。 Copper PDFはfonts.xmlとfonts.xml.dbのタイムスタンプを比較し、異なっていればfonts.xmlを自動的に読み込むため、 fonts.xmlへの変更はすぐに反映されます。

ただし、OSへのフォントのインストールや、truetypeディレクトリ内におけるフォントファイルの追加・削除・置き換え等を自動検出しません。 変更を反映させるためには、fonts.xml.dbファイルを削除してください。 動作中のCopper PDFはfonts.xml.dbの削除を自動的に検出して設定を再読み込みします。

2.4.2. ドキュメント中でのフォントの利用

ドキュメント中で使用されるフォントを特定するためのCSSプロパティは font-family(ファミリ名), font-weight(太さ), font-size(大きさ), font-style(スタイル) の4つです(fontプロパティでまとめて指定することもできます)。 指定されたファミリ名、太さ、スタイルから、記述された文字を表記できる最も近いフォントが選択されます。

該当する太さのフォントが見つからない場合は、機械的に文字の輪郭を拡張して太いフォントがつくられます (逆に指定した太さより細いフォントがない場合、機械的に細いフォントをつくることはありません。 最も細いフォントが使われるだけです)。

また、font-styleにitalicまたはobliqueが指定されたとき、 斜体スタイルのフォントが見つからない場合は、フォントを機械的に傾けます。 同時にfont-weightが指定されている場合は、 以下の表のとおり、font-styleの指定がitalicかobliqueかで選択されるフォントが異なることがあります。

フォントスタイルの選択
条件 italic指定の場合 oblique指定の場合
太さとスタイルが一致するフォントがある 太さとスタイルが一致するフォントを使用する 太さとスタイルが一致するフォントを使用する
太さだけ一致するフォントがある 太さが一致するフォントを傾けて使用する 太さが一致するフォントを傾けて使用する
スタイルだけ一致するフォントがある スタイルが一致するフォントを太くして使用する スタイルが一致するフォントを太くして使用する
太さだけ一致するフォントとスタイルだけ一致するフォントがある スタイルが一致するフォントを太くして使用する 太さが一致するフォントを傾けて使用する
太さもスタイルも一致するフォントがない 他の条件が一致するフォントを太くして傾けて使用する 他の条件が一致するフォントを太くして傾けて使用する

2.4.3. デフォルトのフォント

ドキュメント中でフォントが指定されていない場合、あるいは指定されたフォントが見つからない場合は、 output.default-font-family により設定されたフォントが使われます。 これはデフォルトではserif(ローマンあるいは明朝体)です。

CMapに該当するコードがない、 コアフォントにも該当する文字がない、かつインストール済みのフォントにも該当する文字がないといった理由で、 どうしても表示できない文字がドキュメント中に記述された場合は、 代わりに16進数でユニコードを表す組文字(のような文字)が表示されます。

2.4.4. フォントの種類

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。ただし、コアフォントの優先度は常に最低となります。

PDF/A-1を出力する場合は、上記の設定に関わらず、埋め込みフォントだけが使われます2.1.0。

outlinesを指定すると、埋め込みフォントが使われ、なおかつ全てのフォントがアウトライン化されます。3.1.1。outlines指定はPDF/A-1でも有効です。

2.4.5. コアフォント

コアフォントは、ほとんどの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つのコードがあります。 例えばダブルダガー(‡)を表示する場合はドキュメント中で‡または&#x2021と表記してください。

WinAnsiEncodingの文字一覧
- 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進ユニコードです。

Symbolの文字一覧
 
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進ユニコードです。

ZapfDingbatsの文字一覧

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

2.4.6. CIDフォント

欧文以外の文字をPDFに含める場合は、CIDフォントを用います。 フォントを埋め込む方法と、フォントを埋め込まない方法があり、 フォントを埋め込まない方法には、さらにCID IdentityとCID-Keyedフォントの2種類の方法があります。 どの種類のフォントを利用するかは、入出力プロパティoutput.pdf.fonts.policyの設定によります。

埋め込みフォントまたはCID Identityを使用する場合、 Copper PDFにフォントをインストールする必要があります。 Copper PDFの出荷時の状態では、 truetypeディレクトリ配置したフォントが自動的に読み込まれるようにfonts.xmlが設定されています。

埋め込みフォント

PDFにフォントの字体データそのものを埋め込む方式で、 環境に関係なく、確実に同じ字体で文字が表示されることが保証されます。

フォントを埋め込む場合、文書中で使用されている文字のフォントだけをPDFに含めるため、 ファイルサイズは最小限に抑えられますが、出力されたPDFは編集や加工には適しません。

表示や印刷の見栄えに厳密さが求められる場合や、 広く配布する文書、あるいは長期保存する文書に適しています。

CID Identity

フォントの埋め込みをせず、グリフID(フォントファイルに含まれる文字の番号)をそのままPDF内に記述する方式です。 Copper PDFの動作環境と、PDFを表示する環境に同一のフォントがインストールされている必要があります。 グリフIDは特定のフォントファイルに依存するため、 PDFを表示する環境にインストールされたフォントファイルが異なれば、 似たような書体のフォントであっても文字化けが発生するか、全く表示できなくなります。

同一のマシン上や、同じ組織内での編集や加工、印刷を目的とする文書に適しています。 フォントの埋め込みをする場合にくらべて、出力されるPDFのサイズは小さくなります。

CID-Keyedフォント

CID Identityフォント同様にフォントの埋め込みをしませんが、 Adobe社により公開されているコード体系(CMap)を使用します。

PDFを表示する環境で利用可能な、書体の近いフォントが自動的に選ばれるので、 特定のフォントファイルに依存することはありません。 ただし、使用できる文字はAdobe社が提供するCMapファイルで定義された文字に限られます。 また、全ての環境でPDFを表示できることが保証されるものではありません。

特定の言語環境のWindowsやMacOS、特定のバージョン以降のAdobe Readerなど、 表示・編集・加工する環境が比較的限られ、表示や印刷の見栄えに厳密さが求められない文書には有効です。 PDFのファイルサイズは最も小さくなります。

PANOSEコード

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
略 ...
参考情報
http://www.panose.com/ProductsServices/pan1.aspx
PANOSE-1コードの仕様です。
http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6OS2.html
TrueTypeフォントのOS/2テーブルの仕様です。
http://www.microsoft.com/typography/tools/tools.aspx
Microsoft社のFontToolsのページです。ここでダウンロードしたfonttools.exeを実行すると、展開されたファイルの中にttfdump.exeがあります。
フォント幅情報ファイル

文字列をレイアウトするとき、各文字の幅や基底線の情報が必要です。 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

2.4.7. フォントファイルの種類

埋め込みフォント、CID Identityフォントを使用する場合、 あるいは後述するようにCID-Keyedフォントのためにフォントの幅情報を抽出するためには、 Copper PDFが動作する環境にフォントファイルがインストールされている必要があります。

Copper PDFがサポートするフォントファイルの種類は以下の通りです。

TrueType "OpenType(TrueType flavor)"
一般的にTrueTypeと呼ばれるフォントファイルです。 .ttfまたは.ttc(複数のフォントを含むもの)という拡張子のファイルとして配布されています。
OpenType CFF/Type2
一般的に単にOpenTypeと呼ばれる、 CFF/Type2形式のOpenTypeフォントファイルです。 .otfという拡張子のファイルとして配布されています。 Copper PDF 2.0.3からサポートされました。

また、Copper PDFは上記のフォントファイル以外に、Java実行環境によりサポートされるフォントファイルを使用することができます。 SunのJava実行環境(1.5.0以降)はTrueTypeに加えてType1フォント(.pfa, .pfb)、 F3フォント(.f3b)をサポートしています。

2.4.8. フォント設定ファイル

PDF出力に使用するフォントの情報はフォント設定ファイル(fonts.xml) に記述してください。 フォント設定ファイルはXML形式で、ルート要素はfontsです。 フォント設定ファイルには各種ファイルのファイルパスの情報も含まれており、 ファイルパスはフォント設定ファイルからの相対パスとなります。

fonts要素には次の要素が含まれています。

コアフォントのエンコーディング(encodings要素)

コアフォントのエンコーディング情報のファイルを設定します。 通常は編集する必要はありません。

letterフォント(SynbolとZapfDingbats以外のフォント)を使用する場合、使用できる文字セットにはStandardEncoding、 MacRomanEncoding、WinAnsiEncodingの3種類があります。 Copper PDFの出荷時にはWinAnsiEncodingが設定されています。 core-fonts要素のencoding属性 の指定を変更することで切り替えることができます。

encodingsに含まれる要素
encoding要素
属性 必須 説明
src グリフコードとグリフ名の対応を記述したファイルです。

cmapファイル(cmaps要素)

CID-Keyedフォントのエンコーディング情報のファイルを設定します。 通常は編集する必要はありません。

cmapsに含まれる要素
cmap要素
属性 必須 説明
src Adobe Japan 1-4コードと文字コードの対応を記述したファイルです。
java-encoding 文字コードのJavaエンコーディング名です。

コアフォント(core-fonts要素)

コアフォントの設定です。 通常は編集する必要はありませんが、使用するエンコーディングを変更したり、 ドキュメントから参照する際の別名を追加することができます。

core-fonts要素
属性 必須 説明
unicode-src ユニコードと文字名の対応を記述したファイルです。
encoding エンコーディング名です。encodingsで設定されたものの中から選択できます。
core-fontsに含まれる要素

core-fonts要素にはletter-font, symbol-fontのいずれかを含むことができます。

letter-font

letter-font要素は通常の欧文フォントの設定です。

letter-font要素
属性 必須 説明
src AFMファイルです。
encoding core-fontsのencoding属性を上書きします。
symbol-font

symbol-font要素は記号フォント(SymbolまたはZapfDingbats)の設定です。

symbol-font要素
属性 必須 説明
src AFMファイルです。
encoding-src ユニコードとグリフコードの対応を記述したファイルです。
letter-fontおよびsymbol-fontに含まれる要素

letter-fontおよびsymbol-font内にalias要素を追加することで、 ドキュメント中のfont-familyで参照することができる別名が追加されます。

alias要素
属性 必須 説明
name フォントの別名です。

letter-fontおよびsymbol-font内のinclude, exclude要素により、 フォントが使用される文字範囲を指定できます2.0.3。 includeにより、フォントが使用される文字範囲を明示することができ、 excludeにより除外する文字範囲を明示することができます。 include, excludeの記述がない場合は、利用可能な全ての文字でフォントが利用されます。

include要素
属性 必須 説明
unicode-range カンマで区切ったユニコード範囲(詳細は後述)。
exclude要素
属性 必須 説明
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フォント(cid-fonts要素)

cid-fontsに含まれる要素

cid-fonts要素にはcid-keyed-font, font-file, font-dir, system-font, all-system-fontsのいずれかを含むことができます。

cid-keyed-font

cid-keyed-font要素はフォントファイルを使用する代わりに、 フォントの幅情報を記述したファイルを利用してCID-Keyedフォントを定義するものです。

cid-keyed-font要素
属性 必須 説明
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

font-file要素はフォントファイルを直接指定します。

font-file要素
属性 必須 説明
name フォント名フォントデータから取得されますが、ここで上書きすることもできます。
src フォントファイルです。
index 複数のフォントを含むTTCファイルの中で、使用するフォントの番号です。 省略した場合は0です。TTCファイルでない場合は無視されます。
types フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
embedded
埋め込みフォント
cid-identity
CID Identityフォント
cid-keyed
CID-Keyedフォント
italic フォントが斜体かどうかはフォントデータから取得されますが、ここで上書きすることもできます。 斜体にする場合はtrue、そうでない場合はfalseを設定してください。
weight フォントの太さはフォントデータから取得されますが、ここで上書きすることもできます。 100から900まで100刻みの値で設定してください。
cmap
(type="cid-keyed"の場合)
横書きのCMap名です。
vcmap 縦書きのCMap名です。
font-dir

font-dir要素は指定したディレクトリに存在するフォントファイルを直接まとめて読み込みます。

font-dir要素
属性 必須 説明
dir フォントファイルが格納されるディレクトリです。
types フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
embedded
埋め込みフォント
cid-identity
CID Identityフォント
system-font

system-fontはJava実行環境を利用してフォントを読み込みます。 OSやウィンドウシステムにインストールされたフォントを名前で指定できますが、 縦書きなどフォントの一部の機能に制約があります。

system-font要素
属性 必須 説明
name フォント名です。フォントデータから取得されますが、ここで上書きすることもできます。
src
srcまたはfileが必要
システムにインストールされたフォント名です。
file3.0.0
srcまたはfileが必要
フォントファイルです。 font-file要素による読み込みでは、Copper PDF独自のプログラムで読み込みますが、 こちらではjava.awt.Fontを使用します。通常はfont-file要素を使ってください。
types フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
embedded
埋め込みフォント
cid-identity
CID Identityフォント
cid-keyed
CID-Keyedフォント
italic フォントが斜体かどうかはフォントデータから取得されますが、ここで上書きすることもできます。 斜体にする場合はtrue、そうでない場合はfalseを設定してください。
weight フォントの太さはフォントデータから取得されますが、ここで上書きすることもできます。 100から900まで100刻みの値で設定してください。400が普通の太さです。
cmap (type="cid-keyed"の場合) 横書きのCMap名です。
vcmap 縦書きのCMap名です。
all-system-fonts

all-system-fontsはJava実行環境が利用可能なフォントを全て読み込みます。

all-system-fonts要素
属性 必須 説明
dir3.0.0 フォントファイルが格納されるディレクトリです。 font-dir要素による読み込みでは、Copper PDF独自のプログラムで読み込みますが、 こちらではjava.awt.Fontを使用します。通常はfont-dir要素を使ってください。
types フォントのタイプをスペース区切りで記述します。値は次のいずれかです。
embedded
埋め込みフォント
cid-identity
CID Identityフォント
cid-keyed-font, font-file, system-fontに含まれる要素

フォントの名前はフォントデータから取得されますが、 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要素)

font-family で指定できるserif, sans-serif, monospace, fantasy, cursiveという 5種類の一般フォント・ファミリに対応するフォントを指定するものです。

generic-fontsに含まれる要素

generic-fontsにはCSSの一般フォントファミリ名に対応する5つの名前の要素、 serif, sans-serif, monospace, fantasy, cursiveが含まれます。

font-family等で指定するフォント名には、 実際のフォント名以外に5種類の一般フォントファミリ名を指定することができます。 generic-fontsは、この一般フォントファミリ名と実際のフォントとの対応付けをするものです。

serif要素
属性 必須 説明
font-family カンマで区切ったフォント名を優先順位の高いものから順に記述します。
sans-serif要素
属性 必須 説明
font-family カンマで区切ったフォント名を優先順位の高いものから順に記述します。
monospace要素
属性 必須 説明
font-family カンマで区切ったフォント名を優先順位の高いものから順に記述します。
fantasy要素
属性 必須 説明
font-family カンマで区切ったフォント名を優先順位の高いものから順に記述します。
cursive要素
属性 必須 説明
font-family カンマで区切ったフォント名を優先順位の高いものから順に記述します。

2.4.9. フォント設定ファイルの設定例

デフォルトのフォントの変更

output.pdf.fonts.policyにembeddedを指定するか、 CSSで-cssj-font-policy: embedded;をしていすると 埋め込みフォントが使用されますが、出荷時のフォント設定ファイルでは、大抵の場合は全ての文字が のような組み文字になってしまいます。 これは、デフォルトのフォントが一般フォントファミリのserifになっており、serifはCID-Keyedフォントにした対応付けてないためです。

output.default-font-familyでデフォルトのフォントを変更するか、 あるいはフォント設定ファイルを修正して、一般フォントファミリを埋め込み可能なフォントに対応させます。

例えばtruetypeディレクトリにIPAフォント (http://ossipedia.ipa.go.jp/ipafont/) を配置した場合は、 generic-fontsの部分を以下のように設定することで、 フォントの埋め込みに、デフォルトでIPAフォントが使われるようになります。

<generic-fonts>
	<serif font-family="Mincho,IPA P明朝,UniKS-Myungjo,UniCNS-Ming,UniGB-Song" />
	<sans-serif font-family="Gothic,IPA Pゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" />
	<monospace font-family="Gothic,IPA ゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" />
	<fantasy font-family="Comic-Sans-MS,Gothic,IPA Pゴシック,UniKS-Gothic,UniCNS-Ming,UniGB-Heiti" />
	<cursive font-family="Comic-Sans-MS,Mincho,IPA P明朝,UniKS-Myungjo,UniCNS-Ming,UniGB-Song" />
</generic-fonts>

←前へ 目次↑ 次へ→
Copper PDF ©2012 Zamasoft. All rights reserved.