等了好久,現在終於也能自己即時做出中文字型了
fonten是一個即時線上切割字型檔案的工具,在你安裝了fonten server之後,你可以先上傳字型檔,之後根據需要的文字即時產生對應的字型檔,尤其像是中文,字型檔動輒10~20MB,如果我們只需要轉換幾個字,那切出來的檔案大概只有幾KB,是原本的千分之一的大小,因為只有指定的文字的字型被包在新的字型檔裡。這個專案是開源的,你可以自由的改造他來符合你的需求。
精確的說,fonten有一個server端提供動態字型和一組API與client互動。你需要架設你的fonten server然後上傳已經授權的字型到這個server來提供服務給自己的網站。我們沒有一個集中化的server,我們也不會提供原始字型。你可以免費使用Google App Engine/Java來架設你的fonten server,並且不用擔心,你不需要會寫Java。 有關GAE免費額度
@font-face{
font-family: myfont;
src: url('/font?id=opensans&text=一些文字&format=eot');
}
git clone git://github.com/flyakite/fonten.git
如果沒有需要很多字要轉換字型可以使用簡易版API,一般要少於2000字,中文編碼後大概要少於200字才能符合 IE的URL限制。
連到你的server的 /font 並且包含下列參數:
@font-face{ font-family: myfont; src: url('/font?id=opensans&text=中文&format=eot'); src: local('☺'); src: url('/font?id=opensans&text=中文&format=woff'') format('woff'); src: url('/font?id=opensans&text=中文') format('truetype'); }
如果你有很多字需要轉換的話可以使用進階API,
先發一個 POST request 到你的server的 /reserve 並且包含以下參數:
$.ajax({ type: 'POST', url: options.server + '/reserve', crossDomain: true, data: {text: text}, dataType: 'json', });然後 request 到 /font 並且包含簡易版API參數(不包含text)和以下參數:
var fontURL = "http://fonten-demo.appspot.com/font?id=opensans&token=" + reservedToken
使用 jQuery 外掛來改字型與fonten server互動會比較簡單 (原始碼)
使用範例 1:
$('#selector').fonten({ id: 'opensans' });fonten jQuery 外掛選項:
<div class="fonten" data-font-id="opensans">OpenSans</div> <div class="fonten" data-font-id="droidsans">DroidSans</div>
$.fonten({ fontTextDict: { 'opensans': 'ABCD' }, success: function(fontID, fontFamily){ console.log('成功了 可以開始畫canvas了'); } });
這個專案是基於Google開源專案sfntly並且使用Google App Engine/Java架設。
Shih-Wen Su
sushi@summeridea.com
github
Apache 2.0