小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DITA-OT

 芥子c1yw3tb42g 2023-08-07 發(fā)布于陜西

DITA-OT是DITA Open Toolkit的縮寫,它是一個(gè)開(kāi)源發(fā)布引擎,用于將DITA格式的內(nèi)容發(fā)布成不同格式的輸出,比如:HTML、PDF等。

有些結(jié)構(gòu)化編輯系統(tǒng)(如:Oxygen XML  Editor)已經(jīng)集成了DITA-OT。如果選擇DITA來(lái)編寫結(jié)構(gòu)化內(nèi)容,那么你很有可能已經(jīng)通過(guò)DITA-OT進(jìn)行內(nèi)容發(fā)布了。 

下邊我們一起來(lái)看看DITA-OT是怎樣工作的。

- 1 -

DITA-OT發(fā)布PDF的過(guò)程

以下是使用DITA-OT發(fā)布PDF的命令:

dita -i cloudphoto.ditamap -f pdf -o pdfout

它的意思是

  • 輸入文件為cloudphoto.ditamap文件;

  • 輸出格式是pdf;

  • 輸出結(jié)果放到pdfout目錄中。 

運(yùn)行這個(gè)命令,后臺(tái)發(fā)生什么事情呢?下邊我們一起來(lái)看一下。

DITA-OT支持發(fā)布多種格式的輸出,主要分為PDF和基于HTML的輸出兩類。下圖中,藍(lán)色路徑是運(yùn)行發(fā)布PDF命令后走過(guò)的步驟。

1. 通用預(yù)處理

不論發(fā)布的類型是什么,DITA-OT發(fā)布首先運(yùn)行的是預(yù)處理程序。它主要是為后續(xù)的步驟做準(zhǔn)備工作。根據(jù)DITA-OT的文檔,預(yù)處理包括:生成列表、處理引用、內(nèi)容過(guò)濾、移動(dòng)元數(shù)據(jù)等17個(gè)模塊,詳情請(qǐng)見(jiàn)DITA-OT文檔:

https://www./dev/reference/preprocessing.html

2. 合并Topic

DITA數(shù)據(jù)包通常由一個(gè)ditamap和多個(gè)topic文件組成。為了方便處理,DITA-OT將這些內(nèi)容合并到一個(gè)XML文件中。

3. 將XML轉(zhuǎn)換成XSL-FO

XSLT是一個(gè)數(shù)據(jù)轉(zhuǎn)換的語(yǔ)言,由XSLT引擎執(zhí)行。它通過(guò)讀取XML文件,應(yīng)用數(shù)據(jù)處理邏輯,然后生成XSL-FO文件。 

4. 將XSL-FO轉(zhuǎn)換成PDF

 XSL-FO是W3C的標(biāo)準(zhǔn)之一,用于XML文檔的布局和打印。要將XSL-FO生成PDF,需要用到FO引擎。

DITA-OT目前支持三個(gè)引擎,他們分別是:

  • FOP - 開(kāi)源的FO引擎,已經(jīng)包含在DITA-OT中;

  • Antenna House - 商業(yè)FO引擎,DITA-OT可以使用它發(fā)布PDF,但需要單獨(dú)購(gòu)買和安裝;

  • RenderX - 商業(yè)FO引擎,DITA-OT使用它發(fā)布PDF,也需要單獨(dú)購(gòu)買和安裝。

- 2 -

中文支持

DITA-OT的實(shí)現(xiàn)了支持多語(yǔ)言處理,但默認(rèn)只對(duì)西方文字有較好的處理。下邊我們來(lái)看一看DITA-OT支持中文的細(xì)節(jié)。

1. 將內(nèi)容標(biāo)識(shí)成中文

在“將XML轉(zhuǎn)換成XSL-FO”這個(gè)步驟中,樣式會(huì)自動(dòng)生成一些文字,比如:目錄最上邊的“目錄”二字。 我們把這種樣式表生成的文字叫做“生成文字” (Gentext)。

Gentext沒(méi)有放在DITA文件中,而是放在樣式文件中,內(nèi)容編輯人員無(wú)法直接控制或者更改它。

