CanvasContext.save,CanvasContext.restore 行为怪异?
发布于 5 年前 作者 guiyingqiao 3899 次浏览 来自 官方Issues

ctx.font = ctx.font.replace(/\d+px/, "10px");

console.log(ctx.font);

ctx.save();


ctx.font = ctx.font.replace(/\d+px/, "18px");

ctx.restore();

console.log(ctx.font);

输出:

10px sans-serif

18px sans-serif

根据文档预期结果为:

10px sans-serif

10px sans-serif

根据文档save应当保存当前的上下文的字体,在测试过程中发现font不能保存

是否可以在save的相关文档补充一下哪些属性需要自己保存。

更新:

调用 restore 后,

fillText会使用 restore后 的字体信息,

font getter 会返回 restore前 的字体信息,

measureText 返回的宽度是使用 restore前的字体信息计算的。

2 回复

是有问题,这样操作的需求场景是?

好像只是 ctx.font 在restore的时候值没有改回去,但实际效果是restore回去了。。

回到顶部