添加字体到节点-canvas

Add font to node-canvas

在过去的一个小时里,我一直在尝试为我的图像添加字体,但没有成功。不幸的是,虽然这看起来真的很容易,但我无法让它发挥作用。

const Canvas = require('canvas');
var Font = Canvas.Font;
var BerlinSansFBRegular = Font ? new Font('BerlinSansFBRegular', path.join(__dirname,'./BerlinSansFBRegular.ttf')) : null;

//..

let canvas = new Canvas(GIF_WIDTH, height);
let context = canvas.getContext('2d');
context.addFont(BerlinSansFBRegular);
context.font = `13px BerlinSansFBRegular`;

windows C:\Users\...\project\fonts\BerlinSansFBRegular.ttf 中的目录,它可能与我提供路径的方式有关,因为它抛出未处理的承诺拒绝:错误:未找到。

在项目文件夹中是我的 .js 文件和 bat 所在的位置。

如果我没记错的话,(我不再在 Windows 机器上工作了),_dirname 将 return 根据 Node docs -> "The directory name of the current module" . 那不是您在这里寻找的路径。您需要字体文件的路径,该路径来自根 ../。我认为您需要在此处重做您的路径:

new Font('BerlinSansFBRegular', path.join(**__dirname**,'./BerlinSansFBRegular.ttf'))

为了确保我首先将确切的路径放在上面的行中:

new Font('BerlinSansFBRegular', path.join(C:\Users\...\project\fonts\BerlinSansFBRegular.ttf'./BerlinSansFBRegular.ttf'))

看看是否return正确,然后使用root的节点实现来归档。

记住,您总是有 process_cwd 来找到当前路径。

希望对您有所帮助。