文字で埋め尽くす (Photoshop CS2)

イラストやポスターなどの背景の効果として日本語文字で埋め尽くすものがあります。手作業でコピー&ペーストしてもできますが、スクリプトを使えば手軽にできあがります。以下のスクリプトは最初の一行目で定義された「あ〜ぬ」までの文字で埋め尽くすものです。テキストレイヤーとして生成されるため、後からフォントやサイズ、色などを自由に変更することができます。


【スクリプト1】
str = "あいうえおかきくけこさしすせそたちつてとなにぬ";
w = 40; // 横の文字数
e = 400; // 表示文字数
fs = 16; // 文字サイズ
preferences.rulerUnits = Units.PIXELS; // 単位設定
layObj = activeDocument.artLayers;
layRef = layObj.add();
layRef.kind = LayerKind.TEXT;
layRef.textItem.font = "Osaka"; // Osakaフォント
layRef.textItem.size = fs;
txt = "";
cnt = 0;
for (i=0; i<e; i+=w)
{
for(j=0; j<w; j++)
{
txt += str.charAt(cnt++);
cnt = cnt % str.length;
}
txt += String.fromCharCode(13);
}
layRef.textItem.contents = txt;


あらかじめ決められたものではなくて、どちらかと言えば漢字で埋め尽くしたい人もいるでしょう。この場合は以下のスクリプトを使えば一応可能です。一応と書いたのは、フォントによっては文字コード(Unicode)と対応していないものがあり、その場合は???となってしまうためです。ただ、レイヤーパレットやウィンドウのタイトルバーには正しく表示されるので内部的に何か不具合がある可能性もあります。最悪は手作業で???を消すというオチになってしまいます。(自動化になってませんが、文字化けしているかどうか、という判断はプログラムではできないのです)


【スクリプト2】
w = 40; // 横の文字数
s = 20124; // 最初の文字コード
e = 21124; // 最後の文字コード
fs = 16; // 文字サイズ
preferences.rulerUnits = Units.PIXELS; // 単位設定
layObj = activeDocument.artLayers;
layRef = layObj.add();
layRef.kind = LayerKind.TEXT;
layRef.textItem.font = "Osaka"; // Osakaフォント
layRef.textItem.size = fs;
txt = "";
for (i=s; i<e; i+=w)
{
for(j=0; j<w; j++)
{
txt += String.fromCharCode(i+j);
}
txt += String.fromCharCode(13);
}
layRef.textItem.contents = txt;


表示される文字コードの範囲は以下の2行で変更することができます。

s = 20124; // 最初の文字コード
e = 21124; // 最後の文字コード

この文字コードですが、以下の一行だけを書いたスクリプトを用意し実行すると文字コードが表示されます。以下の場合には「亜」の文字コードが表示されます。

alert("亜".charCodeAt(0));



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