本篇討論關於中文的問題所以用中文寫好了
這裡主要探討的問題不是怎樣令TCPDF顯示中文字
(一般來說,目前最新版本只要使用內置的cid0ct font 基本上中文都正常顯示了)
而是部分 Android 系統,使用任何中文字型後,反而英文字缺字了
沒錯,是ASCII內的英文數字都消失了,情況就是這樣:
問題只在部分機種發生,Z3 (原裝Android 5.0.3) 有發生, Nexus 4 (5.1.1) 沒有問題
Adobe PDF ASCII 字符預設使用 Helvetica ,而個別機型內建字型不全導致
解決方法是用 addTTFFont 生成 TCPDF TrueTypeUnicode 字型
$font = TCPDF_FONTS::addTTFfont('../fonts/DroidSansFallback.ttf');
注意:addTTFfont 在最新版本已經被移出 TCPDF Class, 所以不要再用 $pdf->addTTFfont() 了
注意2:必須生成 TrueTypeUnicode 而非 CID0CT 的 Font, 因為後者不能將字型內嵌到PDF
經測試 微軟正黑體 和 DroidSansFallback 都可以,但推薦後者 (Free and Open Source)
而ODF格式如 AdobeFanHeitiStd-Bold.otf 無法使用
DroidSansFallback.ttf 可以從這裡取得 (Android 官方 Repository 的 Mirror)
https://github.com/android/platform_frameworks_base/blob/de0fe2daafb769cc37ca922ffef6dbafb8c6cae2/data/fonts/DroidSansFallback.ttf
注意3:此版本為最後一個可用的版本,之後的版本裁減了部分字體,無法使用
Reference: http://alucard-blog.blogspot.hk/2013/06/tcpdf-how-to-display-chinese-character.html
One Reply to “Android 下 TCPDF 中英文缺字解決方法”