選択したテキストの文章が長い場合に省略表示する (Photoshop CS〜CS4編)

今回も前回のスクリプトと同じネタで長い文章を省略するものです。基本的にはIllustratorと同じですが、Photoshopとテキストの扱いが異なるため注意しなければならない点があります。
まず、Photoshop CSの場合は同時に複数のテキストレイヤーを選択することができません。スクリプトでは選択されたテキストレイヤー上の文字だけを処理対象とします。
Photoshop CS2/CS3では複数のテキストレイヤーを選択することができますが、以下のスクリプトで処理できるのは選択されたテキストレイヤーのうち1つだけです。この選択されたテキストレイヤーのうちレイヤーパレットで一番上にあるものが対象になります。
また、レイヤーがロックされている場合は処理されずエラーになります。

textLen = 10;
postfix = "...";
selLay = activeDocument.activeLayer
if(selLay.kind == LayerKind.TEXT)
{
temp = selLay.textItem.contents;
txt = temp.substr(0, textLen);
if (temp.length > textLen) txt = txt + postfix;
selLay.textItem.contents = txt;
}

設定は前回と同じですが、念のため書いておきます。
まず、テキストレイヤー内にある文字数が何文字以上なら省略表記するかは

textLen = 10;

の10の値を変更してください。これは10文字より文字数が多い場合に省略の対象になることを示しています。省略表記した際に文字の末尾に付加する文字は

postfix = "...";

で指定します。
省略表記するのは先頭の文字と末尾の文字を残して中間を省略する場合があります。この場合は以下のスクリプトを使ってください。

textLen = 12;
preLen = 5;
postLen = 4;
centerfix = "...";
selLay = activeDocument.activeLayer
if(selLay.kind == LayerKind.TEXT)
{
temp = selLay.textItem.contents;
txt = temp;
if (temp.length > textLen)
{
preText = temp.substr(0, preLen);
postText = temp.substring(temp.length - postLen, temp.length);
txt = preText + centerfix + postText;
}
selLay.textItem.contents = txt;
}

省略した場合に先頭の文字を何文字にするかは

preLen = 5;

の値を変更してください。同様に末尾を何文字表示するかは

postLen = 4;

で指定できます。

 

[サンプルをダウンロード]