DITA中,默認(rèn)的語(yǔ)言是英語(yǔ),如果不做設(shè)置,Gentext默認(rèn)是英文的。所以目錄這個(gè)地方,默認(rèn)是看到'Contents',如下圖紅色方框所示。

 如果要讓它顯示中文,我們需要在ditamap文件中標(biāo)識(shí)DITA內(nèi)容的語(yǔ)言為中文。如下圖:

 xml:lang屬性表示內(nèi)容的語(yǔ)言,zh-CN代表中文。

這樣,發(fā)布的時(shí)候Gentext就會(huì)顯示中文了。

 2. 為FOP安裝中文字體

DITA-OT默認(rèn)帶的FO引擎是FOP,F(xiàn)OP能夠使用操作系統(tǒng)帶的字體。對(duì)于中文,它默認(rèn)使用宋體。但是這個(gè)字體沒(méi)有粗體,所以會(huì)出現(xiàn)粗體不顯示的現(xiàn)象。

如果對(duì)默認(rèn)的字體不滿意,一種解決方案就是安裝其他的字體,比如:阿里巴巴普惠體。

首先,可以從這里免費(fèi)下載阿里巴巴普惠體:

https://alibabafont.taobao.com/

 然后,將字體文件解壓并放到以下目錄中:

{DITA-OT_HOME}\plugins\org.dita.pdf2.fop\cfg\fonts\

 這樣就為FOP安裝好阿里巴巴普惠體了。

3. 設(shè)置DITA-OT中的字體映射

除了為FOP安裝中文字體,還需要在DITA-OT中設(shè)置字體映射才能在PDF輸出中正確使用字體顯示中文。 

DITA-OT的樣式表中,沒(méi)有直接使用最終物理字體的名字,而是使用一個(gè)邏輯字體。根據(jù)映射的配置,邏輯字體最終被翻譯成最終的物理字體。 這種設(shè)計(jì)的好處是可以根據(jù)需要來(lái)配置最終的字體,但又不用修改樣式表的代碼。 

DITA-OT的字體映射文件放在了這里:

{DITA-OT_HOME}\dita-ot-3.7\plugins\org.dita.pdf2\cfg\fo\font-mappings.xml

