実行時にフォント サイズが設定されておらず、スタイルが使用されている場合は、スタイルの階層を確認する必要があります。そこに設定されていない場合は、デフォルトに戻ります。
ECMA 4ed Part 1 で 17.7.2 (スタイル階層) に記載されているように:
このプロセスは次のように説明できます。
- まず、ドキュメントのデフォルトがドキュメント内のすべてのランと段落に適用されます。
- 次に、表ごとに指定された条件付き書式の包含と除外に従って、表スタイル プロパティがドキュメント内の各表に適用されます。
- 次に、番号付けスタイルで書式設定された各段落に、番号付きアイテムと段落のプロパティが適用されます。
- 次に、段落スタイルで定義されているように、段落とランのプロパティが各段落に適用されます。
- 次に、特定の文字スタイルが適用された各ランにラン プロパティが適用されます。
- 最後に、直接書式設定 (スタイルからではない段落または実行のプロパティ) を適用します。この直接書式設定に番号付けが含まれている場合、その番号付け + 関連する段落プロパティが適用されます。
rFonts 要素 (§17.3.2.26) の値が使用できないフォントを参照している場合、アプリケーションは、§17.8.2 で定義されているフォント置換と呼ばれるプロセスを介して、適切な代替フォントを決定します。
docx4j はこのようなことを行います - たとえば、https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/model/PropertyResolver.javaの 430 行目と ff を参照してください。
同様の原則がフォントの色にも適用されます。
ここでは、 google traversalutil と言う以外に、ドキュメントを単語ごとに (または実行ごとに) 反復処理する方法については説明しません。
実行時にフォント サイズを明示的に設定する例
<w:r>
<w:rPr>
<w:sz w:val="36"/>
</w:rPr>
<w:t>this is 18 points</w:t>
</w:r>
これは、Microsoft Word または docx4j を使用して設定できます。docx4j でそれを行う方法を確認するには、webapp を使用してサンプル docx からコードを生成できますが、本質は次のとおりです。
org.docx4j.wml.R yourRun;
yourRun.getRPr().setSz(an HpsMeasure);