InDesign と XML(7)-書き出しオプションの「改行、空白、特殊文字を再マップ」-

InDesignXML の7回目。
InDesign から XML を書き出すときのオプションで「改行、空白、特殊文字を再マップ」というものがある。これを選択するのとしないのとで、何が違うのか。
InDesign のマニュアルを見ると「改行、空白および特殊文字を、その文字そのものではなく小数点エンティティとして書き出します。」と書いてある(本稿執筆時点での情報)。これは、意味がわからない。英語版のマニュアルを見ると、「小数点エンティティ」の部分が“decimal character entities”となっている。
“decimal character entities”が、XML の仕様的に正しい言い方なのかは疑問だが、文字参照を10進数でやることだとわかった。文字参照とは、その文字を直接書くのではなくて、“&#”に続けて10進数で Unicode のコードポイント続けて“;”または、“&#x”に続けて16進数で Unicode のコードポイント続けて“;”と表記する方法である。
実際に、「改行、空白、特殊文字を再マップ」を選択した場合と選択しなかった場合で結果を比較してみた。
すると、どういう訳か出力されたものに文字参照らしきものは見当たらない。いわゆる全角スペースも半角スペースもそのまま出力されている。しかし、違いがなかった訳ではなく、「改行、空白、特殊文字を再マップ」した場合は、改行が半角空白に、「改行、空白、特殊文字を再マップ」をしなかった場合は、改行が Unicode のコードポイント(16進数)で表せば 2029 という見慣れない文字に変換されていた。コードポイント 2029 の文字は、PARAGRAPH SEPARATOR と言うらしく、テキストエディタの種類やその設定によっては、ただの空白のように表示されるので気づかないかもしれない。以上は、UTF-8 で出力した場合の話である。
Shift_JIS で出力した場合、「改行、空白、特殊文字を再マップ」した場合は、改行が半角空白に、「改行、空白、特殊文字を再マップ」をしなかった場合は、改行が CR に変換された。これは、元のファイルの改行が、CR+LF であっても、LF であっても、同じ結果だった。
この疑問に対しては、以前 Adobe のサイトからダウンロードしておいた "Adobe InDesign CS3 and XML: A Technical Reference" という資料が役に立った。CS3 というところが古くて気になるが、やはり InDesignXML という組み合わせは下火なのだろうか? 現在、この資料にアクセスできるかも定かではない。
ともあれ、InDesign が言うところの「改行、空白、特殊文字」とは何なのか、どの文字が10進数の文字参照にマップされるのかは、この資料で明らかになった。
それによると、半角スペース、全角スペースは、そもそも「改行、空白、特殊文字」に入っていないので、そのままの文字で出力される。復帰(CR)、改行(LF)は、半角スペースに変換されるのだそうだ。そして、例えば、「“」(LEFT DOUBLE QUOTATION MARK)、「”」(RIGHT DOUBLE QUOTATION MARK)は、文字参照にマップされると書いてあったので、試してみたところ、それぞれ “” と10進数の文字参照で出力された。以上は、「改行、空白、特殊文字を再マップ」を選択した場合である。
「改行、空白、特殊文字を再マップ」を選択しなかった場合に、改行が PARAGRAPH SEPARATOR(UTF-8のとき)や CR (Shift_JIS のとき)に変換される理由は、上記の資料では解明できなかった。