pdfmake устанавливает пользовательские шрифты на стороне сервера для CJK, arabi c и других иностранных языков - PullRequest
0 голосов
/ 16 января 2020

Я использую PDFMake для создания PDF-файлов на стороне сервера с NodeJS 12.

В PDF-файлах отображается текст, содержащий символы английского языка sh и символы иностранных языков. PDF-файлы работают, однако ни один из символов иностранных языков не отображается правильно. Я провел некоторое исследование, и похоже, что мне нужно установить собственный шрифт, который может обрабатывать символы иностранных языков.

Я следовал принятому здесь ответу, чтобы установить шрифт Google NotoSans на стороне сервера.

Как создать PDF на Node.js с использованием PDFMake и 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'),
    },
  }

Шрифт установлен правильно (все символы engli sh отображаются в этом шрифте правильно). Однако символы китайского и других иностранных языков не работают (они просто отображаются как пустые прямоугольники).

Какие другие шаги по устранению неполадок можно предпринять для решения этой проблемы? Спасибо!

Обновление: установленный мной шрифт на самом деле не поддерживает все языки, которые мне нужны, есть ли шрифт, который его поддерживает? Или мне нужно найти способ объединить несколько шрифтов в один шрифт?

1 Ответ

1 голос
/ 16 января 2020

Вы должны проверить языковую поддержку шрифта!

Noto Sans не поддерживает ни китайский, ни арабский c. DOCS

Вы можете определить язык содержимого и перенаправить на нужный шрифт: Список шрифтов Noto или использовать шрифт с широкой языковой поддержкой, например Unicode Fonts

...