Chia I Wu 兄提起了在 GNU/Linux 裡的 Firefox 的 Flash Plugin 的中文顯示問題。
我們討論了一下,
認為 Flash Plugin 很可能是把 AR PL KaitiM Big5、AR PL Mingti2L Big5 等幾個字型寫死在程式碼裡了,
因而導致很多網頁裡的 Flash,像是 中央氣象局全球資訊網,
裡面的字因為找不到字型所以全都是空白的。
今天突然想起了這個問題,於是嘗試了一下,
終於找到了較為可行的解決方案:
讓 AR PL ShanHeiSun Uni 偽裝成 AR PL Mingti2L Big5。
首先,請執行以下指令:
- 代碼: 選擇全部
xlsfonts | grep arphic-uming
如果螢幕上正確得列出了一大堆的字型,
表示您的字型設定大致上是正確的,
可以放心得繼續進行下一步了。
註:若沒有列出任何的字型,請安裝 ttf-arphic-uming 字型,
或是在 讓 Firefox 的 Flash Player 能完整顯示中文! 上有完整說明。
為了能讓 AR PL ShanHeiSun Uni 偽裝成 AR PL Mingti2L Big5,我們先產生一個指向 uming.ttf 的 bsmi00lp.ttf 符號連結:
- 代碼: 選擇全部
cd /usr/share/fonts/truetype/arphic/
ln -s uming.ttf bsmi00lp.ttf
接下來,我們要產生 bsmi00lp.ttf 的 Defoma 字型設定檔。我們可以直接拿 uming.ttf 的 Defoma 字型設定檔來用:
- 代碼: 選擇全部
cd /etc/defoma/hints/
cp ttf-arphic-uming.hints ttf-arphic-bsmi00lp.hints
並修改這個 ttf-arphic-bsmi00lp.hints 如下:
- 代碼: 選擇全部
category truetype
begin /usr/share/fonts/truetype/arphic/bsmi00lp.ttf
Family = Arphic-Ming
FontName = ShanHeiSun-Uni
Encoding = Unicode
Location = Chinese-Taiwan Chinese-China English Japanese
Charset = ISO10646-1 ISO10646-2 BIG5 GB2312 GBK GB18030 ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-9 ISO8859-10 ISO8859-13 ISO8859-14 ISO8859-15 JISX0212 JISX0208 JISX0201
UniCharset = BIG5 GB2312 GBK GB18030 ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-9 ISO8859-10 ISO8859-13 ISO8859-14 ISO8859-15 JISX0212 JISX0208 JISX0201
GeneralFamily = Ming
Weight = Light
Width = Variable
Shape = Upright
Alias = Arphic-MingUni ArphicMingUni
Foundry = Arphic
Priority = 20
X-Family = AR_PL_Mingti2L_Big5
X-Weight = medium
X-ElementAlias = foundry=arphic:family=uming:resx=100:resy=100
TTCap = halfwidth-bw=0.5 italic-angle=0.167 no-roblique no-oblique no-ritalic
end
接下來,就可以使用以下指令來向 Defoma 註冊 bsmi00lp.ttf 字型了:
- 代碼: 選擇全部
defoma-font -vt reregister-all /etc/defoma/hints/ttf-arphic-bsmi00lp.hints
如果您有安裝 AR PL ZenKai Uni 字型的話,您會發現在 Flash 上按滑鼠右鍵時 Flash Plugin 會抓到 AR PL ZenKai Uni 字型。解決這個問題最單純的方法莫過於向 Defoma 反註冊 AR PL ZenKai Uni 字型了:
- 代碼: 選擇全部
defoma-font -vt unregister-all /etc/defoma/hints/ttf-arphic-ukai.hints
接下來,請重新啟動 X 來讓以上變更生效。
最後,Flash Plugin 還有一個小問題:
它會抓 LC_ALL 環境變數來決定語系。
所以您必須設定好 LC_ALL 環境變數才能讓 Flash Plugin 正確顯示中文字。
例:
- 代碼: 選擇全部
LC_ALL=zh_TW.UTF-8 firefox
接下來就可以試試看 Flash Plugin 是否能正確抓到中文字型了:
GNU/Linux 真的很好玩吧?