Имена шрифтов, содержащие запятую в одном контексте и дефис в другом - PullRequest
0 голосов
/ 02 декабря 2011

Если я создаю PDF с использованием Acrobat Professional 9, содержащего одно предложение, и делаю это предложение «Georgia Bold», а затем сохраняю, я получаю PDF, который ссылается на шрифт «Georgia Bold».

Если я тогда возьму этот шрифт из c: \ windows \ fonts \ georgiab.ttf и опрошу его, используя следующий код и itext 4.2, я получу имя шрифта "Georgia-Bold"

   String path = "georgiab.ttf";
   BaseFont baseFont = BaseFont.createFont( path, BaseFont.WINANSI, BaseFont.EMBEDDED );
   System.out.println( "Font " + baseFont.getPostscriptFontName() + " found in " +  path );

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

1 Ответ

1 голос
/ 03 декабря 2011

Имя, которое вы получаете от getPostscriptFontName(), является фактическим именем в файле шрифта. Для шрифта TrueType это анализируется в методе BaseFont TrueTypeFont.java ( строка 498 в 5.1.1.3 ).

Почему Adobe использует запятую? Это именно то, что они решили использовать. Если бы я предположил, что они, вероятно, выбрали запятую, потому что некоторые шрифты используют дефисы в своем имени, но большинство (если вообще вообще) никогда не используют запятую. Поэтому вместо My-Awesome-Font-Bold они выбрали My-Awesome-Font,Bold. Пользователи могут сказать, что они используют жирный вариант шрифта, а не просто шрифт, в котором есть слово «жирный».

...