mpdf增加字型並進行使用

赵瑛發表於2024-05-17

1、先將字型複製到目錄:\vendor\mpdf\mpdf\ttfonts

2、再修改檔案\vendor\mpdf\mpdf\src\Config\FontVariables.php,對照已經新增的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字型進行增加即可。

3、再在需要設定字型的文字加上font-family:fangzhenweibei;樣式即可。

附FontVariables.php檔案程式碼:

mpdf增加字型並進行使用
  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 }
View Code

相關文章