GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了

慄體 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

這個字體叫Leon Sans,表面看去平平無奇。


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


但事實上,它並不是普通的字體,體內蘊藏著魔力。

Leon Sans最特別的地方在於,字體是由代碼構成的。有了這些代碼,它可以隨意變身。

比如,在暗夜裡閃耀出七色的光影:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


比如,在春天裡枝繁葉茂,花也開好了:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


比如,雨點打在地上匯成了河:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


形狀 (Shapes) 、效果 (Effects) 、動畫 (Animations) ,特技豐盛任君選擇。

魔法字體,是名叫Jongmin Kim的韓國小夥伴,為了慶祝寶寶降生而設計的。

不過,這不是獨樂樂,是普天同慶:代碼開源了,GitHub已經有6200星

除此之外,有線上Demo可以玩耍。

都能怎麼玩

最基本的操作,就是改變粗細 (Weight) 。


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


不止給標準字體調粗細,也給炫彩的藝術字調粗細:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


然後,加大一點難度,讓字體瑟瑟發抖。就是把線條變得曲折。

稍稍不平整,就會輕微的抖動。劇烈的彎折,就是觸電了,燒糊了:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


拔電,再也不動了。

不過還好,可以順手把它埋在春天裡 (誤) :


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


當然,埋法不止這一種。

也可以把字母截斷,變成粉紅色的“多米諾骨牌”,每張牌的寬窄還能自由選擇:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


還可以讓文字看上去,在平靜中流淌:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


線上Demo的功能一共十幾種,大家也可以自己試一下:


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


如果,Demo還不能滿足你的想象,那就去食用代碼吧:

字體是代碼組成的

文本有代碼表示:text,字體大小有代碼表示:size,粗細有代碼:weight,字間距有代碼表示:tracking……


GitHub標星6200:一種字體,變成千姿百態藝術字,設計師饞哭了


另外,每一種特技都有各自的代碼,也都有可以調節的參數。

比如,瑟瑟發抖叫做wave,抖動頻率用fps來調。

只要用這一串代碼,就可以把靈動的字體,在H5上顯示了:

 1let leon, canvas, ctx;
2
3const sw = 800;
4const sh = 600;
5const pixelRatio = 2;
6
7function init() {
8 canvas = document.createElement('canvas');
9 document.body.appendChild(canvas);
10 ctx = canvas.getContext("2d");
11
12 canvas.width = sw * pixelRatio;
13 canvas.height = sh * pixelRatio;
14 canvas.style.width = sw + 'px';
15 canvas.style.height = sh + 'px';
16 ctx.scale(pixelRatio, pixelRatio);
17
18 leon = new LeonSans({
19 text: 'The quick brown\\nfox jumps over\\nthe lazy dog',
20 color: ['#000000'],
21 size: 80,
22 weight: 200
23 });
24
25 requestAnimationFrame(animate);
26}
27
28function animate(t) {
29 requestAnimationFrame(animate);
30
31 ctx.clearRect(0, 0, sw, sh);
32
33 const x = (sw - leon.rect.w) / 2;
34 const y = (sh - leon.rect.h) / 2;
35 leon.position(x, y);
36
37 leon.draw(ctx);
38}
39
40window.onload = () => {
41 init();
42};

如果想把生成過程的動畫也顯示出來,就加一行:

1


GitHub項目頁有個完整列表,各種功能的設置方法都能查到。說不定,排列組合會有驚喜呢。

大家也去玩一波吧。

GitHub傳送門:

https://github.com/cmiscm/leonsans

官網傳送門:

https://leon-kim.com/

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: