Illustratorの「Diacritics Position」について

昨日目の前をdiacVPosっていうのがとおりすぎていったんですが、こいつって発音記号の縦位置関連のプロパティーだったよなぁ…と思っているうちに見失いました。
後で思い出そうと頑張ってみましたがはっきりとしたことはわからなかったのですが、通勤電車の中でちょっと思い出しました。こいつってあらびっくやへぶらいな方々の為に用意された機能なのです。で、先程大急ぎで調べました。

characterAttributeschilddiacVPosdiacXOffsetdiacYOffsetの3つのプロパティが存在します。では試してみましょう。


グレイで表示されているのがDiacVPosType.DEFAULT_POSITIONです。ピンクがDiacVPosType.LOOSE_POSITION、ブルーがDiacVPosType.TIGHT_POSITIONです。enumeratorにはあとひとつOPENTYPEがあるのですが、現在はOpenTypeフォントを利用しますのでおおよそのケースではDEFAULTと同じになります。

更に数値でダイレクトにdiacritical markを動かしてみます。

app.selection.characterAttributes.diacXOffset = 500;

結果は…

黄色いほうが500移動したものです。

同様に縦方向は

app.selection.characterAttributes.diacYOffset = 500;

として、結果は以下のようになります。

※スクリプト実行時はテキストツールで全体を選択した状態でtextRangeに対して処理を行います。


InDesignで圧縮ファイルを操作しよう(^-^)/

みなさまお久しぶりでございます。皆様におかれましてはご健勝のことと存じますが、無事年の瀬を乗り切れそうな方もそうでない方もそれなりに過ごしていただければと思う次第です。
わたしどもに関しては自動化フォーラムを消されたり(信じられない!)Communityが散々な出来(なんなんだろうねホントウニ!!!)だったりで、さんざん暴れまわって(だいたい裏で…)いるような次第でございますが、裏でちょろちょろっと(本当にチョットダケヨ)動いていたら暗躍とか言われて心外なのです。
まあ、こみゅにてぃに関しましては(問題はアレだけじゃないけどw)多くの皆様にご意見(罵声)・ご支持(本当か?)を頂き(実際はどうなんだろう?)良い方向に向かっている(多分ダメ)のかどうなのかはわかりません(本当ドウスンダコレ?)が、言う必要のあること(コレオオスギ)は言わせていただく(だいたいは裏で)と言ったスタンス(メンドウですぅ)でこれからも挑もう(多分)とは思うのです(ガンバルルルル)。
と長々と並べ立てているのですが、本題です。ばたばたしている間にAdvent Calendarの季節がやって来てしまったわけでして、この記事は「https://adventar.org/calendars/3958」の1番めのTipsにあたるものという事になります。一番最初ですからゆる〜く行きますねw

続きを読む……

[AI]回転された配置画像の縮尺を計算するスクリプト

これ、この前詰まってた数学的な問題を解消できたやつです。
元ネタはいつものごとくフォーラムです。
https://forums.adobe.com/thread/2455224
して、コードはこちら

var tg = app.selection[0];
var mx = tg.matrix;
var deg = Math.atan2(mx.mValueB, mx.mValueA) * 180 / Math.PI;
var nm = new Matrix;
nm.mValueA = nm.mValueD = 1;
nm.mValueB = nm.mValueC = 0;
var rtmx = app.concatenateRotationMatrix(nm, deg);
var sc = mx.mValueA / rtmx.mValueA;
alert(sc*100);

選択した画像の縮尺を計算します。(^-^)/


[AI]アフィン変換の活用[AI]

アフィン変換の活用Illustratorはいくつかのオブジェクトがmatrixプロパティを持ちます。そして、appクラスには各種matrix操作メソッドがあり、それを利用することによって色々と出来ることがあります。

上の画像のようにinverseMatrixを利用して回転角・縮尺をリセットするような操作が可能です。もっと単純に処理できるのはテキストオブジェクトでスケール等の情報が全て級数や長平体に移行されるためmatrixが回転角のみとなります。その為matrixの一部の数値からasinを利用して回転角を計算することが可能です。

