InDesignのパス上文字でタイトル付き囲み枠(3)パス上文字の下線の仕様

で、何に気づいたかというと、タイトル部分の違和感。特に反転(下線を黒、文字を紙色)した場合に顕著に分かります。

各文字の間に白い線が入っているのが分かるかと思います。中央で白い線が消えているように見えるのは、その後ろにあるテキストフレームの線が見えているからです。通常の場合(文字を黒、下線を紙色)でも存在することが分かりました(図の赤く囲った部分)。こちらはほとんど気づきませんが。

最初は画面表示の問題かなと思った(拡大率によっては見えなくなる)のですが、PDFや画像に書き出しても(いろんな解像度で試した)明らかに存在します。しかもその解像度でも必1px。つまりヘアラインですね。

さて困った。どうしたもんだろうか。

いやその前に原因を探りましょう。普通のテキストフレーム内の文字に下線をつけても、隙間が空くなんて聞いたことがありません。今回はパス上文字ということで、パス上文字特有の何かがあるのかもしれません。

確認のために次の図を用意しました。ABCの文字が3つありますが、上2つはパス上文字、一番下はテキストフレームです。それぞれに下線を付けてみると、一番上は文字の間で下線が切れているというのが分かります。真ん中は切れていないように見えますが、表示倍率を色々変えてみると切れている状態が確認できました。もちろん一番下のテキストフレームのものは切れてません。

また、線種を「ベタ」ではなく「波状」にしてみました。するとどうでしょう。テキストフレームとパス上文字では明らかに下線の作成方法が異なるというのが分かります。

さらに線種を直線ハッシュに変更して確認します。

これで完全に分かりました。下線の描画ロジックが全く異なるんですね。テキストフレーム内は対象の文字の範囲の長さで描画されるのに対し、パス上文字は1文字ずつ描画されるんですね。ですから、文字の境でいったん描画が切れることでヘアラインが発生しているということです。


じゃあどうするか。理屈としては簡単、「InDesignに1文字として認識させる」ことができれば境目はなくなります。たとえば次のものはタブと右揃えタブを使っているんですが、その部分は1文字扱いなので途中に境目が発生することはありません。

ではどうやって1文字にするか。方法はいくつか考えらるのでやってみました。

ルビにする

ダミーの親文字にルビでタイトルを入れます。ルビの大きさを親文字と同じにして位置を親文字と重なるように下げるという方法です。やってみたんですが……新たなバグを発見! 下線の位置(文字との相対位置)がずれてしまう。分かりやすくルビの文字位置を変えていないのがこれです。

多分今まで誰も使ってないから発覚しなかったんだろうなー。もしよかったAdobeに報告してください。本題から外れるので私はとりあえずスルーします。

割注にする

割注だと1文字扱いにならない? そもそも1行だけの割注が作れなかったので断念。

テキスト変数

テキスト変数は基本的に1文字の扱いなので、可能性があるかなと思ってやってみましたが、下線がテキスト変数中の1文字ずつで描画されてしまい結果は変わらず。そもそもテキスト変数に入れてしまうとあとから変更することが難しいので、最初から無理でしたね。

アンカー付きオブジェクト

やってみましたがアンカー付きオブジェクトマーカー(検索では^a)には下線がつかないんですね。パス上文字にアンカー付きオブジェクトを入れることはできました。でもアンカー付きオブジェクトを使うのであれば、普通にテキストフレームを2つ作ってグループ化すればいいので、たとえ下線がついたとしても今回は却下でしたね。

1行1列の表を作ってみましたが、表はパス上文字には入れることができませんでした。


ということで、ここで行き詰ってしまいました。今後の方向としては

  • ヘアラインは気にせず、このまま完成に向かって突き進む
  • パス上文字は断念して、テキストフレームを2つ使う手法に変更する
  • これはお蔵入り。何かいい方法が見つかるまでお休みしましょう
  • ちょっとー! それよりルビのバグ報告しなくちゃ!

のどれにしましょうかねえ。(本当はここで終わる予定だったのだが、ひとつ閃いたので、続く)


おまけ

実は反転の場合に、このヘアラインを消す全く別のアプローチがあります。それはテキストに効果を付ける方法です。次の例はドロップシャドウですが、他の効果でも構いません。

ただこの方法は「にじませてごまかす」ものなので、あまり気持ちのいいものではありません。出力に若干の不安もありますし。ですので採用を見送りました。