※今回は検証も兼ねていて、写真があって長いです。おヒマなときにどうぞ~
※今回の内容は、ワタクシの環境(Windows10/Microsoft Office365)で確認された結果を基に述べています。つまり、「ワタクシはこう理解した」というだけです。
※なので、皆さまの環境でも当てはまる、という保証はないですし、解釈がおかしい、そもそも間違っている、という可能性もあります。
※お気づきの点などありましたら、“優しく”お声掛けをお願いします。
さて。
業務で、ルビを大量に振ったWord文書を扱うようになり、フォントだったりオフセットだったりを改めて調整する作業が発生しまして。Wordの検索と置換を駆使して、本文のフォントや大きさあたりは一括変換できるのですが、ルビに関しては通常の機能では追いつかず、それでもなんとか一括で変更できないかあれこれ試している最中でして。
もちろん、すべてをボタン一つポチ~で解決できるとは思ってなくて、最後は目視による調整が必ず必要になる、というか必ずやるべきだと考えていますが、なるべく省エネでいきたいじゃないですか(切実
そんな感じでネットで調べてみると、フィールドコードなるものをいじると直接変更できるらしい、との知見を得たので備忘録的に記してみたいと想います。
なお、以下よりフォントの「大きさ」のことを便宜上、「pt数」と表記しております。また、記事中「\」は「¥」(の半角)に読み替えてください。フィールドコードでは「¥」の文字が使われているのですが、ここでは「\」の表示になります。ご了承をば。
◇フィールドコードって?
大雑把に言うと、非表示の隠しコマンド的な(?)なにか。命令文とオプション、スイッチなどで構成されていて、表や数式なんかも、これで制御できるようです。ちなみにWordだけではなく、ExcelやPowerPoint、Outlookなんかにもあるようです。
「alt+F9」で文書内すべてのフィールドコードのON/OFF、「shift+F9」で選択した部分のフィールドコードのON/OFFができます。
ルビのフィールドコードを見るとこんな感じ。
{EQ \* jc2 \* "Font:MS 明朝" \* hps10 \o\ad(\s\up 9(ふりがな),振り仮名)}
※MS 明朝で10pt文字にルビを振った時のデフォルト値です。
調べてみると、こんな命令みたいです。
a)EQ … 式のフィールドの宣言。この後に続く指示を計算する
b)jc2 … ダイアログでいうところの均等割り付け2。後ろの数字がダイアログの上からの順番と連動
c)"Font:MS 明朝" … ルビで使用するフォント名
d)hps10 … ルビのpt数の2倍の値(くせ者1)
e)\o\ad() … \oスイッチ。overstrike命令(上付き指示の一種?)
\adパラメータ。align distribution:均等割り付けの対象を指定
f)\s\up 9() … ダイアログでいうところのオフセット値。ルビの対象と配置をpt数で指定?(くせ者2)
特にフォントとオフセットを一括で統一したいと思っていたので、c)とf)をいじればいいのねー、と軽く考えていたのです。
しかしながら、たとえば、フォントのpt数が同じなので、フィールドコードの文字列で引っかけて一括置換すると、元の設定のf)の値がまちまちだったらしく、ルビの位置がずれる、などなかなか思うように行かず…。
そもそも f)を決める条件は何なのか。絶対なのか相対なのか、それすらわからない状態だったので、いろんなところを当たってみました。
◇わかったのは以下のこと
○ルビを「初めて」設定した時の本文のフォントのpt数の半分の値がルビのpt数のデフォルト値(wordシステムでのデフォルト値。変更不能?)らしい
○オフセット0は、上で述べたルビのデフォルト値(フォントptの半分)の2倍から1を引いたpt数っぽい(ルビを設定した時の元のフォントのpt数-1かもしれない)
○\s\up 0 は元のフォントのベースラインと同じ(文字の下がそろう)。つまり基準線(フィールドコードでのオフセット値の基準)はその行のベースラインっぽい
どういうことかというと。
→10ptのフォントのルビ(のデフォルト値)は5ptで[hps10]、オフセット0は[\up 9]。
※上の写真参照
→12ptのフォントのルビのデフォルトは6ptで[hps12]、オフセット2は[\up 13](デフォルト\up 11+2)。
→18ptのフォントのルビを7ptにすると[hps14]、オフセット1にすると[\up 18](デフォルト\up 17+1)。
最初にこんがらがったのは、hpsの値と\upの値に相関関係があるように見えたこと。ほとんどのWordでは10pt~12ptあたりがプレーンな文字のpt数で、本文のpt数をいじったら、ルビの位置も(字面的に)なんとなく「1引いた数」に揃えれば、と錯覚してしまいました。
なので、上の18ptのような場合、「hps14だから全部13にすれば」とやったら意図してないところでルビが元の文字にめり込む勢いで下がり、「!!?!??!!」ってなりました。
また、元のフォントのpt数を変えただけでは、振られているルビの設定自体は変わりません。フィールドコードの書き換えができていないので、ルビがめり込んだままの表示になります。
この場合、ルビのダイアログを開いて設定し直すと、その時点のフォントptが持つルビのオフセットのデフォルト値に上書きされる(ダイアログではマイナス値は設定できないので0で上書きされる)ようです。
→18ptの例を26ptに変えたときは{EQ~}の文の文字が26ptになり大きく表示されるが内容は変わっていない。
→フィールドコードをOFFにすると、ルビがめり込んでいるので、ダイアログを出してそのままOKを押すとオフセット0(フィールドコードではフォントのpt数に対応したデフォルト値)に戻る
気をつけなければならないのは、一度ルビを設定したあとで、過去に本文の文字のpt数だけを変えてしまっていたら、対応するオフセットのデフォルト値(\up xx)もかわり、フィールドコード上での現在のオフセット値がバラバラになっていて、一括で置換しようとすると、余計な箇所を変更したり、取り漏れが起こる可能性が高くなります。
もっとも、これに関してはその他の属性(フォントの種類やpt数など)を検索条件に組み込めば、ある程度は回避できると考えています。
また、オフセット値の設定は「ルビを設定した時点の元のフォントのpt数-1」というよりは、そのフォントのpt数が持っているルビのデフォルト値(フォントptの半分)の2倍から1を引いたpt数であろうと考えます。
なぜそんなめんどくさい表現をしているかというと、フィールドコードではルビのpt数がわざわざ2倍されて表記されている(hpsの値)から、ここも2倍したんじゃなかろうか、という単純な考えからです。
でもまあ、[\up 0]が元のフォントのベースラインと重なるので、「ルビを設定した時の元のフォントのpt数-1」かもしれないなーと。
ぶっちゃけ、どちらでも結果は変わらないんですけどね(´・ω・`)
→\up 0 に設定してみると…見事に文字の下で重なっています。
ただ、ここが理解できれば、ダイアログでオフセット値を見て[\up xx]のデフォルト値がわかるし、デフォルト値がわかれば、フォント名やフォントのpt数を使って絞り込んで、一括置換(見た目を統一)しやすくなります。
手軽に調整、なんて一足飛びはできそうにないですが、それでもある程度は「楽ができそう」ですねー (  ̄Δ ̄ )
今回はルビ(なかでもルビのpt数とオフセット値)に特化してつらつらと書いてみましたが、フィールドコードで上付き下付き重ねがけが指示できると言うことは、たとえば、「○」と「あ」を重ねたような丸付き文字を自分で作ることもできるということです(WordおよびOffice系アプリのみですが)。
フィールドコード自体、様々な命令ができるようなので、調べてみると面白いかもしれないですヨ?
ワタクシはもうお腹いっぱいですが。
※コメント投稿者のブログIDはブログ作成者のみに通知されます