mpdf增加字体并进行使用
1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts
2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。
3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式即可。
附FontVariables.php文件代码:
1 <?php 2 3 namespace Mpdf\Config; 4 5 class FontVariables 6 { 7 8 private $defaults; 9 10 public function __construct() 11 { 12 $this->defaults = [ 13 14 //指定要使用的字体度量: 15 //-'winTypo使用OS/2表中的sTypoAscender等,通常建议使用-BUT 16 //-“win”使用OS/2中的WinAscent等,inpractice似乎在Windows环境中更常用 17 //-'mac'使用hhea表中的Ascender等,并在mac/OSX环境中使用 18 19 'fontDescriptor' => 'win', 20 21 //对于自定义字体数据文件夹,请设置配置项“fontDir”。它也可以是目录阵列, 22 //然后将返回第一个找到的文件 23 //可选地设置字体(在“fontdata”中定义的名称)以用于缺少的字符 24 //使用useSubstitutions时。使用覆盖范围广的字体-dejavusansconsted是一个好的开始 25 //只能使用子集(否则将添加非常大的文件) 26 //可以指定多个字体,但每个字体都会增加脚本的处理时间 27 28 'backupSubsFont' => ['dejavusanscondensed', 'freesans', 'sun-exta'], 29 30 //可选地设置用于CJK字符的字体(名称在“fontdata”中定义如下) 31 //使用useSubstitutions时,在平面2 Unicode(>U+20000)中。 32 //如果可用,请使用类似hannomb或sun-extb的字体 33 //只能使用子集(否则将添加非常大的文件) 34 35 'backupSIPFont' => 'sun-extb', 36 37 /* 38 此数组定义CSS或HTML字体系列的翻译 39 到mPDF中使用的内部字体系列名称。 40 无论安装了何种字体,都可以包含任意数量的字体。 41 默认情况下,mPDF将采用CSS/HTML字体系列并删除空格 42 更改为小写,例如“Times New Roman”将被识别为 43 “时间新罗马” 44 您只需要定义其他翻译。 45 您也可以使用它来定义特定的替换,例如。 46 “helvetica”=>“arial” 47 设置通用替换(即无衬线或衬线字体) 48 通过在下面的“sans_fonts”中包含字体系列 49 */ 50 'fonttrans' => [ 51 'times' => 'timesnewroman', 52 'courier' => 'couriernew', 53 'trebuchet' => 'trebuchetms', 54 'comic' => 'comicsansms', 55 'franklin' => 'franklingothicbook', 56 'ocr-b' => 'ocrb', 57 'ocr-b10bt' => 'ocrb', 58 'damase' => 'mph2bdamase', 59 ], 60 61 /* 62 此数组列出TrueType.ttf或.otf字体文件的文件名 63 (内部mPDF)字体系列名称的每个变体。 64 ['R']=常规(普通),其他为粗体、斜体和粗体斜体 65 每个条目必须包含一个['R']条目,但其他条目是可选的。 66 仅此处输入的字体(文件)可用于mPDF。 67 将首选默认值放在首位 68 如果在以下任何文件中找不到命名字体,将使用此选项 69 'sans_fonts', 'serif_fonts' or 'mono_fonts' 70 71 ['sip-ext'] = 'sun-extb', name a related font file containing SIP characters 72 ['useOTL'] => 0xFF, Enable use of OTL features. 73 ['useKashida'] => 75, Enable use of kashida for text justification in Arabic text 74 75 如果引用了.ttc TrueType集合文件,则字体编号 76 在集合中。集合中的字体已编号 77 从1开始,如.ttc文件中所示,例如。 78 "cambria" => array( 79 'R' => "cambria.ttc", 80 'B' => "cambriab.ttf", 81 'I' => "cambriai.ttf", 82 'BI' => "cambriaz.ttf", 83 'TTCfontID' => array( 84 'R' => 1, 85 ), 86 ), 87 "cambriamath" => array( 88 'R' => "cambria.ttc", 89 'TTCfontID' => array( 90 'R' => 2, 91 ), 92 ), 93 */ 94 95 'fontdata' => [ 96 "dejavusanscondensed" => [ 97 'R' => "DejaVuSansCondensed.ttf", 98 'B' => "DejaVuSansCondensed-Bold.ttf", 99 'I' => "DejaVuSansCondensed-Oblique.ttf", 100 'BI' => "DejaVuSansCondensed-BoldOblique.ttf", 101 'useOTL' => 0xFF, 102 'useKashida' => 75, 103 ], 104 "simsun" => [ 105 'R' => "simsun.ttf", 106 // 107 ], 108 "simkai" => [ 109 'R' => "simkai.ttf", 110 ], 111 "simhei" => [ 112 'R' => "simhei.ttf", 113 ], 114 "fangzhenweibei" => [ 115 'R' => "fangzhenweibei.ttf", 116 ], 117 "fangzhenheiti" => [ 118 'R' => "fangzhenheiti.ttf", 119 ], 120 ], 121 //如果字体包含SIP或SMP Unicode平面中的字符,请将其添加到此阵列 122 ////但你不需要它们。这允许使用更有效的子设置形式。 123 'BMPonly' => [ 124 "simsun", 125 "simkai", 126 "simhei", 127 "fangzhenweibei", 128 "fangzhenheiti", 129 ], 130 131 //接下来的3个阵列做两件事: 132 // 1. 如果HTML/CSS中引用的字体对mPDF不可用,这些数组将确定替换了衬线/无衬线或单空格字体 133 // 2. 每个数组中的第一个字体将是在上述情况下替换的字体(否则,顺序无关紧要) 134 //使用mPDF字体系列名称,即小写和无空格(在$fonttrans中进行任何翻译后) 135 //始终包含“sans-serif”、“serif”和“monospace”等。 136 137 'sans_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'], 138 139 'serif_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'], 140 141 'mono_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'], 142 ]; 143 } 144 145 public function getDefaults() 146 { 147 return $this->defaults; 148 } 149 150 }