前陣子我曾實驗利用 Cufón 在網頁上嵌入中文字型,當時的實驗結果是中文字型轉換為 JavaScript 格式,再經過 gzip 壓縮後,其大小雖然已經比原來的 TrueType 檔案小——以微軟正黑體為例,原始字型檔為 14 MB,經轉換後為 5.3 MB——但對於網路傳輸而言仍然過大,因此無法實際使用。
最近發現 Google App Engine 的大量傳輸 API 已經開放了,於是試著寫個東西來玩。我把 Cufón 字型的每個 Glyph 個別儲存到 Datastore,然後根據頁面的實際需要,重組成僅含所需字集的新檔案,藉此縮小所需傳輸的檔案大小。
| 字型檔案大小 | ||
|---|---|---|
| 使用 gzip 壓縮 | 不使用 gzip 壓縮 | |
| 範例1:載入完整字型 | 10.5 MB | 34.1 MB |
| 範例2:只載入所需的字集 | 22.3 KB | 61.4 KB |
目前的作法是把需要的字集直接用 GET 告訴伺服器,但這樣未來可能會遇上 GET 長度限制問題…… 我想到的解法是可改用 JavaScript 載入這個檔案,用 POST 傳遞字集資訊,同時或許也能用 JavaScript 自動整理出所需的字集(目前是用手動整理 :p)。
