我開發的一款”非官方 CBETA 電子佛典 2″ app 近期的重要改進有兩個。一個是支援全螢幕顯示經文、另一個是效能上的明顯改進。
原本 app 在手機上(橫向)顯示的版面如圖:
空間利用不太好,有許多空白處不能拿來顯示經文。這就促使我開發全螢幕閱讀經文的功能。下圖是成品全螢幕模式,完整利用所有空間顯示經文。至於一些 app 功能呼叫,可以利用浮動按鈕(圖中右下一半隱形淡藍色按鈕),雖然目前放的功能不多。
另一個重要改進則是使用楷書字形的效能。之前因為寫 PWA 必須考量各執行環境差異、限制,導致每次載入經文要重新載入楷書字型。這問題源自於 Chrome 瀏覽器的 iframe 無法共享主視窗的 service workers,因此也無法共享 PWA 離線瀏覽的特色。為了避開此問題,我將字型檔存致本地 IndexedDB 作離線使用,在需要時用 JavaScript 載入主視窗與 iframe。但 iframe 的限制只要載入不同卷經文內容,字型就要重新載入,頗消耗電腦效能。特別是後來完整支援全字庫楷書更耗電腦效能,尤其是手機。
這問題存在一年半,一直沒想到怎麼解決。最近突然有想法並作實驗,發現在記憶體快取字型後,字型只須在 app 啟動時載入記憶體 1 次,結果經文載入效能明顯改善。以阿彌陀經為例,原本在我的 hTC U19e Android 手機開啟約 8 秒,使用快取後,降為 2 秒(4倍快!),幾乎與使用手機內建字型的效能差不多,而且能顯示的字也較多。
以下是各種 app 安裝通路:
App 商店安裝:
Apple App Store (macOS 10.11+ x86_64 & arm64, iOS 14.0+, iPadOS 14.0+):
https://apps.apple.com/app/id1546347689
Google Play Store (Android 4.4+):
https://play.google.com/store/apps/details?id=io.github.mrmyhuang.cbetar2
Amazon Appstore (Android 4.4+):
https://www.amazon.com/gp/product/B09VNGZQG6
Samsung Galaxy Store (Android 4.4+):
https://galaxy.store/cbetar2
Huawei AppGallery (Android 4.4+):
https://appgallery.huawei.com/app/C105837365
Microsoft Store (Windows 10+):
https://www.microsoft.com/store/apps/9P6TDQX46JJL
Snap Store (Linux amd64 & arm64):
https://snapcraft.io/cbetar2
Flathub (Linux x86_64 & aarch64):
https://flathub.org/apps/details/io.github.mrmyhuang.cbetar2
COPR (RHEL / Fedora / CentOS x86_64 & aarch64):
sudo dnf copr enable mrmyh/cbetar2
sudo dnf install cbetar2
檔案安裝:
Electron Apps (Windows x64 & arm64, Linux amd64 & arm64 & x86_64 & aarch64, macOS x86_64 & arm64, Android 4.4+):
https://github.com/MrMYHuang/cbetar2/releases
瀏覽器安裝 Progressive Web App (PWA):
https://MrMYHuang.github.io
安裝說明與開放原始碼:
https://github.com/MrMYHuang/cbetar2#install