2011-11-02 125 views
12

我一直試圖插入一個Unicode字符∇或者&#x25BD ;,所以它顯示在由Apache FOP生成的PDF中。如何使用Apache fop顯示Unicode字符?顯示「?」而不是性格。

這是我做過什麼,到目前爲止:

  1. 首先,你必須知道正確的Unicode碼點根據這個基本的幫助Apache XSL-FO Input代表字符,是Unicode的代碼點在Unicode中被發現。 org在數學運算符列表中。代碼是∇∇ NABLA,我也可以使用▽▽一個向下的三角形。

  2. 在找到正確的代碼後,我必須選擇一個包含必需字形的字體,並且Adobe PostScript和PDF規範指定Base-14 Font Character Mapping必須可用於每個PostScript解釋器和PDF閱讀器,因此我在列表和字體符號包含∇ &#x2207,(無字體包含▽ ▽丟棄)

  3. 後,搜索結果的代碼,我想我應該在XSL使用:FO是:

    <fo:block font-family="Symbol"> 
    &#x2207; 
    </fo:block> 
    
  4. 問題是當它生成的PDF,結果不是我所期望的「&#x2207;」,而是它顯示了一個「?」,我讀到當它不能顯示字符時通常顯示「#」,但我的代碼正在顯示「?」。

  5. 我正在使用Apache fop 0.95,我懷疑是導致問題的版本,我應該更新到1.0,但目前這是生產中使用的版本,並且團隊負責人表示很難該升級它的時刻。

那麼這就是問題,除了版本可能是別的東西?可能是我忘了做的東西? 如何使用Apache fop顯示Unicode字符?

+0

我在FOP 1.0和FOP.95中試過你的'fo:block'代碼。它在兩個版本都運行良好。你有權訪問stderr嗎?如果有字體或字形問題,您應該會收到警告。 –

+0

@DevNull實際上,我還沒有在FOP 1.0中測試,只是FOP .95,我開始學習這個,你能告訴我如何訪問stderr以查看它是字體還是字形問題? –

+0

也許你正在像Eclipse這樣的IDE中進行開發。無論何時運行代碼,輸出都會發送到控制檯;默認情況下(至少在Eclipse中)將在該控制檯中顯示stderr爲紅線。 – Wivani

回答

1

與符號的十進制值試試(我想你不需要符號字體系列本):

&#8711;

大家誰需要知道的特殊符號的值,你可以找到他們here