mpdfで複数のフォントを使いたい
mpdfを使ってhtmlをPDFに変換していますが、一番に優先されるフォントでしか表示されません。
複数のフォントを使えるようにするにはどうすればよいでしょうか。
★元となるhtml
http://pips.chu.jp/pdf/font2/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 14.0.8.0 for Windows">
<title></title>
<style type="text/css">
<!--
body{
font-family : IPAPゴシック,IPAP明朝;
}
-->
</style>
</head>
<body>
<font face="IPAPゴシック">この部分はゴシックにしたい(IPAPゴシック)</font>
<br><br>
<font face="IPAP明朝">この部分は明朝にしたい(IPAP明朝)</font>
</body>
</html>
★上記のhtmlをPDF変換するためにmpdfのデータを修正
手順1.「ttfonts/」フォルダの中にipagp.ttfファイルとipamp.ttfファイルを置きました。
手順2.「config_fonts.php」の「$this->fontdata()」にてフォントを定義しました。
$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",
),
~~ 中略 ~~
"ipag" => array(
'R' => "ipagp.ttf",
),
"ipam" => array(
'R' => "ipamp.ttf",
),
);
手順3.「config_fonts.php」の「$this->BMPonly」にもフォントを定義しました。
$this->BMPonly = array(
"dejavusanscondensed",
"dejavusans",
"dejavuserifcondensed",
"dejavuserif",
"dejavusansmono",
"pagp.ttf",
"pamp.ttf",
);
手順4.「config_cp.php」の「$unifonts」にてフォントを使いますよ宣言をしました。
CASE "ja":
if ($adobeCJK) {
$unifonts = "ipagp.ttf,ipamp.ttf,sjis,sjisB,sjisI,sjisBI";
}
★呼び出し元(index.php)は下記の通りです。
<?php
require_once('mpdf.php');
$html = file_get_contents("http://pips.chu.jp/pdf/font2/index.html");
$mpdf = new mPDF('ja','A4');
$mpdf->WriteHTML($html);
$mpdf->Output();
?>
★結果的には、手順4の $unifonts = "ipagp.ttf,ipamp.ttf,sjis,sjisB,sjisI,sjisBI";の部分の先頭に置いたフォントのみが使用されます。
上記の場合はipagp.ttfを先頭においたので、ファイル全てがipagp.ttf(ゴシック)で表示されます。
↓
http://pips.chu.jp/pdf/font2/mpdf/index.php
※ちなみにipamp.ttfを先頭に置いてみると、ipamp.ttf(明朝)で表示されました。
★最終的に、ひとつのhtmlの中に明朝系とゴシック系を混在させてデザインしたいと思っております。
htmlまたはmpdfの設定で間違っているところがありましたらご指摘頂きたいです。
何卒よろしくお願いします。
お礼
早々と回答ありがとうございます。 助かりました。 英語が出来ない限り完全フリーかどうか良く分からないですね。 用意されてませんということは ライセンスが無い ということなんだろうと思います でも英語なので解釈の違いの関係で少し不安になってきてしまいますね。 検討してみます。