CanvasKit & opentype.js 实现文字阴影

这次的主角其实不是 CanvasKit, 而是 opentype.js, 本次目标主要想利用它获取文本的 Path.

当然获取 Path 不止这一种, 还有个 gero3/facetype.js. 不过官方介绍它生成的路径主要为了 Threejs, 我自己也看不明它生成的字体路径在 Threejs 之外应该怎么用.

opentype.js

opentype.js is an OpenType and TrueType font parser and writer. It allows you to access the letterforms of text from the browser or node.js.

我们可以利用它对文字字形 Glyph 做更细致的操作, 修改字符的形态等. 当然这一切都是建立在 opentype.js 能获取到一个字体字符的 Path 的基础上, 并且支持多语言.

opentype.js 的 Font 对象下有这样的方法 Font.getPath(text, x, y, fontSize, options)

得到 path 后就可以塞入到 canvaskit.js 中操作了.

opentype.js 的 Path 同样提供了 getBoundingBox() 方法

canvaskit.js

我们的目标是给文字加上阴影, 也就是要做一个探照灯的效果.

在配合 CanvasKit 的过程中, 唯一要注意的是处理原始 Path 的 transform.

通过 svg-path-visualizer.netlify.app 可以看到文字顶部 Y 值是负数

上一篇介绍了 CanvasKit 中 Paint 用法, 本篇就说明一下 CanvasKit 中滤镜 Mask 来实现模糊.

和标准 Canvas API 不同的是, CanvasKit 在模糊和非模糊效果之间切换不需要 save restore 来保存状态. 因为 Mask 是作用在 Paint 上, 当不用 Mask 时取消滤镜即可.

很容易在 Skia 仓库中找到相关例子

>>> Github

相关推荐
by__csdn1 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码1 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player2 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu05192 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys2 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选2 小时前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc
奇舞精选2 小时前
Vercel AI SDK:构建现代 Web AI 应用指南
前端·aigc
神仙别闹3 小时前
基于C语言实现B树存储的图书管理系统
c语言·前端·b树
玄魂3 小时前
如何查看、生成 github 开源项目star 图表
前端·开源·echarts
前端一小卒4 小时前
一个看似“送分”的需求为何翻车?——前端状态机实战指南
前端·javascript·面试