认识一下 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 链接

相关推荐
浩星6 小时前
react的框架UmiJs(五米)
前端·javascript·react.js
Niyy_8 小时前
前端一个工程构建多个项目,记录一次工程搭建
前端·javascript
快乐非自愿10 小时前
常用设计模式:工厂方法模式
javascript·设计模式·工厂方法模式
十年磨一剑~10 小时前
html+js开发一个测试工具
javascript·css·html
计算机小手10 小时前
快速搭建一个 GitHub 开源项目导航网站,提供便捷的信息抓取、智能摘要、分类管理功能
经验分享·docker·github·开源软件
汪汪队立大功12311 小时前
JavaScript是怎么和html元素关联起来的?
开发语言·javascript·html
粟悟饭&龟波功12 小时前
【GitHub热门项目】(2025-11-12)
github
GISer_Jing14 小时前
Node.js 开发实战:从入门到精通
javascript·后端·node.js
5335ld14 小时前
后端给的post 方法但是要求传表单数据格式(没有{})
开发语言·前端·javascript·vue.js·ecmascript
QDKuz14 小时前
掌握Vue2转Vue3, Options API 转 Composition API
前端·javascript·vue.js