var m = app.selection[0].matrix;
alert(-Math.asin(m.mValueC)/Math.PI*180);

メソッドが返すのはラジアンですから上の様にdgreeに変換する必要があります。とまあ、こんな感じで上手く使うと非常に便利なアフィン変換のマトリクスですが、なんだかなぁ〜って思っている方に以下のブツをおすすめします。

var $_affine={
var $_affine={
 win:function(){
 var w = new Window ('dialog', "affine matrix", undefined);
 var p1 = w.add('panel',undefined,"a"); p1.size = [100,45];
 var tx1 = p1.add('edittext',undefined,'1',{multiline:false});
 tx1.characters = 5;
 var p2 = w.add('panel',undefined,"b");
 p2.size = [100,45];
 var tx2 = p2.add('edittext',undefined,'0',{multiline:false});
 tx2.characters = 5;
 var p3 = w.add('panel',undefined,"c");
 p3.size = [100,45];
 var tx3 = p3.add('edittext',undefined,'0',{multiline:false});
 tx3.characters = 5;
 var p4 = w.add('panel',undefined,"d");
 p4.size = [100,45];
 var tx4 = p4.add('edittext',undefined,'1',{multiline:false});
 tx4.characters = 5;
 var cl = w.add('button', undefined, 'cancel', {name:'cancel'});
 var bt = w.add('button', undefined , 'apply', {name:'ok'});
 bt.onClick = function (){
 $_affine.applyTransform(tx1.text,tx2.text,tx3.text,tx4.text);
 } w.show();
 },
 applyTransform:function(a,b,c,d){
 var tm = new Matrix();
 tm.mValueA = Number(a);
 tm.mValueB = Number(b);
 tm.mValueC = Number(c);
 tm.mValueD = Number(d);
 tm.mValueTX = 0;
 tm.mValueTY = 0;
 //alert(tm.mValueA+tm.mValueB+tm.mValueC+tm.mValueD);
 app.selection[0].transform(tm,true,true,true,true,1);
 app.redraw();
 }
 }
$_affine.win();


ScriptUIで各パラメータを入力して選択したオブジェクトを回したり拡大したりと試せるようになっています。一度使ってみてください。


FrameMakerのQRコードビルダーについて

ご無沙汰しています。こちらで書くのは久しぶりなのですがAdobeのユーザーフォーラムにブログを設けましたので今後はそちらの記事が多くなる予定です。自動化全般について取り扱うスタイルは今までと変わりありませんので定期的にチェックしてみて下さい。

https://forums.adobe.com/community/international_forums/japanese/automation/overview

ところで、昨年末から個人的にFrameMakerを仕入れて色々とテストしています。

これもExtendScriptをサポートするのですが、随分と毛色が違っていて思うように動かす事ができません。UI絡みなんてとても変です。というか、まともにScriptUIが使えないw

それは多分どうでもいいんです。今回はまたもやBUGを踏み抜いてしまったようなので、その顛末を残しておきます。

続きを読む……


AI rotaterの新版などを…

あけおめ、どぞよろ(^-^;
という事で、リクエスト来てたローテーターのアップデートです。
zxpパッケージは以下のリンクから
https://drive.google.com/open?id=1qwRLfqrMp9hdjUesZ_ArFzXkDxswo-3o

ZXP Installer等を利用してインストールして下さい。対応はver.17以降を全てサポートしています。

利用方法
このツールは曲線中のアンカーポイントにおける接線に対して平行にオブジェクトを自動的に配置するためのものです。平たく言うと選択したアンカーポイントを見て良い感じに一緒に選択したオブジェクトを回してくれるというものです。
例えは、以下のようにテキストとアンカーポイントを選択しておきます。

この状態からボタンをワンクリックで設定したオフセット位置に角度を合わせた状態に回転して配置し直してくれる優しい子です。

もう一例挙げておきましょう。

この様に路線に対して駅の四角を手早く配置する際に便利です。