Skip to main content
Participating Frequently
May 17, 2017
Answered

和欧混殖・均等配置で間延びした文字を検知したい

  • May 17, 2017
  • 1 reply
  • 1281 views

和欧混殖で均等配置の文字組みだと、欧文の単語が次の行に送られ、前行の和文が間延びすることがあります。

この状況をハイフネーションや欧文泣き別れの機能を使わずに、間延びが目立つ箇所だけを個別に修正したいのですが、スクリプト等で検知する方法があればご教授下さい。

例えば文字間が二分以上開けば検知する等です。

文字組みで間延びした字間は、カーニングのように数値で見えず、JavaScriptでのプロパティ名も分からず、調べても分からないため、相談させていただきます。

どうぞ よろしくお願いいたします。

This topic has been closed for replies.
Correct answer Omachi

検知というのが具体的にどういう状況をどのように通知するのか分からないのですが、

文字送りがどのような状況になっているかを、スクリプトで調べる手段はあります。

<横組みの例>

var txf = app.activeDocument.textFrames[0];

var p = txf.characters[0].horizontalOffset;

for (i=1; i<txf.characters.length; i++){

    $.writeln(txf.characters.horizontalOffset - p);

    p = txf.characters.horizontalOffset;

}

このスクリプトを実行しますとESTKのコンソールに

3.50000169542101

3.500001695421

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

-38.5000186496311

8.16667219267951

11.6666732152303

11.6666705237495

-31.5000159316593

2.02995253668891

(以下省略)

というように、前の文字との間隔が出力されます。

この数値を取得しながら、「指定値より大きい場合に何かをする」

スクリプトを書けばよいです。

この例ですと、図の1行目(ベタ)は間隔が3.5で、マイナスになっているのは

改行された後の文字です。

見てわかる通り、「間延び」部分の数値が見た目の文字間隔と異なるのは

InDesignの仕様ですのでこれ以上何かしたいと思ってもできません。

「何かをする」のところは、具体的に「文字に下線をつける」とか

「太字にする」「圏点をつける」などの指示がないと、

誰も何もできませんので、よく考えてください。

1 reply

Omachi
OmachiCorrect answer
Legend
May 17, 2017

検知というのが具体的にどういう状況をどのように通知するのか分からないのですが、

文字送りがどのような状況になっているかを、スクリプトで調べる手段はあります。

<横組みの例>

var txf = app.activeDocument.textFrames[0];

var p = txf.characters[0].horizontalOffset;

for (i=1; i<txf.characters.length; i++){

    $.writeln(txf.characters.horizontalOffset - p);

    p = txf.characters.horizontalOffset;

}

このスクリプトを実行しますとESTKのコンソールに

3.50000169542101

3.500001695421

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

3.50000169542101

-38.5000186496311

8.16667219267951

11.6666732152303

11.6666705237495

-31.5000159316593

2.02995253668891

(以下省略)

というように、前の文字との間隔が出力されます。

この数値を取得しながら、「指定値より大きい場合に何かをする」

スクリプトを書けばよいです。

この例ですと、図の1行目(ベタ)は間隔が3.5で、マイナスになっているのは

改行された後の文字です。

見てわかる通り、「間延び」部分の数値が見た目の文字間隔と異なるのは

InDesignの仕様ですのでこれ以上何かしたいと思ってもできません。

「何かをする」のところは、具体的に「文字に下線をつける」とか

「太字にする」「圏点をつける」などの指示がないと、

誰も何もできませんので、よく考えてください。

Q_kenAuthor
Participating Frequently
May 17, 2017

CS5 omachi様

丁寧にサンプルまで付けて頂き、ありがとうございます。

horizontalOffsetで文字座標を得て文字間を出すのですね。

最終的にはノンブルと間延びした文をテキスト出力し、要修正リストとして使う予定です。

ページ数が多いと目視だと時間もかかりますし、間延びを判断するのに個人差が出るのでスクリプトで検知できればと思っておりました。

戴いた情報を元に未熟ですが作ってみたいと思います。

貴重な情報ありがとうございました。