Работает ли Java со шрифтами PCF? - PullRequest
1 голос
/ 26 ноября 2008

Я пытаюсь заставить IBM jre использовать шрифты PCF из установки X11 по умолчанию на моем компьютере с Linux. В частности, шрифт Adobe-Helvetica. Я пытался изменить fontconfig.properties в папке jre / lib, но независимо от того, что я делаю Java-швы, чтобы использовать некоторые другие шрифты. Я предполагаю, что есть некоторый алгоритм, как java VM пытается связать логические шрифты java с реальными физическими шрифтами в системе, даже если шрифт, указанный в config, не может быть использован. В Windows это довольно просто, но в Linux я не смог заставить его работать ни с чем, кроме шрифтов TrueType.
У кого-нибудь есть опыт настройки шрифтов в IBM jre для Linux?

Ответы [ 2 ]

1 голос
/ 17 декабря 2008

Пакет PCFFont , кажется, предоставляет возможность использовать шрифты PCF из Java. К сожалению, я думаю, что это происходит с помощью пользовательского класса PCFFont, который не расширяет класс java.awt.Font, поэтому я бы сказал, что его полезность, вероятно, ограничена. Однако, это может дать некоторые указатели на детали реализации для написания пользовательского подкласса Font, который может обрабатывать шрифты PCF. Поиск исходного кода не сразу очевиден; код для этого точного класса здесь .

Я бы сказал, что автор кажется немного смущенным, потому что он говорит о преобразовании шрифтов TrueType в PCF, чтобы вы могли использовать их со своей библиотекой, а Java уже поддерживает шрифты TrueType изначально. Но он, кажется, инженер из Sun, так что, возможно, он знал больше, чем я думаю; кроме того, это может быть очень устаревшим (было ли когда-нибудь время, когда Java не поддерживала TrueType?).

1 голос
/ 17 декабря 2008

Я провел все утро, изучая шрифты Java. Существует множество ограничений, некоторые из которых сняты в Java 1.6. У меня нет ответов, но у меня есть некоторая информация, которая может оказаться полезной.

Java различает внутренние шрифты системы и созданные шрифты. (Вспышка новостей для Sun: было бы неплохо прояснить это с помощью подклассов!) Системные шрифты выглядят как шрифты, установленные в JRE, возможно, плюс некоторые из шрифтов, установленных в вашей системе. Но, видимо, не все шрифты установлены в вашей системе; У меня тоже есть adobe-helvetica в моей системе Linux, но он не доступен из Java под любым именем, которое я могу придумать.

Между тем, вы можете создавать шрифты из файла шрифтов с помощью метода Font.createFont (). Вы должны указать тип файла шрифта. Единственные константы, которые я нашел для определения этих типов в классе Font, это TRUETYPE_FONT и TYPE1_FONT. Таким образом, похоже, что если шрифты PCF доступны, это не делается явным путем предоставления константы для их указания. Может быть, кто-то еще знает больше. В Интернете я видел некоторую информацию об использовании растровых шрифтов в Java ME, поэтому должно быть возможно использование других типов шрифтов.

После создания созданного шрифта вы можете добавить его в концепцию доступных шрифтов JVM с помощью вызова GraphicsEnvironment.registerFont (), но это доступно только в Java 1.6 и более поздних версиях.

...