Fabric.js 在 Node.js 服务中后退字体的问题
🏷️ Fabric.js
在 fabric.js 中如果对包含中文和英文的文本设置只支持英文的字体时,中文的部分可能会变成:
- 乱码
- 随机的其它字体
- 空白
我本机是乱码,在服务器上是随机的其它字体,之前别的开发则遇到过显示为空白。
在 fabric.js 的 issue[1] 中提供了一个解决方案,但是当时估计是由于 node-canvas 组件的问题没法正常起作用[2],现在我这边本机和服务器上测试都是 OK 的。
javascript
const textFabric = new fabric.IText(badText, {
left: 0,
top: 0,
fill: 'red',
angle: 0,
fontSize: 160,
fontFamily: 'Noto Serif TC, Custom TC, Noto Serif SC',
});
写法有些类似于 CSS 中的 font-family
,效果是前面的字体不支持该字符时,会使用后面的字体显示。
另外,在本机(Windows)上运行时报了如下的错误:
(process:22956): Pango-WARNING **: 17:12:52.796: couldn't load font "Sterling_Script default Not-Rotated 40px", falling back to "Sans Not-Rotated 40px", expect ugly output.
最后发现是 Windows 的问题,需要在本机安装这个字体,之后才可以正常显示。[3]