如何修复Node.js gm(GraphicsMagicks)文本随机显示加粗的问题
Node.js gm drawText 文本随机加粗问题解决
我使用Node.js的gm库的drawText函数按坐标给图片添加文本,其他功能都正常,但文本会随机显示为加粗状态(如下图红框标记处)。我不需要文本显示加粗效果,如何让所有文本都保持正常样式?
代码示例:
const imageGM = gm(originalImagePath).font(path.join(__dirname, '../', 'assets/R-PMingLiU-TW-2.ttf')); const fntSize = 42; imageGM.fontSize(fntSize).drawText(xPos, YPos, value);
效果截图:
解决方法
- 显式指定字体权重:调用
font()方法时,传入配置参数设置字体权重为normal,避免gm自动匹配字体的加粗变体。修改代码如下:const imageGM = gm(originalImagePath) .font(path.join(__dirname, '../', 'assets/R-PMingLiU-TW-2.ttf'), { weight: 'normal' }); const fntSize = 42; imageGM.fontSize(fntSize).drawText(xPos, YPos, value); - 检查字体文件:确认使用的
R-PMingLiU-TW-2.ttf本身仅包含普通样式,没有内置加粗变体;同时检查系统中是否存在同名的加粗字体,避免gm误加载。可以换一个明确只有普通权重的字体文件测试。 - 强制禁用粗体:在绘制文本前调用
fontWeight('normal')(部分gm版本支持),确保绘制状态为普通样式:imageGM.fontSize(fntSize).fontWeight('normal').drawText(xPos, YPos, value);
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

