Android 下 TCPDF 中英文缺字解決方法

本篇討論關於中文的問題所以用中文寫好了

這裡主要探討的問題不是怎樣令TCPDF顯示中文字
(一般來說,目前最新版本只要使用內置的cid0ct font 基本上中文都正常顯示了)

而是部分 Android 系統,使用任何中文字型後,反而英文字缺字了


沒錯,是ASCII內的英文數字都消失了,情況就是這樣:2015-07-16 18.48.54

問題只在部分機種發生,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 中英文缺字解決方法”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.