中文字体乱码解决方案
hellosean1025 opened this issue · comments
中文无法显示是因为node-canvas库缺乏相应的字体,node-canvas某一分支提供了加入字体的api,下面是解决办法:
git clone https://github.com/chearon/node-canvas.git ,然后进入到clone的项目目录,执行npm install
下载所需要的字体
具体代码如下:
var node_echarts = require('node-echarts');
var path = require('path');
var Canvas =require('./node-canvas'); //这里的路径是刚clone项目路径
Canvas.registerFont(path.join(__dirname, "华文仿宋.ttf"), { family: "华文仿宋"});
node_echarts({
canvas: Canvas,
font: '12px 华文仿宋',
path: __dirname + '/中文字体demo.png',
option: option,
width: 1000,
height: 500
})
下载了最新版,Canvas.registerFont是undefined
项目里嵌套项目是不是不太好。
另外,npm install 一次就可以了么?如果发不到linux上还需不需要重新构建。
@suxiaoxin 我使用了node-canvas之后,发布到linux服务器上,遇到了这个问题。Automattic/node-canvas#1075
你有遇到么?请问是怎么解决的呢?在线等...
竟然没等到。。。还是自己解决了(想了两天)
使用了2x图来将图片展示清晰。将画布宽高、echarts的刻度、文本等等全都调成正常的两倍,就可以将图片展示清晰了。
而要告诫大家的是,echarts初始化时的第三个配置参数中的devicePixelRatio以及getDataURL中的pixelRatio这两个参数对清晰度并没有什么卵影响。
实测linux系统直接安装微软雅黑字体可以解决