关于ubuntu中node-canvas不能显示中文的解决方法

来源:互联网 发布:网络理论 编辑:程序博客网 时间:2024/04/28 22:35




关于ubuntu中node-canvas不能显示中文的解决方法:


比如我用如下方法设置文字内容:
var canvas = new Canvas(width,height);
var ctx = canvas.getContext('2d');
ctx.font = '16px Impact, serif';//Impact, serif这是英文字体名,
ctx.fillStyle = "#000";
ctx.fillText('test测试test', 10, 10);//由于是英文字体这里中文只能显示框框


这里不能显示中文是由于没有安装中文字体,或者安装了字体但是没有在ctx.font中正确指定中文字体名。


下面的步骤是安装字体的步骤,以及安装完后怎么设置字体名。



Step1. 到 windows 系统中去拷贝一份字体
一般说来,windows 系统的字体都在 C/Windows/Fonts 中,所以直接进去挑选喜欢的字体就行了。
复制某个字体并拷贝到某个临时文件夹。
这时会发现你复制的时候是一个字体,可是粘贴的时候不止一个文件,比如我这里“微软雅黑”就含有两个文件。


Step2. 在 /usr/share/fonts/ 中创建一个新的文件夹 winfonts
创建这个文件夹的主要目的是存放 windows 字体,免得和 ubuntu 字体混淆了
执行下面的命令
sudo mkdir /usr/share/fonts/winfonts
同时修改权限
sudo chmod 777 /usr/share/fonts/winfonts 


Step3. 将刚才临时文件夹中的字体复制到 /usr/share/fonts/winfonts 中

cd 到临时目录文件夹
然后执行下面的命令
sudo cp ./*.ttf /usr/share/fonts/winfonts/
 

Step4. 生成核心字体信息


分别执行如下三个命令
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -f -v


Step5重启ubuntu电脑


Step6查找字体名
虽然我知道他叫微软雅黑,但是使用的时候要使用他的英文名,中文名经过测试是不行的。

执行fc-list,寻找含有“微软雅黑”的信息,也就是刚才你新安装的字体。


像下面这一行:
/usr/share/fonts/cnfont/msyhbd.ttf: 微软雅黑,Microsoft YaHei:style=Bold,......


我们可以看到他的英文名叫Microsoft YaHei




好了,下面我们调整代码,只要改一行

ctx.font = '16px "Microsoft YaHei", Impact, serif';

这样就可以了







0 0
原创粉丝点击