わーぷろおじさん

WordやOffice関連の小細工の備忘録。

【word】ルビの挙動(ゾンビ仕様)

ルビのフィールドコード



ルビのフィールドコード

ルビボタンでルビを作成すると下記のようなフィールドコードが作成される。

{EQ \* jc2 \* "Font:游明朝" \* hps10 \o\ad(\s\up12(ユン・ピョウ),元彪)}

\oスイッチは重ね文字で、\sスイッチは文字列の上下位置をずらすもの。

単純に「重ねた文字列を上下にずらす」という仕組み。

\oスイッチと\sスイッチについては、フィールドコードを使えるものであれば大した問題ではない。

EQから\oスイッチの間の、三つの一般書式スイッチ(\*)が、かなり特殊。

 

第1一般書式スイッチ:配置

(jc0:中央揃え、jc1:均等割り付け1、jc2:均等割り付け2、jc3:左揃え、jc4:右揃え、jc5:右縦寄せ)

第2一般書式スイッチ:ルビのフォント指定

第3一般書式スイッチ:ルビのフォントサイズ

(簡便のため以下、第1スイッチ、第2スイッチ、第3スイッチということとする)

 

第2、第3スイッチは、\oスイッチ内の文字列に直接フォント設定を当てても無効化する。

第1スイッチは配置設定以外にも、\oスイッチのオプション無効化とフィールドコードの挙動を制御する特殊なスイッチである(後述)。

ルビの最小構成

さて、wordの機能(上述の3つの一般書式スイッチ)を使わなくとも、ルビを振ることはできる(一部できない機能はある)。

上述の\oスイッチと\sスイッチだけでフィールドコードを作成すればよい。

最小のルビは下記のとおり。(※オプションについての説明は省略)

{EQ \o\ad(\s\up12(ユン・ピョウ),元彪)}

この場合、ルビ部分のフォントおよびフォントサイズはフィールドコード内のルビ文字に当てられているフォントに従う。

よって、ここに文字スタイルを当てれば、フォントおよびフォントサイズを管理することができる。

ただし、一部できない機能として、wordのルビの割り付けの「均等割り付け2」があることに留意。

ゾンビな第1一般書式スイッチ

先に述べた通り第1スイッチはフィールドコードの挙動にまで影響力を及ぼす強力な仕様となっている。

(1)再生

フォントやフォントサイズを第2、第3スイッチから解放するため、第2、第3スイッチを削除しようとするかもしれないが、それは無駄である。第1スイッチを完全に消滅させなければ、第1スイッチは第2、第3スイッチを復活させてしまう。

(例)

第2、第3スイッチを削除

{EQ \* jc2 \o(\s\up12(ユン・ピョウ),元彪)}

(文書を保存して閉じで、再び開く)

{EQ \* jc2 \* "Font:游明朝" \* hps10 \o\ad(\s\up12(ユン・ピョウ),元彪)}

第2、第3スイッチが復活する。とどめを刺すためには、ゾンビ映画の如く、頭をぶち抜かなければならない。

(2)暴走

\oスイッチの中の順番(元彪とユン・ピョウ)を変えてみたら、とんでもない挙動をした。通常であれば、\oスイッチ内の順番は逆でも問題ない。\sスイッチが含まれていようとも。

(例)

{EQ \* jc2 \* "Font:游明朝" \* hps10 \o\ad(元彪,\s\up12(ユン・ピョウ)}
洪金寶,成龍。
{EQ 李小龍}

上記のフィールドコードを表示すると下記のようになる。

\oスイッチの第1引数「元彪」は無視され、\sスイッチ以降を第1引数と認識している。

さらに、第1引数はフィールドコード外に飛び出て、地の文のカンマを拾って第1引数の終わりとしている。

さらに、第2引数も地の文から始まって、次のフィールドコードの終わりを見つけて、第2引数の終わりとしている。

ゾンビ化した元彪は仲間たちを食い散らかしてしまったのだ。

 

続いて、このファイルを保存して、再度開くとフィールドコードは下記のように自動修正される。

{EQ \* jc2 \* "Font:游明朝" \* hps10 \o\ad(\s\up 12(ユン・ピョウ),\s\up12(ユン・ピョウ)}

フィールドコードを表示すると、

ゾンビ化した元彪は夜明けともに朽ち果ててしまったとさ…。

第2、第3一般書式スイッチのゾンビ仕様

第2スイッチ(フォント)

第2スイッチのフォント名を書き換えると文書上そのとおり反映されるが、ファイル再起動後、変更したはずの第2スイッチの内容は、\sスイッチ内のルビ文字に当てられているフォントに戻される。

ルビ文字のフォントを変更した場合、直ちには反映されないが、ファイル再起動後に第2スイッチの内容が、ルビ文字フォントの内容に自動修正され反映される。

(ネット上で、フォント名置換でフォントを変更できるような記事があったが、私の環境では上記の通り、フォント名置換では不十分な変更となる。環境によって異なるのだろうか?)

第3スイッチ(フォントサイズ)

ルビ文字のフォントを変更しても基本的には反映されず、第3スイッチがルビのフォントサイズを決定している。

第3スイッチを削除して、ファイル再起動すると、ルビ文字に当てられているフォントサイズで第3スイッチが復活する。

幻のjc5(右縦寄せ)

右縦寄せについては下記ブログを参考にさせていただきました。

stars-have-fallen.hatenablog.jp

{EQ \* jc5 \* "Font:游明朝" \* hps10 \o(\s\up12(ユン・ピョウ),元彪)}

縦書きと横書きで挙動が異なる…。通常のフィールドコードだけでは再現できない。けど、横書きで右縦寄せを必要とするシーンが思いつかない。

感想

ルビが単純なフィールドコードだけで構成されているわけではないことが理解できたが、かなり乱暴な仕様で唖然とした。マイクロソフトがルビを導入する際、通常のフィールドコードだけで実装できなくて、苦渋の決断で専用の仕様を導入したんだろうなと、勝手に想像してしまう。

ルビの体裁管理については、「均等割り付け2」を捨てれば、文字スタイルによる管理が可能であることも確認できた。これについては今後記事にしていきたい。

最後に、jcってなんなんですかね?justification?japanese-chinese?

 

(追記)

word-ozisan.hatenablog.com

word-ozisan.hatenablog.com