社群版本:
將檔案置入 Dropbox 或 Google Drive,在 Android / iOS 上使用 App 打開,選擇使用 Pebble Time App 開啟,就會開始在 Pebble 上安裝語言包。
注意:手錶韌體需要在 2.3.1 版以上。
整理自語言包的做法 by Yao Wei。
參考此篇文章找到解包工具。
首先透過 Homebrew 安裝 Pebble SDK:
brew install pebble/pebble-sdk/pebble-sdk
接下來設定 Pebble SDK 的路徑(下載的工具會需要用)
export PEBBLE_SDK_PATH=/usr/local/Cellar/pebble-sdk/3.1/
利用裡面 pbpack_tool.py
去將字體包解開:
python pbpack_tool.py unpack nwsTb46-zh_TW.pbl zhtw
裡面會出現 000 到 018 的檔案,其中 000 是翻譯檔 (.mo),001-018 是字體檔,在中文包中為以下格式:
001 14px
002 14px 粗體
003 18px
004 18px 粗體
005 24px
006 24px 粗體
007 28px
008 28px 粗體
以後基本上是其他樣式的字體,在中文語系包裡面沒有使用,並且相同的檔案在打包工具中會自動進行合併。
原有語系包中 001 002 是一樣的字體,而且只放系統需要的字(但在 Pebble Time 中會使用小字體顯示部份通知訊息),003 004 使用一樣字體,005 006 007 008 四個也是一樣的字體,因此原本的語言包是沒有粗細之分的。
接下來就是使用 Pebble SDK 中的字體打包工具去從 TTF/OTF 做出字體檔,並取代掉原本的。
在 Pebble SDK 中 $PEBBLE_SDK_PATH/Pebble/common/tools/font/fontgen.py
是字體的生成工具,使用方法如下
python fontgen.py pfo --extended --list [glyphlist.json] 12 [input.otf] [output.pfo]
其中 12 是字體大小,請依照原本字體的大小去下。
glyphlist.json
的部分是要去取出部分字集的列表,我自己寫了一個工具可以從一串文字生成 JSON。
而在 fontgen.py
當中第 138 行:
bottom = self.max_height - self.face.glyph.bitmap_top
可以透過在後面加上 +2 或是 +6 去調整字在一行中的高度,越大會越下面,這在當原本字體大小小於指定大小時相當實用。(我是拿 16px 來包 18px 的字,當時就在後面下了 +2 來生成字體使其不會上偏)
最後,將 18px 的 .pfo
取代 003 004,24px 的 .pfo
取代 005 006 007 008 (並且如果有做 14px 的字,取代 001 002),再用 pbpack_tool.py
包回去即可:
python pbpack_tool.py pack pebble_zhtw.pbl zhtw/*
在 Pebble Time 上字體包(就現在而言)具有以下限制:
- 單一字體只能有 13000 字
- 整包字體包(包含翻譯與全部字體)大小約在 1.2M 以下 (詳細我沒試過)
最後感謝 Poren Chiang 跟 鄭健良 提供語言包製作的相關建議。
資料整理自台灣 Pebble 愛好者 Facebook 社團,主要原始作者為 Irvin 與 Yao Wei。