我使用NodeJS 12在服务器端使用PDFMake生成PDF。
PDF呈现的文本混合了英语和外语字符。PDF可以正常工作,但是没有一个外语字符可以正确呈现。我做了一些研究,看起来我需要安装一个可以处理外语字符的自定义字体。
我按照这里接受的答案在服务器端安装了谷歌NotoSans字体。
How to create a PDF on Node.js using PDFMake and vfs_fonts?
fonts = {
NotoSans: {
normal: path.join(__dirname, '..', 'public', 'fonts/NotoSans-unhinted/NotoSans-Black.ttf'),
bold: path.join(__dirname, '..', 'public', 'fonts/NotoSans-unhinted/NotoSans-Bold.ttf'),
italics: path.join(__dirname, '..', 'public','fonts/NotoSans-unhinted/NotoSans-BlackItalic.ttf'),
bolditalics: path.join(__dirname, '..', 'public','fonts/NotoSans-unhinted/NotoSans-BoldItalic.ttf'),
},
}
字体安装正确(所有英文字符均以此字体正确显示)。但是,中文和其他外语字符不起作用(它们只是显示为空矩形)。
我还可以采取哪些其他故障排除步骤来解决此问题?谢谢!
更新:我安装的字体实际上并不支持我需要的所有语言,有没有支持它的字体?或者我需要找到一种方法将多种字体组合成一种字体?
发布于 2020-01-16 05:09:25
你必须检查字体的语言支持!
Noto Sans既没有中文也没有阿拉伯语支持。DOCS
您可以检测内容的语言并重定向到正确的字体:Noto Fonts List或使用具有广泛语言支持的字体,如Unicode Fonts
发布于 2020-12-02 16:48:51
如果您使用Arial Unicode MS作为@gmazoni segust,您将同时获得所有语言字符。使用来自pdfmake docs的过程,您可以从here下载字体
https://stackoverflow.com/questions/59759483
复制相似问题