最近搞緊喱個 Akaunting 會計軟件,用到中文嘅時候啲 PDF 出唔倒中文字,個情況就好似上面張圖咁。
有片睇:
Akaunting 個畫面係出到中文字嘅:
問題係出 PDF 嘅時侯,佢用咗 Embedded Font,係正確嘅選擇,不過個 font 係 DejaVu Sans 就出事,DejaVu Sans 本身雖然已經係 utf-8 (Unicode),不過就唔係咩 language 佢都有字符,冇嘅話就會出現方格,就好似上面最大張嗰張圖咁,而中文字就正正係冇字符嘅,死未?
可以點?冇問題嘅,用 custom fonts 囉。
Akaunting 用 Laravel/DomPDF 出 PDF,Laravel/DomPDF 係 DOMPDF 嘅 wrapper,於是,跟 DOMPDF 教你點樣可以用 custom fonts 就對了。
DOMPDF 提供咗一個 handy 嘅 PHP Utils 俾你自動咁增加 fonts,手續係:
- Download 隻 font 同埋 load_font.php 落去你隻 Akaunting 嘅 root
- 改一改 load_font.php:
#9 $fontDir = “storage/fonts” - 執行 terminal command:
php load_font.php “Font Name” ./FontFile.ttf - 修改一下 config/dompdf.php:
#81 “enable_font_subsetting” => true,#154 “default_font” => “YourFontName, DejaVu Sans, sans-serif”,
- 修改一下 resources/views/partialsprint/head.blade.php
#19 font-family: YourFontName, DejaVu Sans, sans-serif !important;
收工,就係咁簡單!
中文 font 我選咗 Google 同 Adobe 合作嘅 Noto Sans (思源黑體),佢有專為香港做嘅版本,而且,有網友再將思源加工做出昭源黑體,昭源黑體有齊 OTF 同 TTF 兩種,我哋要用 TTF,啱哂!