■プログラム説明(ソースコード説明)
			 変数に振幅、角度、XY座標、周期を設定します。文字の数だけ繰り返し処理を行い、サイン値をMath.sin()を使って求めます。コサインカーブにしたい場合はMath.cos()にします。サイン値に振幅を乗算しY座標を求めます。translate()を使って指定座標に文字を移動します。
			
			■ソースコード
			str = "文字列がサインカーブに沿って自動的に配置されます。手作業では簡単そうで面倒な処理です。";
			h = 60;	// 振幅
			d = 4;	// 何度ずつ角度を移動させるか
			x = 0;	// X座標
			dx = 10;	// 横の移動量
			max = 360 * 2;	// 周期
			
			docObj = activeDocument;
			for (i=0; i<str.length; i++)
			{
				n = (i * (max / str.length)) * Math.PI / 180;
				y = Math.sin(n) * h;
				x = x + dx;
				txtObj = docObj.textFrames.add();
				txtObj.contents = str.charAt(i);
				txtObj.translate(x,y);
			}
			
			
			■使い方
			1:描画するドキュメントをアクティブにします。
			2:ファイルメニューからスクリプトを実行します。
			3:文字がサインカーブに沿って配置されます。
			
			
			■ポイント
			 文字を個別に分割せずに1行のテキストとして処理する場合にはベースラインシフトを使って位置をずらします。以下がサンプルになります。
			
			str = "文字列がサインカーブに沿って自動的に配置されます。手作業では簡単そうで面倒な処理です。";
			h = 60;	// 振幅
			d = 4;	// 何度ずつ角度を移動させるか
			x = 0;	// X座標
			dx = 10;	// 横の移動量
			max = 360 * 2;	// 周期
			
			docObj = activeDocument;
			txtObj = docObj.textFrames.add();
			txtObj.contents = str;
			txt = txtObj.textRange;
			for (i=0; i<str.length; i++)
			{
				n = (i * (max / str.length)) * Math.PI / 180;
				txt.characters[i].baselineShift = Math.sin(n) * h;
			}
			
		
■実際のスクリプトをダウンロード(sample.js.zip)