Java: шрифты выглядят искаженными в Linux, но хорошо в Windows - PullRequest
4 голосов
/ 01 сентября 2009

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

Я тестировал его только на новой установке Ubuntu 9.04 с OpenJDK 6, но я вполне уверен, что раньше сталкивался с подобными проблемами в Linux. Я также пытался открыть PDF с помощью других приложений Java PDF, таких как SwingLabs PDFRenderer и демонстрационный апплет IcePDF, и у них возникла та же проблема. На окнах все они прекрасно отображают документ. Я также открыл документ на той же машине с Ubuntu с помощью программы просмотра PDF по умолчанию. Evince визуализировал документ без проблем со шрифтами, поэтому я вполне уверен, что это общая проблема Java + Linux.

Для сравнения:
Это изображение было отображено в Windows.
Это изображение отображено в Linux. Я пометил несколько искаженных персонажей красными кольцами.
Этот также отображался в Linux. Похоже, что затрагиваются только стандартные шрифты.

Любая помощь приветствуется.

Ответы [ 10 ]

6 голосов
/ 01 сентября 2009

OpenJDK должен выпускать шрифты, которые защищены авторским правом. Установите Sun Java и шрифты будут немного лучше.

3 голосов
/ 01 марта 2012

У меня установлен OpenJDK в Linux, и все приложения были с очень, очень плохими шрифтами ... после многих попыток изменить шрифты, сглаживания, установки шрифтов Lucida и т. Д. Я обнаружил, что моя проблема в /etc/fonts/conf.d/35-freefont.conf.

Я просто удалил эту ссылку, запустил fc-cache -f и все новые приложения Java получили гораздо лучший шрифт.

В моем случае конфигурация freefont говорила Java использовать его вместо гораздо лучших шрифтов. Если у вас есть похожая проблема, просто запустите sudo mv /etc/fonts/conf.d /etc/fonts/conf.d.off и fc-cache -f и проверьте ...

Если это работает, у вас также есть неправильная замена шрифта по умолчанию, и вы должны восстановить этот каталог и протестировать каждый файл.

Если он останется прежним, то у вас, вероятно, есть другая проблема (не забудьте восстановить conf.d dir)

Обновление

В Ubuntu 12.04 у меня была похожая проблема, все шрифты Java выделены жирным шрифтом. Удаление /etc/fonts/conf.d/65-nonlatin.conf исправило проблему.

1 голос
/ 22 июня 2012

Установите последнюю версию OpenJDK. Или перекомпилируйте Freetype с включенной подсказкой. Срок действия патентов Apple относительно подсказок истек.

1 голос
/ 21 сентября 2010

Вы можете использовать openJDK и использовать шрифты Sun / Oracle!

Сначала установите openDJK (как пакеты времени выполнения, так и пакеты dev)

Затем установите только среду выполнения Sun / Oracle. Это установит шрифты, но вы все равно будете использовать java openJDK для запуска всего.

1 голос
/ 02 сентября 2009

Существует 8 стандартных семейств шрифтов, которые вам не нужно вставлять, как должно обеспечить средство просмотра PDF. В противном случае они будут заменены. Как выглядит PDF в других программах просмотра PDF с открытым исходным кодом Java (Multivalent, JPedal)?

1 голос
/ 01 сентября 2009

Вы можете попробовать использовать pdffonts , чтобы помочь вам проанализировать проблему - он по крайней мере скажет вам имена шрифтов, используемых в файле PDF, их тип, если они встроены и т. Д. Если шрифты не встроены, вы можете попробовать установить их на компьютере с Linux.

1 голос
/ 01 сентября 2009

Может быть, намеки на шрифт испортились. Проверьте настройки подсказок для шрифтов ОС Linux, с которой вы работаете.

Может также быть шрифтом - попробуйте указать другой. Тот, который вы используете, может просто плохо отрисовываться в Linux - некоторые просто делают. Палатино - один из тех, кого я нахожу особенно плохим.

0 голосов
/ 25 февраля 2013

Я не тестировал его, но в соответствии с этим сообщением на форуме inductiveautomation.com вы можете исправить это, установив шрифты:

sudo apt-get install msttcorefonts

и изменение люцидазана для ариала в свойствах шрифтов Java:

sudo nano /usr/lib/jvm/java-6-sun/jre/lib/fontconfig.properties
0 голосов
/ 01 сентября 2009

Шрифты встроены в PDF?

0 голосов
/ 01 сентября 2009

Попробуйте скопировать все шрифты Windows и поместить их в среду Linux.

...