DITA-OT发布过程和中文支持

DITA-OT是DITA Open Toolkit的缩写,它是一个开源发布引擎,用于将DITA格式的内容发布成不同格式的输出,比如:HTML、PDF等。

有些结构化编辑系统(如:Oxygen XML  Editor)已经集成了DITA-OT。如果选择DITA来编写结构化内容,那么你很有可能已经通过DITA-OT进行内容发布了。 

下边我们一起来看看DITA-OT是怎样工作的。

- 1 -

DITA-OT发布PDF的过程

以下是使用DITA-OT发布PDF的命令:

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

它的意思是

  • 输入文件为cloudphoto.ditamap文件;

  • 输出格式是pdf;

  • 输出结果放到pdfout目录中。 

运行这个命令,后台发生什么事情呢?下边我们一起来看一下。

DITA-OT支持发布多种格式的输出,主要分为PDF和基于HTML的输出两类。下图中,蓝色路径是运行发布PDF命令后走过的步骤。

DITA-OT发布过程和中文支持_第1张图片

1. 通用预处理

不论发布的类型是什么,DITA-OT发布首先运行的是预处理程序。它主要是为后续的步骤做准备工作。根据DITA-OT的文档,预处理包括:生成列表、处理引用、内容过滤、移动元数据等17个模块,详情请见DITA-OT文档:

https://www.dita-ot.org/dev/reference/preprocessing.html

2. 合并Topic

DITA数据包通常由一个ditamap和多个topic文件组成。为了方便处理,DITA-OT将这些内容合并到一个XML文件中。

3. 将XML转换成XSL-FO

DITA-OT发布过程和中文支持_第2张图片

XSLT是一个数据转换的语言,由XSLT引擎执行。它通过读取XML文件,应用数据处理逻辑,然后生成XSL-FO文件。 

4. 将XSL-FO转换成PDF

DITA-OT发布过程和中文支持_第3张图片

 XSL-FO是W3C的标准之一,用于XML文档的布局和打印。要将XSL-FO生成PDF,需要用到FO引擎。

DITA-OT目前支持三个引擎,他们分别是:

  • FOP - 开源的FO引擎,已经包含在DITA-OT中;

  • Antenna House - 商业FO引擎,DITA-OT可以使用它发布PDF,但需要单独购买和安装;

  • RenderX - 商业FO引擎,DITA-OT使用它发布PDF,也需要单独购买和安装。

- 2 -

中文支持

DITA-OT的实现了支持多语言处理,但默认只对西方文字有较好的处理。下边我们来看一看DITA-OT支持中文的细节。

1. 将内容标识成中文

在“将XML转换成XSL-FO”这个步骤中,样式会自动生成一些文字,比如:目录最上边的“目录”二字。 我们把这种样式表生成的文字叫做“生成文字” (Gentext)。

Gentext没有放在DITA文件中,而是放在样式文件中,内容编辑人员无法直接控制或者更改它。

DITA中,默认的语言是英语,如果不做设置,Gentext默认是英文的。所以目录这个地方,默认是看到"Contents",如下图红色方框所示。

DITA-OT发布过程和中文支持_第4张图片

 如果要让它显示中文,我们需要在ditamap文件中标识DITA内容的语言为中文。如下图:

DITA-OT发布过程和中文支持_第5张图片

 xml:lang属性表示内容的语言,zh-CN代表中文。

这样,发布的时候Gentext就会显示中文了。

DITA-OT发布过程和中文支持_第6张图片

 2. 为FOP安装中文字体

DITA-OT默认带的FO引擎是FOP,FOP能够使用操作系统带的字体。对于中文,它默认使用宋体。但是这个字体没有粗体,所以会出现粗体不显示的现象。

如果对默认的字体不满意,一种解决方案就是安装其他的字体,比如:阿里巴巴普惠体。

首先,可以从这里免费下载阿里巴巴普惠体:

https://alibabafont.taobao.com/

DITA-OT发布过程和中文支持_第7张图片

 然后,将字体文件解压并放到以下目录中:

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

DITA-OT发布过程和中文支持_第8张图片

 这样就为FOP安装好阿里巴巴普惠体了。

3. 设置DITA-OT中的字体映射

除了为FOP安装中文字体,还需要在DITA-OT中设置字体映射才能在PDF输出中正确使用字体显示中文。 

DITA-OT的样式表中,没有直接使用最终物理字体的名字,而是使用一个逻辑字体。根据映射的配置,逻辑字体最终被翻译成最终的物理字体。 这种设计的好处是可以根据需要来配置最终的字体,但又不用修改样式表的代码。 

DITA-OT的字体映射文件放在了这里:

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

内容如下:



  
    
      Serif
    
    
      Sans
    
    
      Monospaced
    
    
      Normal
    
    
      Monospaced
    
    
    
      
        Helvetica, Arial Unicode MS, Tahoma, Batang, SimSun
      
      
        AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
      
      
        MS-Gothic, Hiragino Kaku Gothic Pro, HiraKakuProN-W3, YuGothic, Arial Unicode MS
      
      
        AdobeMyungjoStd-Medium, Arial Unicode MS, Batang
            
      
        ZapfDingbats
      
      
        ZapfDingbats
      
      
        Helvetica, Arial Unicode MS
        20%
        smaller
      
    

    
      
        Times New Roman, Times, Arial Unicode MS, Tahoma, Batang, SimSun
      
      
        AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
      
      
        MS-Mincho, Hiragino Mincho Pro, HiraMinProN-W3, YuMincho, Arial Unicode MS
      
      
        AdobeMyungjoStd-Medium, Arial Unicode MS, Batang
      
      
        ZapfDingbats
      
      
        ZapfDingbats
      
      
        Times New Roman, Times, Arial Unicode MS, Tahoma, Batang
        20%
        smaller
      
    

    
      
        Courier New, Courier, Arial Unicode MS, Tahoma, Batang, SimSun
      
      
        AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
      
      
        MS-Gothic, Hiragino Kaku Gothic Pro, HiraKakuProN-W3, YuGothic, Arial Unicode MS
      
      
        AdobeMyungjoStd-Medium, Arial Unicode MS, Batang
      
      
        ZapfDingbats
      
      
        Courier New, Courier, Arial Unicode MS, Tahoma, Batang
        20%
        smaller
      
    
  
  

对于逻辑字体Serif(看46行),如果是中文,映射的物理字体是:AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun。(看50行)

下边,将阿里巴巴普惠体配置到文件中:


  ...
  
    
      Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
    
  
  ...


  ...
  
    
      Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
    
  
  ...


  ...
  
    
      Alibaba PuHuiTi, AdobeSongStd-Light, Arial Unicode MS, Batang, SimSun
    
  
  ...

(分别在3个逻辑字体的中文情况下,加入Alibaba PuHuiTi)

通过以上配置,DITA-OT就能使用阿里巴巴普惠体来显示中文了。

DITA-OT发布过程和中文支持_第9张图片 - 3 -

小结

在DITA-OT中支持中文字体,包括以下3个步骤:

  1. 将内容标识成中文;

  2. 安装中文字体;

  3. 配置字体映射。

 - 4 -

术语

XSLT

XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。

参考:

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

XSL-FO

XSL-FO 指可扩展样式表语言格式化对象(Extensible Stylesheet Language Formatting Objects),是用于格式化 XML 数据的语言。

参考:

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

你可能感兴趣的:(排版,DITA,DITA-OT,结构化内容发布)