认识一下 canvaskit.js

Skia 和 canvaskit.js 关系

根据现有的信息, Chrome 在实现 canvas 的绘制指令时, 底层使用的是 Skia 引擎绘制. 当然了, 还包括 Flutter, Chrome OS 也使用了 Skia. 下面是 Skia 管方的介绍:

CanvasKit 是基于 Skia 图形库的 js 版本,它使用 WebAssembly (WASM) 技术将 Skia 的图形 API 导出到 Web 平台.

API

既然 canvaskit 是 Skia 的 js 版本, 那么在使用上他们应该又很多相似性. 不过 canvaskit 本身似乎没有独立的 API 页面, 只有 Skia 有. 但是, Skia 和 canvaskit 的 API 并不是一致的, 整体架构一样,但是大部分 API 命名是不一样的.

这是由于 canvaskit.js 是在 Emscripten 编译结果的另一层封装, 因此他们不一样.

下面信息来自 github.com/google/skia...

可以看到 Emscripten 对 SkPath 在binding 时并没改名字.

但是在封装到 Canvaskit 对象的时候改了名字. 直接挂载到 Canvaskit.Path 下了.

所以在使用 canvaskit 时, 目前看最好的办法是在 Google 的 Skia 仓库中搜索来判断是否存在相关 API .

一个 CanvasKit demo: 文字排版路径

本想通过 canvaskit 来获取文字字形, 也就是 glyph 的路径. 发现一个 API 叫做 MakeOnPath, 但是实际上是另一种效果, 这个 API 是将文字沿着确定的路径排版. 暂时还不知道如何得到 glyph path.

如果有一个路径是圆形, 那么文字就按照原型排版. 最终效果如下

Github 链接

相关推荐
文艺理科生42 分钟前
Nuxt 状态管理权威指南:从 useState 到 Pinia
前端·javascript·vue.js
汪子熙1 小时前
解决 Node.js 无法获取本地颁发者证书问题的详细分析与代码示例
javascript·后端
秋秋小事2 小时前
React Hooks UseRef的用法
前端·javascript·react.js
辉长六加13 小时前
nodejs和vue安装步骤记录
前端·javascript·vue.js·npm·node.js
changuncle5 小时前
Angular初学者入门第三课——工厂函数(精品)
前端·javascript·angular.js
日月晨曦5 小时前
JavaScript事件循环:一次浏览器线程的"约会"指南
javascript
s3xysteak5 小时前
我要成为vue高手01:上下文
前端·javascript·vue.js
南篱5 小时前
JavaScript原型链没那么难:一文彻底搞懂
javascript·面试
程序员张35 小时前
Vue3+ElementPlus倒计时示例
javascript·vue.js·前端框架
专注VB编程开发20年5 小时前
c# .net支持 NativeAOT 或 Trimming 的库是什么原理
前端·javascript·c#·.net