《NOOK step by step:不破解,也中文》一貼從原理、思路和解決方案上給出了NOOK不破解情況下修改epub文檔以正確顯示中文的做法。其中的解決方案部分也有具體的操作步驟。由于原貼正文過(guò)長(zhǎng),現(xiàn)把具體的實(shí)例單獨(dú)出來(lái),成此一貼。 這里,僅舉一最簡(jiǎn)單的操作實(shí)例,即簡(jiǎn)化修改法(解決方案三)。 1.原文檔:從書倉(cāng)下載的“南方周末20100812.epub” 2.目的:由于該文檔中沒(méi)有NOOK的中文字體調(diào)用路徑,在NOOK上顯示為問(wèn)號(hào),不成正確顯示中文。因此,根據(jù)一文的原理和解決方案,在不破解的前提下,簡(jiǎn)單修改epub文檔,讓NOOK正確顯示中文。 3.應(yīng)用方案:簡(jiǎn)化修改css文件法。(解決方案三) 4.原理回顧: 4.1 NOOK中文字體調(diào)用顯示代碼:不完全再述,核心代碼是: 自裝內(nèi)存字體簡(jiǎn)化代碼:url(res:///system/media/sdcard/fonts/zw.ttf); 自裝TF卡字體簡(jiǎn)化代碼:url(res:///sdcard/fonts/zw.ttf); 默認(rèn)字體簡(jiǎn)化代碼:url(res:///system/fonts/DroidSansFallback.ttf); 4.2 將上述核心代碼添加到原css文件中字體調(diào)用顯示代碼中。 5.實(shí)施步驟: 5.1 改后綴名。將下載的epub文檔的后綴.epub改為.zip。如將“南方周末20100812.epub”改為“南方周末20100812.zip”。 5.2 打開(kāi)壓縮文件。進(jìn)入ops目錄,找到以.css為后綴的樣式表文件。這個(gè)樣式表文件也可能被制作者放在再下一級(jí)子目錄里。也有的epub文檔竟然沒(méi)有按規(guī)范把代碼文件和內(nèi)容文件放到ops目錄里,而是全部扔到根目錄下,暈。 南方周末20100812.zip的css文件為:about.css,放在OPS/css目錄下: META-INF OPS ├─.. ├─ css │ └─about.css ├─ images ├─ ArticelA01002FM.htm ... mimetype 5.3 打開(kāi)樣式表文件。雙擊壓縮文件中的.css樣式表文件,壓縮程序會(huì)用記事本打開(kāi)以供編輯。 注意:有的樣式表文件保存時(shí)有問(wèn)題,打開(kāi)的代碼是一大串沒(méi)有換行符的代碼,看著頭暈(coay.com生成的epub文檔都這樣,再暈)。解決辦法,Ctrl+A選擇全部,復(fù)制粘貼到一個(gè)空白word文檔里,在word里就可識(shí)別出規(guī)范分行的代碼;然后Ctrl+A選擇全部,復(fù)制粘貼回記事本里,這回就顯示規(guī)范分行的代碼了。 5.4 修改編輯樣式表文件。在打開(kāi)的樣式表文件中,找到以@開(kāi)頭的字體名稱定義代碼和body代碼,用上述NOOK代碼(3種代碼任選一)覆蓋粘貼,即用NOOK代碼取代原代碼。 一般來(lái)說(shuō),epub文檔中的.css中,定義字體調(diào)用的代碼為@打頭的代碼,字體名稱為font-family后的名稱“cnepub”。引用路徑是src:url后括號(hào)里的具體字體文件路徑。如下面就是一個(gè)epub文檔的字體定義和調(diào)用代碼,是典型的為SONY系列機(jī)型定義的:
修改的辦法,就是把上述NOOK的字體路徑代碼添加到這句SONY代碼之后。修改后的代碼為:
注意:此時(shí)要把SONY代碼后的";"(分號(hào)),改為","(逗號(hào)),在新添加的NOOK代碼后寫上";"(分號(hào))或者沒(méi)有標(biāo)點(diǎn)符號(hào)。 這里我舉的是南方周末20100812.epub的例子,其中的about.css中,定義字體調(diào)用的代碼為@打頭的代碼,字體名稱定義為"shucang":
這里調(diào)用的是本地(機(jī)器)字體微軟雅黑或宋體,或者epub文檔內(nèi)的"msyh.ttf"字體。實(shí)際上這個(gè)epub文檔沒(méi)有內(nèi)嵌字體,因此在NOOK上顯示不出中文,只是一堆問(wèn)號(hào)。 為了讓NOOK顯示中文,必須在其后添加一行NOOK代碼。但實(shí)際上是通不過(guò)的。只能干脆廢除這個(gè)完整的本地代碼,完全改為NOOK代碼。修改后的代碼為:
同樣要注意逗號(hào)和分號(hào)的修改。 5.5 保存修改。點(diǎn)擊保存所修改的css文件,壓縮軟件會(huì)提出是否將修改后的文件保存到原壓縮文件中,點(diǎn)“是”保存。并關(guān)閉壓縮軟件。 5.6 改后綴名。將修改后的zip文檔的后綴.zip改回.epub。如將“南方周末20100812.zip”改回“南方周末20100812.epub”。 這樣,簡(jiǎn)單地添加一句NOOK字體路徑語(yǔ)句,epub文檔就能順利在NOOK上閱讀了。 6.進(jìn)一步的討論: 6.1 關(guān)于通用代碼 上述修改,只是簡(jiǎn)單地添加一行代碼,即可在不破解的NOOK上顯示中文。但是,為了保持修改后的文檔能讓他人分享,還是不要?jiǎng)h除掉原來(lái)的SONY機(jī)型代碼,保留為好。 更進(jìn)一步,為了讓各種機(jī)型都能通用,可以修改為如下代碼,在SONY、DR800SG、NOOK、翰林V3+等各機(jī)型上都能正常顯示中文:
6.2 關(guān)于改用自己喜歡的字體 如果你自己不喜歡系統(tǒng)內(nèi)置的黑體字,想改用自己喜歡的字體,不破解能實(shí)現(xiàn)么?可以。把你喜歡的字體(比如方正蘭亭纖黑)FZLTXHK.TTF改名為zw.ttf,安裝在NOOK上內(nèi)存fonts目錄或TF卡fonts目錄里。這時(shí)字體調(diào)用的代碼為:
這段代碼的意思是:先看你是否在內(nèi)存fonts目錄里安裝了zw.ttf字體,如果沒(méi)有,再看是否在TF卡上安裝有zw.ttf,再?zèng)]有,則調(diào)用系統(tǒng)默認(rèn)的黑體字DroidSansFallback.ttf。三個(gè)有調(diào)用順序的字體,用逗號(hào)分隔,并依次尋找調(diào)用。 6.3 關(guān)于書倉(cāng)epub的問(wèn)題 上述簡(jiǎn)化修改辦法,在各大網(wǎng)站上下載的都可以成功顯示中文。但在書倉(cāng)下載的epub文檔,經(jīng)上述修改后,仍不正確顯示中文,仍是問(wèn)號(hào)滿屏。怎么辦? 這個(gè)問(wèn)題曾困擾我一整通宵,并無(wú)果而終。 后來(lái)請(qǐng)教高手,并仔細(xì)分析了書倉(cāng)epub文檔的代碼,發(fā)現(xiàn)問(wèn)題不在我的修改思路,不在我的修改代碼的準(zhǔn)確性,而出在書倉(cāng)的epub代碼不規(guī)范上。最關(guān)鍵的問(wèn)題就在于其epub包里的html文件中,對(duì)css樣式表的鏈接代碼有誤,采用了大寫字母,造成NOOK不能正確識(shí)別并調(diào)用css文件。 找到了問(wèn)題的結(jié)癥,解決就很簡(jiǎn)單。 解決辦法:用有整個(gè)目錄查找替換功能的文本編輯器(如EditorPlus)或網(wǎng)頁(yè)編輯軟件(如DreamWeaver),把不規(guī)范的大寫字母改為小寫字母,保存即可。 即,出問(wèn)題的代碼是:
修改為:
|
聯(lián)系客服