| 站 內 搜 尋 |
|
日 曆 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 近 期 文 章 |
| 文 章 分 類 |
讓 Firefox 的 Flash Player 能完整顯示中文!
在日前的 IRC Conf 會議上,Chia I Wu 兄提起了在 GNU/Linux 裡的 Firefox 的 Flash Plugin
的中文顯示問題。我們討論了一下,認為 Flash Plugin 很可能是把 AR PL KaitiM Big5、AR PL Mingti2L
Big5 等幾個字型寫死在程式碼裡了。您可以使用:
strings /usr/lib/flashplugin-nonfree/libflashplayer.so | grep 'AR PL'
來看出一點端倪:除了這幾個字型之外,Flash Plugin 是無法抓到其它字型的。可是幾乎所有的 GNU/Linux
的中文使用者都已改用 AR PL ShanHeiSun Uni 及 AR PL ZenKai Uni 字型了,因而導致很多網頁裡的 Flash,像是 中央氣象局全球資訊網,
裡面的字因為找不到字型所以全都是空白的。
Non-free 的軟體就是這麼麻煩:明明是問題一堆,想動手解決卻是無門可入。
今天突然想起了這個問題,於是嘗試了一下,終於找到了較為可行的解決方案:讓 AR PL ShanHeiSun Uni 偽裝成 AR PL Mingti2L Big5。GNU/Linux 可是極具可塑性的呦!
事前準備:
進行字型的偽裝:首先,請安裝 firefox 及 flashplugin-nonfree 套件,並確認您的電腦裡的 Flash Plugin 已可在 Firefox 裡正常運作:
apt-get install firefox flashplugin-nonfree
接下來,安裝 ttf-arphic-uming 字型。ttf-arphic-uming 的字高有點問題,所以建議安裝 unstable 的版本。
註: 若您使用的是 Firefox 最新的 1.5 版,flashplugin-nonfree 可能無法正確得找到 firefox 的路徑,您可能會發現 Firefox 無法正確顯示 Flash 動畫。
您可以使用以下指令來修正這個問題:
cd /usr/lib/firefox/plugins/
ln -s /usr/lib/flashplugin-nonfree/flashplayer.xpt
ln -s /usr/lib/flashplugin-nonfree/libflashplayer.so
為了讓 Flash Plugin 能正確抓到 Defoma 所管理的字型,請參考 設 定 Defoma 所使用的字型 裡的說明,設定好 X Window 所使用的字型。 以下為 /etc/X11/XF86Config-4(XFree86 使用者)或 /etc/X11/xorg.conf(X.org 使用者)的範例:(藍色的字表示要修改的)
apt-get -t unstable install ttf-arphic-uming
Section "Files"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
# FontPath "unix/:7100" # local font server
# if the local font server has problems, we can fall back on these
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/lib/X11/fonts/CID"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/lib/X11/fonts/misc"
FontPath "/usr/lib/X11/fonts/cyrillic"
FontPath "/usr/lib/X11/fonts/100dpi"
FontPath "/usr/lib/X11/fonts/75dpi"
EndSection
Section "Module"
# Load "GLcore"
Load "bitmap"
Load "dbe"
Load "ddc"
# Load "dri"
Load "extmod"
# Load "freetype"
Load "xtt"
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection接下來進入 X Window 中,並執行以下指令:
註:
freetype 和 xtt 這兩個模組只能擇其一,其中 xtt 的效果會比 freetype 好一點,但是在 X.org 裡只實作了 freetype,所以 X.org 的使用者別無選擇只能使用 freetype 了。
如果螢幕上正確得列出了一大堆的字型,表示您的設定是正確的,可以放心執行下一步了。
xlsfonts | grep arphic-uming
為了能讓 AR PL ShanHeiSun Uni 偽裝成 AR PL Mingti2L Big5,我們先產生一個指向 uming.ttf 的 bsmi00lp.ttf 符號連結:檢視成果:
接下來,我們要產生 bsmi00lp.ttf 的 Defoma 字型設定檔。我們可以 直接拿 uming.ttf 的 Defoma 字型設定檔來用:
cd /usr/share/fonts/truetype/arphic/
ln -s uming.ttf bsmi00lp.ttf
並修改這個 ttf-arphic-bsmi00lp.hints 如下:(藍色的字表示要修改的)
cd /etc/defoma/hints/
cp ttf-arphic-uming.hints ttf-arphic-bsmi00lp.hints
接下來,就可以使用以下指令來向 Defoma 註冊 bsmi00lp.ttf 字型了:
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
如果您有安裝 AR PL ZenKai Uni 字型的話,您會發現在 Flash 上按滑鼠右鍵時 Flash Plugin 會抓到 AR PL ZenKai Uni 字型。解決這個問題最單純的方法莫過於向 Defoma 反註冊 AR PL ZenKai Uni 字型了:
defoma-font -vt reregister-all /etc/defoma/hints/ttf-arphic-bsmi00lp.hints
接下來,請重新啟動 X 來讓以上變更生效。
defoma-font -vt unregister-all /etc/defoma/hints/ttf-arphic-ukai.hints
Flash Plugin 還有一個小問題:它會抓 LC_ALL 環境變數來決定語系。所以您必須設定好 LC_ALL 環境變數才能讓 Flash Plugin 正確顯示中文字。例:GNU/Linux 真的很好玩吧?
接下來就可以試試看 Flash Plugin 是否能正確抓到中文字型了:
LC_ALL=zh_TW.UTF-8 firefox
不知道直接二进制替换行不行
perl -pi -e 's#AR PL KaitiM Big5AR PL ShanHeiSun Uni#g' flashplugin.so
[回應] bamanzi @ 03/12/2005, 10:11
Re: 讓 Firefox 的 Flash Player 能完整顯示中文!
?
我的firefox1.5用起來怎麼沒有這個問題?
我是用firefox自己如果遇到需要用到flash的網頁時,瀏覽器上方會出現「下載plugin」的機制,直接就安裝好flash了。
剛才看了同個網頁,中文沒問題喔。
^_^
(我的環境是mandriva2006)
[回應] Land @ 03/12/2005, 10:30
Dirty Hack 嗎?
直接修改字串,
把 AR PL KaitiM Big5 替換成 R PL ShanHeiSun Uni 是不行的。
錯誤訊息:程式記憶體區段錯誤
[回應] Tetralet @ 03/12/2005, 11:15
Mandriva 2006 所使用的字型是?
個人是沒用過 Mandriva,
可否請問在您的系統上,
Firefox 的 Flash Plugin 所使用的中文字型是?
[回應] Tetralet @ 03/12/2005, 11:17
Re: 讓 Firefox 的 Flash Player 能完整顯示中文!
我是照這篇http://moto.debian.org.tw/viewtopic.php?t=5535做也可以說!
我是用gentoo
[回應] Eason @ 03/12/2005, 11:31
把 AR PL KaitiM Big5、AR PL Mingti2L Big5 這兩個字型移掉試試!
本文的前提是在沒有安裝 AR PL KaitiM Big5、AR PL Mingti2L Big5 這兩個字型的情況下,
如何欺騙 Flash Plugin 系統已有安裝這兩個字型。
所以如果您有安裝這兩個字型的話,
請把 AR PL KaitiM Big5、AR PL Mingti2L Big5 這兩個字型移掉試試看!
[回應] Tetralet @ 03/12/2005, 12:43