一直用 oXygen 編輯器來處理 XML 相關檔案, 後來發覺寫文件的功能日益強大, 但輸出 PDF 有些障礙。也不是太大問題, 需要一些設定, 這裡的說明將包含 FO, Docbook, DITA。此外, 索引方面以 DITA 輸出為例, 示範更換 FO 處理器為 XEP 個人版。
以下環境是 OS X 10.6 加上 oXygen XML Editor 12.1。 請留意檔案位置, Windows 下注意 TTF 檔的差異。
另外, FO, Docbook, DITA 都有自由軟體套件, 協助編寫文件, 沒有 oXygen 編輯器也能運作。
FO 設定
產生字型規格檔, 參考: http://xmlgraphics.apache.org/fop/0.95/fonts.html
假定把 FOP 1.0 安裝在 /w/j/x/fop-1.0 目錄。執行下列指令, 產生字型規格檔:
$ export CL=/w/j/x/fop-1.0/build/fop.jar:/w/j/x/fop-1.0/lib/avalon-\ framework.jar:/w/j/x/fop-1.0/lib/commons-logging.jar:/w/j/x/fop-\ 1.0/lib/commons-io.jar $ java -cp $CL org.apache.fop.fonts.apps.TTFReader \ /Library/Fonts/Arial\ Unicode.ttf ArialUnicode.xml
產生 ArialUnicode.xml, 放在 /w/proj/xml/fo/ArialUnicode.xml。
建立 FOP 設定檔 userconfig.xml, 放在 /w/proj/xml/fo/userconfig.xml
<fop version="1.0"> <base>.</base> <renderers> <renderer mime="application/pdf"> <filterList> <value>flate</value> </filterList> <fonts> <font metrics-url="file:///w/proj/xml/fo/ArialUnicode.xml" embed-url="file:///Library/Fonts/Arial Unicode.ttf" kerning="yes"> <font-triplet name="ArialUnicodeMS" style="normal" weight="normal"/> <font-triplet name="ArialUnicodeMS" style="normal" weight="bold"/> <font-triplet name="ArialUnicodeMS" style="italic" weight="normal"/> <font-triplet name="ArialUnicodeMS" style="italic" weight="bold"/> <font-triplet name="any" style="normal" weight="normal"/> <font-triplet name="any" style="normal" weight="bold"/> </font> </fonts> </renderer> </renderers> </fop>
其中字型名稱 name="ArialUnicodeMS" 從 /w/proj/xml/fo/ArialUnicode.xml 裡頭的名稱參考而來。
修改 oXygen 設定 Preferences ➠ XML ➠ XSLT-FO-XQuery ➠ XQuery ➠ FO Processors
找到 Configure file 項目改為 /w/proj/xml/fo/userconfig.xml。
中文 FO 測試
編修原 oxygen/samples/fo/Miscellances/helloWorld.fo 改為 helloWorld-u8.fo:
<?xml version="1.0" encoding="utf-8"?> <!-- Example from: http://www.renderx.net Copyright © 2004 RenderX, Inc.--> <fo:root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="my-page"> <fo:region-body margin="1in"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my-page"> <fo:flow flow-name="xsl-region-body" font-family="ArialUnicodeMS"> <fo:block>Hello, world! 大家好!</fo:block> </fo:flow> </fo:page-sequence> </fo:root>
產生 PDF: 選單 Document ➠ Transformation ➠ Apply Transformation Senario 產生。
或按 cmd + shift + T, 選擇 PDF (第一次要選 FO PDF)。
Docbook 設定
做妥上面 FO 設定。修改 oxygen/frameworks/docbook/xsl/fo/docbook_custom.xsl 在 </xsl:stylesheet> 前, <!-- end oXygen patch. --> 之後, 加上:
<!-- Traditional Chinese patch --> <xsl:param name="body.font.family">ArialUnicodeMS</xsl:param> <xsl:param name="body.font.size">12</xsl:param> <xsl:param name="monospace.font.family">ArialUnicodeMS</xsl:param> <xsl:param name="title.font.family">ArialUnicodeMS</xsl:param> <!-- end Traditional Chinese patch -->
中文 Docbook 測試
修改 oxygen/samples/docbook/v5/sample.xml。Author 模式下, 在文字後加入中文, 例如:
<sect1> <title>Inline Markup and Images 大家好</title>
產生 PDF, 同 FO 方式 ... cmd + shift + T 選擇 PDF (第一次要選 Docbook PDF)。
DITA 設定
修改 oxygen/frameworks/dita/DITA-OT/demo/fo/cfg/fo/font-mappings.xml
找到以下字樣:
<physical-font char-set="Simplified Chinese"> <font-face>AdobeSongStd-Light</font-face> </physical-font>
增加類似段落(共三處):
<physical-font char-set="Traditional Chinese"> <font-face>ArialUnicodeMS</font-face> </physical-font>
複製 oxygen/frameworks/dita/DITA-OT/demo/fo/cfg/fo/i18n/zh_CN.xml 成為同目下新檔 zh_TW.xml
修改此 zh_TW.xml 內容, 把 <alphabet char-set="Simplified Chinese">...</alphabeat> 改為:
<alphabet char-set="Traditional Chinese"> <character-set> <character-range> <start include="yes">Ā</start> <end include="yes">＀</end> </character-range> </character-set> </alphabet>
很偷懶的方式, 需要修正。
修改 oxygen/frameworks/dita/DITA-OT/demo/fo/fop/conf/fop.xconf
在 fop ☞ renderers ☞ renderer mime="application/pdf" ☞ fonts 下增加:
<font metrics-url="file:///w/proj/xml/fo/ArialUnicode.xml" embed-url="file:///Library/Fonts/Arial Unicode.ttf" kerning="yes"> <font-triplet name="ArialUnicodeMS" style="normal" weight="normal"/> <font-triplet name="ArialUnicodeMS" style="normal" weight="bold"/> <font-triplet name="ArialUnicodeMS" style="italic" weight="normal"/> <font-triplet name="ArialUnicodeMS" style="italic" weight="bold"/> <font-triplet name="any" style="normal" weight="normal"/> <font-triplet name="any" style="normal" weight="bold"/> </font>
建立 zh_TW 必要檔案, 在 oxygen/frameworks/dita/DITA-OT/demo/fo/cfg/common/ 下要有三個檔案:
index/zh_TW.xml
複製 zh_CN.xml 修改, 先將 <language>zh-TW</language> 改為正確對應。下半部所有中文的 index.group 改為只有(也是需要修正):
<index.group> <group.key>中文</group.key> <group.label>中文</group.label> <group.members> <char.set start-range="一" end-range="龤"/> </group.members> </index.group>
properties/zh_TW.properties
chm.native.encoding=big5 chm.project.language=0x404 Traditional Chinese
vars/zh_TW.xml
複製修改, 可能必要的是 "Product Name"(顯示在 PDF 上方頁角), 其他隨意。
修改 oxygen/frameworks/dita/DITA-OT/demo/fo/build.xml 增加:
<property name="document.locale" value="zh_TW"/>
在 <property name="customization.dir ...> 上即可。
中文 DITA 測試
開 oxygen/dita/ 下某 DITA 專案, 開專案下的檔案在 Author 模式下修改, 增加中文字, 例如:
<title>Changing the oil in your car 測試看看</title>
產生 PDF, 同 FO/Docbook 方式 ... cmd + shift + T 選擇 PDF (第一次要選 DITA Map PDF)。
安裝 XEP 個人版
FOP 1.0 還不支援索引(indexing)功能, 請參考 http://xmlgraphics.apache.org/fop/compliance.html#fo-object-indexing-section。
XEP 個人版非商業用可取代 FOP 產生索引 http://www.renderx.com/download/personal.html。
下載, 安裝到 /w/j/x/XEP/。
修改 /w/j/x/XEP/xep.xml 增加 (搜尋到 font-group):
<font-group xml:base="file:/Users/tcchou/Library/Fonts/" label="Windows TrueType" embed="true" subset="true"> <font-family name="ArialUnicodeMS"> <font><font-data ttf="Arial Unicode.ttf"/></font> </font-family> </font-group>
把 Arial Unicode.ttf 複製到個人字型目錄, 因為還有其他字型 ...
oxygen 增加 XEP
Preferences ➠ XML ➠ XSLT-FO-XQuery ➠ XQuery ➠ FO Processors
點選 "If you have a custom XEP installation ..." 旁的 Browse 按鈕, 選擇 /w/j/x/XEP/xep 。
點選 "Configure Transformation Scenario", Duplicate "DITA Map PDF" 選擇 Processor: XEP 。
選擇 DITA 下專案(it-book 有 indexing 範例), 產生 PDF ... cmd + shift + T 。
0 comments:
Post a Comment