Как я могу отобразить символ Unicode с помощью Apache fop? Показывает? вместо характера.

Я пытался вставить символ Unicode ∇ или ▽, чтобы он отображался в PDF-файле, сгенерированном Apache FOP.

Вот что я сделал до сих пор:

  1. Сначала вам нужно узнать правильный код Unicode для представления символа в соответствии с этой базовой справкой Apache XSL-FO Input, эту кодовую точку Unicode можно найти на unicode.org в списке математических операторов. Код ∇ ∇ NABLA, я мог бы также использовать ▽ ▽ треугольник, направленный вниз.

  2. После нахождения правильного кода я должен выбрать шрифт, содержащий необходимый глиф, а в спецификации Adobe PostScript и PDF указать Base -14 Сопоставление символов шрифта, которое должно быть доступно каждому интерпретатору PostScript и программе чтения PDF, поэтому я ищу в списке, и шрифт Symbol содержит ∇&#x2207 (ни один шрифт не содержит ▽▽)

  3. #P5# <блочная цитата>
     <fo:block font-family="Symbol">
     &#x2207;
     </fo:block>
    
  4. Проблема в том, что когда он генерирует PDF, результат не такой, как я ожидал, «∇», но вместо этого он показывает «?», Я читал, что когда он не может показать символ, обычно отображается «#», но мой код показывает "?".

  5. Я использую Apache fop 0.95, я подозреваю, что эта версия вызывает проблему, и мне следует обновить ее до 1.0, но на данный момент эта версия используется в производстве, и руководитель группы сказал, что в данный момент ее сложно обновить. .

Так вот в чем проблема, может что-то еще кроме версии? Может быть, я что-то забыл сделать? Как я могу отобразить символ Unicode с помощью Apache fop?


person Juan Marcos    schedule 02.11.2011    source источник
comment
Я попробовал ваш код fo:block как в FOP 1.0, так и в FOP .95. В обеих версиях работало нормально. У вас есть доступ к stderr? Вы должны получить предупреждение, если есть проблема со шрифтом или глифом.   -  person Daniel Haley    schedule 05.11.2011
comment
@DevNull на самом деле, я еще не тестировал FOP 1.0, только FOP .95, я начинаю это изучать, не могли бы вы сказать мне, как я могу получить доступ к stderr, чтобы узнать, проблема ли это в шрифте или глифе?   -  person Juan Marcos    schedule 08.11.2011
comment
Вероятно, вы делаете свою разработку в среде IDE, такой как Eclipse. Всякий раз, когда вы запускаете свой код, вывод отправляется на консоль; по умолчанию он (по крайней мере, в Eclipse) будет отображать stderr в виде красных линий в этой консоли.   -  person Wivani    schedule 09.12.2011
comment
Вероятно, ваша конфигурация FOP не включает шрифт, подходящий для замены шрифта Symbol, или у вашей программы для чтения PDF есть проблемы со шрифтом Symbol.   -  person gioele    schedule 17.12.2011
comment
@gioele Я согласен с вашим первым утверждением, возможно, конфигурация FOP не включает подходящий шрифт, я только что закончил использовать svg для его рисования, я провел все эти исследования, чтобы избежать использования svg, но в конце концов я не смог это решить, кстати, я больше не работаю с xsl:fo.   -  person Juan Marcos    schedule 19.12.2011
comment
В какой операционной системе вы используете Java? Если это тип Linux/Unix - вам может потребоваться проверить локаль вошедшего в систему пользователя и/или убедиться, что у вас установлен флаг -Dfile.encoding (вероятно) 'utf-8'..... Если вы являются окнами, -Dfile.encoding может иметь значение, но не локаль (я не думаю). Если у вас есть доступ к обоим Windows / *nix - попробуйте на обоих - вы получите тот же результат?   -  person monojohnny    schedule 18.02.2014
comment
Я мог представить, что код OP не будет работать, если fo xml объявляет кодировку, отличную от UTF-8.   -  person Stefan Hegny    schedule 14.07.2016


Ответы (1)


Try with the decimal value of the symbol (I think you don't need the Symbol font family for this):

&#8711;

Всем, кому нужно знать значения специальных символов, вы можете найти их здесь

person luchoct    schedule 23.01.2012