generated from napi-rs/package-template
-
-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Description
在使用 @napi-rs/canvas 进行 Canvas 绘图时,我发现无法通过数值权重设置字体的加粗效果。具体表现为:
ctx.font = '200 24px sans-serif'; // 数值权重设置被忽略fontVariationSettings 支持问题: 虽然文档显示支持可变字体,但实际使用中发现:
// 类型错误: 类型"SKRSContext2D"上不存在属性"fontVariationSettings"
ctx.fontVariationSettings = "'wght' 700";通过这个设置也是没有效果的
我的代码
// 引入@napi-rs/canvas
const { Canvas, createCanvas, GlobalFonts } = require("@napi-rs/canvas");
const { join, resolve } = require("path");
const { writeFileSync } = require("fs");
const path = require("path");
let fontPath = path.join(__dirname, "fonts", "AlimamaFangYuanTiVF-Thin-2.ttf");
// let fontPath = path.join(__dirname, "fonts/02", "SITKAVF-ITALIC.TTF");
GlobalFonts.registerFromPath(fontPath, "Alimama FangYuanTi VF");
// 创建一个画布
const canvas = createCanvas(800, 600);
const ctx = canvas.getContext("2d");
// 画白色背景
ctx.fillStyle = "#ffffff";
ctx.fillRect(0, 0, 800, 600);
ctx.textAlign = "start";
ctx.fillStyle = "black";
ctx.font = "200 39px 'Alimama FangYuanTi VF'";
ctx.fontVariationSettings = "'wght' 200, 'wdth' 85";
// 绘制文本
ctx.fillText("Hello, world!", 10, 50);
//保存为图片
const b = canvas.toBuffer("image/png");
writeFileSync(join(__dirname, "draw-emoji.png"), b);字体是可变字体,下图是字体的多个效果,
绘制出来的只有字体默认的wght:700 的字体
字体文件下载地址
https://www.iconfont.cn/fonts/detail?spm=a313x.fonts_index.i1.d9df05512.7f7b3a81GWZrEx&cnid=pOvFIr086ADR
<img width="1441" height="406" alt="Image" src="https://github.com/user-attachments/assets/8aae2950-7d01-4118-8d5f-b2757ceaf35f" />
环境信息
-
操作系统: Windows 11
-
Node.js 版本:v20.18.0
-
@napi-rs/canvas 版本:"^0.1.80",
-
测试字体: 阿里妈妈方圆体 VF,
Metadata
Metadata
Assignees
Labels
No labels