EDDでフォントをArial指定しているのにMS 明朝になってしまう、という問題 ... 一応 解決(Adobe FrameMaker)
構造化FrameMakerの話。
簡単に言えば、XMLをFrameMakerで開いてフォーマットしたときに、 EDD上で、TextRange指定した要素に対するフォント指定などの書式設定が上書きされて意図した書式設定がされない問題。
EDD設定は通常はCSSと同じように親のスタイルがカスケードされて子要素に反映されつつも、 子要素で設定された書式は優先されるはず・・・ 少なくとも、経験的にいって、 TextRangeではなく、ParagraphFormat 指定している場合はそのようにEDD(書式)設定が反映される。
しかし、今回の問題は、本来優先されるはずの子要素での書式設定が上書きされてしまう、という問題。 しかもどこにも指定していないはずのMS明朝が出現してしまう。
解決方法としては、書式のオーバライドを無効(元に戻す)にすればよい。 FrameMakerのGUIを使って、書式の上書きを削除するか、mifを経由して(いったんmif保存して) 上書きが起こっている箇所を削除することで問題が解消できる。
具体的には...
段落書式「本文」はHelvetica指定してある。
本文中に一部出現する特別な部分に対して、sign という名前のエレメントを設定した上で、
EDD上ではインライン要素(TextRange)として指定し、
そこにArialフォント指定した文字書式を設定している。
(日本語Windows+日本語インタフェースのFrameMaker8)
このような条件で、たとえば、
<para> hogehoge
<sign>↓</sign>
</para>
のようにXMLを記述して これをFrameMakerでフォーマットすると、 該当箇所のフォントが「MS 明朝」になってしまう。
mif形式で保存してみると、意図通り文字書式は割り当てられているのだが、
MS 明朝で書式が上書きされている。
なぜだろうか・・・
理由はわからないが書式の上書き設定を削除すればよい
別に親要素でMS明朝を指定しているわけでもないし、システムとして最初から設定されている 「本文」段落書式がMS明朝になっているわけでもないのに、なぜMS明朝が出てきしまうか、 そこはまだ謎だが、上書きされた書式設定を無効(削除)してやれば問題が解決することがわかった。
方法としては、FrameMakerのGUI上で処理してもよいし、mifにいったん保存して、 該当箇所の書式上書き設定記述を削除することでも解消できる。
まだ試していないが、FDKを使えば、プログラム的にすべての書式上書きを解除、というような 処理ができるのではないかと思う。 (いやそもそもそのような処理は普通にFrameMakerのGUI上で行える方法が提供されている 気がしないでもないが...)