2011-11-02 12 views
12

Próbuję wstawić znak Unicode & # x2207; lub & # x25BD ;, co widać w pliku PDF wygenerowanym przez Apache FOP.Jak wyświetlić znak Unicode za pomocą Apache fop? Pokazywanie "?" zamiast charakteru.

To, co zrobiłem do tej pory:

  1. Najpierw trzeba wiedzieć prawidłowego kodowy Unicode aby reprezentować znak według tej podstawowej pomocy Apache XSL-FO Input, że punkt kodowy Unicode można znaleźć w Unicode. org na liście operatorów matematycznych. Kod to ∇ & # x2207; NABLA, mógłbym także użyć ▽ & # x25BD; trójkąt skierowany w dół.

  2. Po znalezieniu właściwego kodu muszę wybrać czcionkę zawierającą niezbędne glif i Adobe PostScript i PDF Specyfikacja określić Base-14 Font Character Mapping, które muszą być dostępne dla każdego tłumacza i PDF Reader PostScript, więc szukać na liście i czcionki Symbol zawiera & # x2207; &#x2207, (brak czcionki zawiera & # x25BD; ▽ odrzucono)

  3. Następnie przeszukać kod wynikowy myślę, że powinienem użyć w XSL: FO jest:

    <fo:block font-family="Symbol"> 
    &#x2207; 
    </fo:block> 
    
  4. Problem jest, gdy generuje plik PDF, wynik nie jest tym, czego oczekiwałem "& # x2207;", ale zamiast tego pokazuje "?", czytam, że gdy nie może pokazać znaku, zwykle pokazuje "#", ale mój kod pokazuje "?".

  5. Używam Apache FOP 0.95, podejrzewam, że jest to ta wersja, która powoduje problem, i powinienem zaktualizować do wersji 1.0, ale w tej chwili jest to wersja używana w produkcji, a lider zespołu powiedział, że jest to trudne w moment, aby go ulepszyć.

Czy jest to problem, może być coś innego poza wersją? Czy mógłbyś być czymś dummie, którego zapomniałem? Jak wyświetlić znak Unicode za pomocą Apache fop?

+0

Próbowałem twój kod 'fo: block' w obu FOP 1.0 i FOP .95. W obu wersjach działało dobrze. Czy masz dostęp do stderr? Powinieneś otrzymać ostrzeżenie, jeśli jest problem z czcionką lub glifem. –

+0

@ DevNull w rzeczywistości, nie testowałem jeszcze w FOP 1.0, tylko FOP .95, zaczynam się uczyć, czy możesz mi powiedzieć, jak mogę uzyskać dostęp do stderr, aby sprawdzić, czy jest to kwestia czcionki czy glifu? –

+0

Prawdopodobnie robisz swój rozwój w IDE, takim jak Eclipse. Za każdym razem, gdy uruchamiasz swój kod, dane wyjściowe są wysyłane do konsoli; domyślnie (przynajmniej w Eclipse) pokaże stderr jako czerwone linie w tej konsoli. – Wivani

Odpowiedz

1

Spróbuj z wartości dziesiętnych symbolu (myślę, że nie trzeba rodzinę czcionek Symbol ten):

&#8711;

Dla wszystkich, którzy potrzebują znać wartości specjalnych symboli można znaleźć im

Powiązane problemy