pretty code

2022年1月19日 星期三

Kobo 字型顯示問題分析

今天在討論區看到有網友在發問為何 Kobo 無法顯示兩種字型?感覺這個問題很有意思,於是便分別在 Readmoo 和 Kobo 買了同樣的書,書名為《二人生活》。

初步分析結果,Readmoo 有分別針對不同句子指定字型,例如 body 是 gfont,特別的句子則是 kfont,而 kfont 我猜是楷體的意思,應該是 Readmoo 內部自己定義的。

至於 Kobo 其 CSS 檔案確實沒有指定第二種字型,只有單純指定顏色。

故我針對某句加了 Kobo 的內建字型來實驗,經實測還是無法指定字型。

網路查了一下,需使用 kobopatch 才能解決此問題。

使用 "Un-Force user font-family in KePubs:" 為關鍵字去查詢,終於在 kobopatch 的 yaml 檔案中看到註解。原來原本 Kobo 是可以使用兩種字型,但在開放使用者自訂字型後,Kobo 使用了一種簡單粗暴的方法來把原本電子書裡面的字型強制改成使用者的自訂字型,故才產生無法同時顯示兩種字型的問題。

長知識了,還好我對顯示多種字型沒什麼感覺,我只要可以顯示我的 Kindle 圓體就好了XD

2022/01/19 更新

本著實驗的精神,實際來試一下 kobopatch 的流程,雖然我是寫程式的,還是覺得有點複雜,跟我當初第一次閱讀 NickelMenu 的說明文件一樣XD

kobopatch 說明文件有提到,需要去該網站下載對應版本的韌體(kobo-update-4.30.18838.zip),並放入 src 資料夾內,但我進去該網站時,我的防毒軟體不知為何會跳出有毒的提醒?雖然我是相信那些開發者的,但既然我本來就有 telnet 進去機器的能力,簡單下個指令把我要的 .so 檔 tar 出來就好,再包成 kobopatch 程式要求檔名的 zip 檔(kobo-update-4.30.18838.zip)。

tar czvf KoboRoot.tgz -c /usr/local/Kobo libnickel.so.1.0.0

接著修改根目錄的 kobopatch.yaml,因為我想使用 override 的方式,避免去動原本 src 裡面的 yaml 檔案。


最後則是點擊 kobopatch.bat,如果沒有錯誤,在 out 資料夾便會出現我們常用的 KoboRoot.tgz,之後再用原本 patch 的方式更新系統即可。

patch 後的 libnickel.so.1.0.0 的差異如下:


接著修改 Kobo 原書的 CSS 檔案,簡單在原本顏色的 class 增加字型設定。


最後呈現出來的結果。

沒有留言: