mpdf version6.1環境を前提に記載します。
phpからhtmlをpdfに変換するライブラリとしてmpdfがあります。
歴史のあるライブラリのようなので、まだ利用されている方もいらっしゃると思います。
歴史があるだけあってコードを見てもムムムッってなりますね。
mpdf.phpだけで3万行以上あります。
さて表題の件ですがネットを見るとmpdf内のconfigファイルを直接編集する方法が出て来ます。
Composer経由でライブラリ管理した場合、一般的にvenderディレクトリはバージョン管理外に指定すると思いますので、上記以外の対応が必要になってきます。
以下の方法で対応が可能でした。
// フォントを探す際に_MPDF_SYSTEM_TTFONTSが優先して適用される。
// 外部から指定可能とするために未定義となっている。
define('_MPDF_SYSTEM_TTFONTS', APPPATH."ttfont/");
// CSSで利用するフォント名称
$JpFontName = 'ipapgothic';
// 日本語・中国語・韓国語を強制的に有効化
// ver6ではコンストラクタ内で'aCJK'が指定されていれば、useAdobeCJKが有効なる
$mpdf = new mPDF('ja+aCJK');
// fontのの指定を行います。
// setFontDataとかmethodで定義されていないのでmpdfのコンストラクタ内で実行しているfont設定処理も併せて実行します。
$mpdf->fontdata[$JpFontName] = array(
'R' => 'ipapgothic.ttf',
);
$mpdf->available_unifonts[] = $JpFontName;
$mpdf->default_available_fonts[] = $JpFontName;
// 日本語の場合、以下の指定をしないと文字化けします。
// 以下の英語のコメントがあるので、下の解説と併せると不要に見えますが指定しておきます。
//----------------------------------------------------------------------------------------------
// Add fonts to this array if they contain characters in the SIP or SMP Unicode planes
// but you do not require them. This allows a more efficient form of subsetting to be used.
//----------------------------------------------------------------------------------------------
// BMP:基本多言語面(Basic Multilingual Plane)
// ・現在よく使われている欧米のアルファベットやCJK漢字コードなどが割り当てられている。最初のUnicode規格で制定されていた領域
// ・この面のコードは16bit以内で表現できるため、コード効率がよい
// SMP:追加多言語面(Supplementary Multilingual Plane)
// ・現在ではあまり使われていない古代の文字や、顔文字などの記号類を収容
// SIP:追加漢字面(Supplementary Ideographic Plane)
// ・人名でしか使わないような、使用頻度の低い漢字などを収容
//----------------------------------------------------------------------------------------------
$mpdf->BMPonly[] = $JpFontName;
$mpdf->SetDefaultFont($JpFontName);