プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
mPDF、フォント(.ttf)を追加する
※本記事はmPDF5.7.2を元に書いています。
 バージョンによっては手順が違うかもしれません。
 その場合はごめんなさい。

結論から書けば

1.「ttfonts/」フォルダの中に.ttfファイルを置く
2.「config_fonts.php」の「$this->fontdata()」にてフォントを定義する
3.「config_fonts.php」の「$this->BMPonly」にもフォントを定義してやる
4.「config_cp.php」の「$unifonts」にてフォントを使いますよ宣言をする
5.呼び出し元(mPDFをnewするところ)でフォントを指定する

の手順になります。

それでは詳細を書いていきます。

実際に例を挙げた方が分かりやすいと思うので、
「hoge_font.ttf」を追加すると仮定して説明していきますね。


1.「ttfonts/」の中に.ttfファイルを置く

まず「ttfonts/」フォルダの中に「hoge_font.ttf」を置きます。
パスで書くと「ttfonts/hoge_font.ttf」になりますね。


2.「config_fonts.php」の「$this->fontdata()」にてフォントを定義する

次に「config_fonts.php」を開いてください。
94行目辺りから以下の記述があるはずです。

$this->fontdata = array(
    "dejavusanscondensed" => array(
        'R' => "DejaVuSansCondensed.ttf",
        'B' => "DejaVuSansCondensed-Bold.ttf",
        'I' => "DejaVuSansCondensed-Oblique.ttf",
        'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
        ),
    "dejavusans" => array(
        'R' => "DejaVuSans.ttf",
        'B' => "DejaVuSans-Bold.ttf",
        'I' => "DejaVuSans-Oblique.ttf",
        'BI' => "DejaVuSans-BoldOblique.ttf",
        ),

~~ 中略 ~~

);

ここに「hoge_font.ttf」の定義を追加してあげます。

$this->fontdata = array(
    "dejavusanscondensed" => array(
        'R' => "DejaVuSansCondensed.ttf",
        'B' => "DejaVuSansCondensed-Bold.ttf",
        'I' => "DejaVuSansCondensed-Oblique.ttf",
        'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
        ),
    "dejavusans" => array(
        'R' => "DejaVuSans.ttf",
        'B' => "DejaVuSans-Bold.ttf",
        'I' => "DejaVuSans-Oblique.ttf",
        'BI' => "DejaVuSans-BoldOblique.ttf",
        ),

~~ 中略 ~~

    "hoge_font" => array(
        'R' => "hoge_font.ttf",
        ),

);

ちなみに「R」が普通の文字で使うフォントの指定です。
「B」が太字、「I」が斜体、「BI」が太字な斜体ね。
フォントファイルを用意すればそれぞれ個別に指定できるってことですね。


3.「config_fonts.php」の「$this->BMPonly」にもフォントを定義してやる

同じ「config_fonts.php」の272行目辺りから以下の記述があるはずです。

$this->BMPonly = array(
    "dejavusanscondensed",
    "dejavusans",
    "dejavuserifcondensed",
    "dejavuserif",
    "dejavusansmono",
    );

ここにも「"hoge_font"」を追加してあげます。

$this->BMPonly = array(
    "dejavusanscondensed",
    "dejavusans",
    "dejavuserifcondensed",
    "dejavuserif",
    "dejavusansmono",
    "hoge_font",
    );

ちなみにここで追加した「hoge_font」はフォントファイル名ではないのでご注意ください。
「$this->fontdata()」で定義した内容のキーの部分です。

"hoge_font" => array(
    'R' => "hoge_font.ttf",
    ),


4.「config_cp.php」の「$unifonts」にてフォントを使いますよ宣言をする

次に「config_cp.php」を開いてください。
93行目辺りから以下の記述があるはずです。

  CASE "ja":
    if ($adobeCJK) {
        $unifonts = "sjis,sjisB,sjisI,sjisBI";
    }

ここが日本語を出力するときに使う(かもしれない)フォントの一覧です。
この「$unifonts」の先頭に追加するフォントを書いてあげてます。

  CASE "ja":
    if ($adobeCJK) {
        $unifonts = "hoge_font,sjis,sjisB,sjisI,sjisBI";
    }

先頭に書く理由は優先順位の兼ね合いです。
出力するとき(newするとき)にフォントを指定する場合はどうでも良いのですが、
フォント未指定で出力すると左側優先になっているようです。

そのため、先頭に追加すればフォント未指定時でも今回追加したフォントで出力されます。
逆に言えば、最後尾に追加した場合は今まで通り
(未指定時は元々使っていたフォントで表示されること)になります。

これで前準備は終わりです。
「4.」で先頭に追加した場合は、既にフォント未指定時に使用されるフォントが
「hoge_font」になっているはずです。


5.呼び出し元(mPDFをnewするところ)でフォントを指定する

最後にmPDFのインスタンスを生成する際の第四引数がフォントの指定です。
ここで「hoge_font」を指定した場合もPDFが「hoge_font」で出力されます。

$pdf = new mPDF('ja','A4','8',"hoge_font");

これがmPDFに対するフォント追加の流れです。

というわけで、mPDFで使用するフォントの追加、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:mPDF  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事