[分享] 讓 Firefox 的 Flash Player 能完整顯示中文!

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[分享] 讓 Firefox 的 Flash Player 能完整顯示中文!

文章Tetralet » 週六 12月 03, 2005 10:52 am

在日前的 IRC Conf 會議上,
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 真的很好玩吧?
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

Re: [分享] 讓 Firefox 的 Flash Player 能完整顯示中文!

文章訪客 » 週六 12月 03, 2005 12:10 pm

Tetralet 寫:它會抓 LC_ALL 環境變數來決定語系。
所以您必須設定好 LC_ALL 環境變數才能讓 Flash Plugin 正確顯示中文字。

用 LANG 就可以了,不一定要用 LC_ALL
如果只設其它小項就真的不行了…
訪客
 

文章zero0w » 週六 12月 03, 2005 1:47 pm

Debian 就有 defoma 工具,那麼其他 Linux/BSD 發行版本又如何解決?
以源碼改造你的工作生活。
zero0w
懵懂的國中生
懵懂的國中生
 
文章: 189
註冊時間: 週日 2月 15, 2004 3:38 am

文章訪客 » 週六 12月 03, 2005 2:47 pm

SuSE可以用字型目錄中的fonts.scale.*來重新將fonts.scale fonts.dir重寫過
正確來說應該是SuSEconfig --module fonts做的
詳情見
http://swyear.no-ip.org/index.php?op=Vi ... 2&blogId=1
訪客
 

文章pooh9038 » 週日 12月 04, 2005 11:53 am

小弟現用firefox 1.07,近發現flash的中文不能顯示(從前是正常的), 看了這篇及另一篇《關於flash player》

viewtopic.php?t=5535

進行了

ln -sf /var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType /usr/lib/X11/fonts/CID

在桌面運作出現了一些障礙:

首先是重新啟動X,進入Gnome桌面發生障礙,停滯在gnome splash的畫面。

但不知什麼原因,重新啟動數次後,竟然又能進入gnome desktop,但小弟沒有改動過/etc/X11/xorg.conf。

現在flash的正體中文和右擊工具列都能正確顯示。

可是,當小弟運行synaptic,但只見硬碟的燈在閃動,不見介面出現。

再 strace synaptic

反覆出現以下訊息:

close(6) = 0
open("/usr/X11R6/lib/X11/fonts/CID/._encodings.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/X11R6/lib/X11/fonts/CID/%encodings.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/X11R6/lib/X11/fonts/CID/.AppleDouble/encodings.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/X11R6/lib/X11/fonts/CID/encodings.dir/rsrc", O_RDONLY) = -1 ENOTDIR (Not a directory)
open("/usr/X11R6/lib/X11/fonts/CID/resource.frk/encodings.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/X11R6/lib/X11/fonts/CID/.resource/encodings.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
munmap(0xb70b3000, 4413) = 0
stat64("/usr/X11R6/lib/X11/fonts/CID/encodings.dir", {st_mode=S_IFREG|0644, st_size=4413, ...}) = 0
ope("/usr/X11R6/lib/X11/fonts/CID/ukai.ttf", O_RDONLY) = 6
fcntl64(6, F_SETFD, FD_CLOEXEC) = 0
fstat64(6, {st_mode=S_IFREG|0644, st_size=16656616, ...}) = 0
mmap2(NULL, 16656616, PROT_READ, MAP_PRIVATE, 6, 0) = 0xb60d2000
close(6) = 0
brk(0x824b000) = 0x824b000
brk(0x827b000) = 0x827b000

看來是字體出現問題。不知有何方法調整?
:ooops:
OS:Debian 5.0 stable(kernel 2.6.26-2-686)
Motherboard:Pcchips M848A
CPU:Duron 850 Mhz
Ram:Kingston 512Mb DDR
Harddisk:Segate 60G(7200rpm)
CD-RW:LG CR-RW CED-8120B
Display:GeforceFX5200
Lan:SIS900
Sound:SIS7012(CMI9739)
Monitor:Compucon H530S 15"LCD
pooh9038
懵懂的國中生
懵懂的國中生
 
文章: 153
註冊時間: 週二 10月 15, 2002 11:17 am
來自: 香港

文章pooh9038 » 週一 12月 05, 2005 2:17 am

虛驚一場,原來只須移除/usr/lib/X11/fonts/CID 中的TrueType便可回復原狀。

不過更改字體的設定真的要很小心。 :ooops:
OS:Debian 5.0 stable(kernel 2.6.26-2-686)
Motherboard:Pcchips M848A
CPU:Duron 850 Mhz
Ram:Kingston 512Mb DDR
Harddisk:Segate 60G(7200rpm)
CD-RW:LG CR-RW CED-8120B
Display:GeforceFX5200
Lan:SIS900
Sound:SIS7012(CMI9739)
Monitor:Compucon H530S 15"LCD
pooh9038
懵懂的國中生
懵懂的國中生
 
文章: 153
註冊時間: 週二 10月 15, 2002 11:17 am
來自: 香港


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客