內(nèi)容如下:

  1. <?xml version='1.0'?>
  2. <font-mappings>
  3. <font-table>
  4. <aliases>
  5. <alias name='serif'>Serif</alias>
  6. </aliases>
  7. <aliases>
  8. <alias name='sans-serif'>Sans</alias>
  9. </aliases>
  10. <aliases>
  11. <alias name='monospace'>Monospaced</alias>
  12. </aliases>
  13. <aliases>
  14. <alias name='Helvetica'>Normal</alias>
  15. </aliases>
  16. <aliases>
  17. <alias name='Courier'>Monospaced</alias>
  18. </aliases>
  19. <logical-font name='Sans'>
  20. <physical-font char-set='default'>
  21. <font-face>Helvetica, Arial Unicode MS, Tahoma, Batang, SimSun</font-face>
  22. </physical-font>
  23. <physical-font char-set='Simplified Chinese'>
  24. <font-face>AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun</font-face>
  25. </physical-font>
  26. <physical-font char-set='Japanese'>
  27. <font-face>MS-Gothic, Hiragino Kaku Gothic Pro, HiraKakuProN-W3, YuGothic, Arial Unicode MS</font-face>
  28. </physical-font>
  29. <physical-font char-set='Korean'>
  30. <font-face>AdobeMyungjoStd-Medium, Arial Unicode MS, Batang</font-face>
  31. </physical-font>
  32. <physical-font char-set='Symbols'>
  33. <font-face>ZapfDingbats</font-face>
  34. </physical-font>
  35. <physical-font char-set='SubmenuSymbol'>
  36. <font-face>ZapfDingbats</font-face>
  37. </physical-font>
  38. <physical-font char-set='SymbolsSuperscript'>
  39. <font-face>Helvetica, Arial Unicode MS</font-face>
  40. <baseline-shift>20%</baseline-shift>
  41. <override-size>smaller</override-size>
  42. </physical-font>
  43. </logical-font>
  44. <logical-font name='Serif'>
  45. <physical-font char-set='default'>
  46. <font-face>Times New Roman, Times, Arial Unicode MS, Tahoma, Batang, SimSun</font-face>
  47. </physical-font>
  48. <physical-font char-set='Simplified Chinese'>
  49. <font-face>AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun</font-face>
  50. </physical-font>
  51. <physical-font char-set='Japanese'>
  52. <font-face>MS-Mincho, Hiragino Mincho Pro, HiraMinProN-W3, YuMincho, Arial Unicode MS</font-face>
  53. </physical-font>
  54. <physical-font char-set='Korean'>
  55. <font-face>AdobeMyungjoStd-Medium, Arial Unicode MS, Batang</font-face>
  56. </physical-font>
  57. <physical-font char-set='Symbols'>
  58. <font-face>ZapfDingbats</font-face>
  59. </physical-font>
  60. <physical-font char-set='SubmenuSymbol'>
  61. <font-face>ZapfDingbats</font-face>
  62. </physical-font>
  63. <physical-font char-set='SymbolsSuperscript'>
  64. <font-face>Times New Roman, Times, Arial Unicode MS, Tahoma, Batang</font-face>
  65. <baseline-shift>20%</baseline-shift>
  66. <override-size>smaller</override-size>
  67. </physical-font>
  68. </logical-font>
  69. <logical-font name='Monospaced'>
  70. <physical-font char-set='default'>
  71. <font-face>Courier New, Courier, Arial Unicode MS, Tahoma, Batang, SimSun</font-face>
  72. </physical-font>
  73. <physical-font char-set='Simplified Chinese'>
  74. <font-face>AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun</font-face>
  75. </physical-font>
  76. <physical-font char-set='Japanese'>
  77. <font-face>MS-Gothic, Hiragino Kaku Gothic Pro, HiraKakuProN-W3, YuGothic, Arial Unicode MS</font-face>
  78. </physical-font>
  79. <physical-font char-set='Korean'>
  80. <font-face>AdobeMyungjoStd-Medium, Arial Unicode MS, Batang</font-face>
  81. </physical-font>
  82. <physical-font char-set='Symbols'>
  83. <font-face>ZapfDingbats</font-face>
  84. </physical-font>
  85. <physical-font char-set='SymbolsSuperscript'>
  86. <font-face>Courier New, Courier, Arial Unicode MS, Tahoma, Batang</font-face>
  87. <baseline-shift>20%</baseline-shift>
  88. <override-size>smaller</override-size>
  89. </physical-font>
  90. </logical-font>
  91. </font-table>
  92. </font-mappings>

對(duì)于邏輯字體Serif(看46行),如果是中文,映射的物理字體是:AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun。(看50行)

下邊,將阿里巴巴普惠體配置到文件中:

  1. <logical-font name='Serif'>
  2. ...
  3. <physical-font char-set='Simplified Chinese'>
  4. <font-face>
  5. Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
  6. </font-face>
  7. </physical-font>
  8. ...
  9. </logical-font>
  10. <logical-font name='Monospaced'>
  11. ...
  12. <physical-font char-set='Simplified Chinese'>
  13. <font-face>
  14. Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
  15. </font-face>
  16. </physical-font>
  17. ...
  18. </logical-font>
  19. <logical-font name='Serif'>
  20. ...
  21. <physical-font char-set='Simplified Chinese'>
  22. <font-face>
  23. Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
  24. </font-face>
  25. </physical-font>
  26. ...
  27. </logical-font>

(分別在3個(gè)邏輯字體的中文情況下,加入Alibaba PuHuiTi)

通過(guò)以上配置,DITA-OT就能使用阿里巴巴普惠體來(lái)顯示中文了。

 - 3 -

小結(jié)

在DITA-OT中支持中文字體,包括以下3個(gè)步驟:

  1. 將內(nèi)容標(biāo)識(shí)成中文;

  2. 安裝中文字體;

  3. 配置字體映射。

 - 4 -

術(shù)語(yǔ)

XSLT

XSLT 是一種用于將 XML 文檔轉(zhuǎn)換為 XHTML 文檔或其他 XML 文檔的語(yǔ)言。

參考:

https://www.w3school.com.cn/xsl/index.asp

XSL-FO

XSL-FO 指可擴(kuò)展樣式表語(yǔ)言格式化對(duì)象(Extensible Stylesheet Language Formatting Objects),是用于格式化 XML 數(shù)據(jù)的語(yǔ)言。

參考:

https://www.runoob.com/xslfo/xslfo-tutorial.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多