GitHub标星6200:一种字体,变成千姿百态艺术字,设计师馋哭了

新闻 前端
这个字体叫Leon Sans,表面看去平平无奇。但事实上,它并不是普通的字体,体内蕴藏着魔力。
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

这个字体叫Leon Sans,表面看去平平无奇。

但事实上,它并不是普通的字体,体内蕴藏着魔力。

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上显示了:

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

如果想把生成过程的动画也显示出来,就加一行:

  1. 1<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script> 

GitHub项目页有个完整列表,各种功能的设置方法都能查到。说不定,排列组合会有惊喜呢。

大家也去玩一波吧。

GitHub传送门:

https://github.com/cmiscm/leonsans

官网传送门:

https://leon-kim.com/

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2021-12-29 20:37:20

计算

2015-08-31 13:59:28

软件定义网络SDN

2018-08-06 11:21:11

相机

2014-12-16 18:52:40

Esri

2011-07-27 10:11:08

JuniperDellCisco

2020-10-25 15:50:07

物联网工业技术

2012-07-30 09:58:53

2010-06-07 14:14:37

IPv6网络应用

2024-03-11 08:57:02

国产数据库证券

2022-02-18 08:03:05

物联网服务安全性

2020-07-28 14:23:55

代码开发Github

2022-03-25 22:57:37

系统设计架构

2021-03-24 10:01:54

GitHub代码开发者

2017-07-05 14:09:04

系统设计与架构java云计算

2019-07-21 19:45:23

GitHub代码开发者

2020-11-10 10:46:57

开源后台管理系统Base Admin

2020-03-13 10:18:43

GitHub 技术开源

2021-10-21 05:57:33

网盘开源云盘系统

2021-04-09 16:25:00

GitHub代码开发者

2018-09-18 09:45:45

比特币虚拟货币区块链
点赞
收藏

51CTO技术栈公众号