0

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

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 所在的位置。

4

1 回答 1

1

如果我没记错的话(我不再在 Windows 机器上工作了), _dirname将根据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'))

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

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

希望这可以帮助。

于 2017-03-26T06:16:29.850 回答