2015-10-08 2 views
0

Мы используем PhantomJS для создания скриншотов с веб-страницы. На этой странице отображается текст, который может быть на любом языке: латинском, русском, китайском, арабском и т. Д. На моем локальном рабочем столе Ubuntu все работает, на рабочем сервере он отображает блоки для китайских иероглифов. Сервер AWS Linux, который является Centos-подобным.PhantomJS: китайские символы отображаются как блоки на производственном сервере

Шрифт используется DejaVu Sans:

* { font-family: "DejaVu Sans"; } 

DejaVu установлен на сервере:

ls -1 /usr/share/fonts/dejavu/ 
DejaVuSans-BoldOblique.ttf 
DejaVuSans-Bold.ttf 
DejaVuSansCondensed-BoldOblique.ttf 
DejaVuSansCondensed-Bold.ttf 
DejaVuSansCondensed-Oblique.ttf 
DejaVuSansCondensed.ttf 
DejaVuSans-ExtraLight.ttf 
DejaVuSans-Oblique.ttf 
DejaVuSans.ttf 
DejaVuSerif-BoldItalic.ttf 
DejaVuSerif-Bold.ttf 
DejaVuSerifCondensed-BoldItalic.ttf 
DejaVuSerifCondensed-Bold.ttf 
DejaVuSerifCondensed-Italic.ttf 
DejaVuSerifCondensed.ttf 
DejaVuSerif-Italic.ttf 
DejaVuSerif.ttf 

Является ли это проблемой шрифта?

Как я могу заставить PhantomJS отображать все символы?

ответ

0

DejaVu не имеет китайской поддержки. На самом деле почти нет шрифтов с поддержкой unicode на рынке, а те немногие, которые добились поддержки в полноэкранном режиме, превалируют над качеством (т. Е. Выглядят плохо).

Текстовый стек Linux достаточно умен, чтобы заменить другие шрифты, если требуемый шрифт имеет отверстие для покрытия, но это зависит от установленных шрифтов. На вашем рабочем столе установлен полный набор шрифтов i18n (GUI-ориентированный), ваш сервер - минимальный набор (без головы). Для достижения того, что вы хотите сделать, вам нужно установить на свой сервер больше шрифтов.

И вы не можете просто копировать шрифт вашего рабочего стола, наличие шрифта в производном Debian, например Ubuntu, и производная Fedora, такая как AWS, будет немного отличаться.

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

sudo dnf install 'font(:lang=zu)' (zulu coverage) 

или что-то подобное (замените д.н.ф. с ням, если ваша система старше). Если вы хотите выйти за борт sudo dnf, установите '* -fonts'. Если вы хотите понять, какой шрифт заменен и когда читаете документацию fontconfig (man fc-list & друзей)

Смежные вопросы