ASCII85の基本

連日猛暑の上、新型コロナウイルス感染症の影響もあって身動きがとりにくくなっていて大変なのはわたしだけではないとは思います。皆様はmRNAキャリアの投入はお墨でございましょうか。わたしは週明けに1回目を投入予定でございます。家人たちは既に1回目を2週間前に接種済みでそろそろ抗体値が上昇するころかと思います。当所においてもデルタ株の罹患者が確認されており、注意が必要な状況です。とまあ、こんな事書き始めるときりがありませんが、本日お届けするのはPDFの中身のあのストリームを紐解く時に必要な情報です。PDFの内部構造はいくつかのデータストリームに分割されて並べられているのですが、ここで利用されているのがFlateストリームとAscii85ストリームです。今回はAscii85の方をお届けいたします。

続きを読む……

convertSampleColorメソッドについて

ほとんど参考になる資料がないということで書いておきます。
細かいことを説明すると内部的なカラーマッピングテーブルとかも説明しなくてはいけなくなるのでユースケースから見ていきます。
まずはRGB->CMYKへの変換です。この場合以下のように引数を与えます。

alert(app.convertSampleColor(ImageColorSpace.RGB, [255,0,0], 
       ImageColorSpace.CMYK, ColorConvertPurpose.defaultpurpose));

引数について1つ目が変換元のカラースペース、2つ目がカラー値で上のケースではRGBの数値を配列として与えます。3つ目が変換先のカラースペースです。4つ目が変換用途でこのオプションの影響については後述します。
実行すると指定のRGB値に応じたCMYK値が返されますが、この値はドキュメントに設定されたカラープロファイルの影響を受けます。
つづいてCMYKからRGBへの変換を見てみましょう。

alert(app.convertSampleColor(ImageColorSpace.CMYK,
     [0,0,0,100],ImageColorSpace.RGB,ColorConvertPurpose.exportpurpose))

先程とほぼ同じ構成です。ドキュメントのカラープロファイルが変換に影響するのは先程のRGB->CMYK変換と一緒です。ここではK=100をRGBに変換していますが、この場合ColorConvertPurposeの設定が大きく影響します。Illustrator初期設定ー>ブラックのアピアランススクリーンpreviewpurposeプリント/書き出しexportpurposeに対応して挙動が変わります。これらをリッチブラックに設定してあるとこの2つのパラメータではBlack Preservationが有効になり、内部のカラーマップを参照してRGB->[0,0,0]と最も暗い色に変換されます。defaultpurpose及びdummypurposeではBlack Preservationは効きませんからカラープロファイルからダイレクトに変換されます。また、環境設定で全てのブラックを正確に表示を設定してある場合でもBlack Preservationは働きませんのでdefaultpurposeと同じ結果になります。
これでいいかな? おもちくん???


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に対して処理を行います。


[AI]消費税を8→10%に変更するスクリプト

さて、皆様におかれましてはご清祥の事とお慶び申し上げます。中には本年中のお仕事も納まってしまって年越しの準備を進められている方も多いかと存じます。
皆様はどんな一年だったでしょうか?良かった人も散々だった人もいらっしゃることとは思いますが、良かった人はそれなりに、悪かった人もそれなりに適当に新年を迎えればよろしいかと思いますです。

そんなこんなで、わたしも来年の準備をやってみました。来年は消費税の増税があります。恐らく既存データの流用等がたくさんあるはずで、ある日を境に全て数字を変更しなければならない様な羽目になるわけですが、それを少しだけ楽にします。

続きを読む……


Reset Textframes Transformation.

Here is a little working concept code you can reset your selected textFrames shear, rotate and reflection. TextFrames have transform matrix. Here is a snipet of get it from a selected textFrames.

alert(app.selection[0].matrix); //Select only target textFrame.

We can invert it using applications method like below

alert(app.invertMatrix(app.selection[0].matrix));

Previouse two snipets return same “[Matrix]”. However, 2nd matrix is inverted values as you see below that make the Property Explorer’s result.

You can use below to test how it works.

var mtx = app.invertMatrix(app.selection[0].matrix);
 mtx.mValueTX = 0;
 mtx.mValueTY = 0;
 app.selection[0].transform(mtx)

*Both TX and TY values are global position. when you inverse it, object moves to outside of maximum canvas size range. Therefor, we need reset these values to 0.

For Japanese…

という事で、諸事情により当面こういった入り混じり系のCodeで話しましょうw状態になります。
今回のものはテキストフレームが持つMatrixプロパティーを利用して変形を元に戻そうというものです。一つ注意が必要なのは変倍は長・平体へ適用されるためマトリクスには情報が含まれませんので戻しようがないところです。まあ、シアーとか微妙な回転をリセット出来るという点は便利ですが…


WorkspaceSwitcherのまとめ

え〜と、QR Code Maker Proの承認がやっとの事で下りました。なぜ3週間もかけた???
ご利用はAdobe Add Onsサイトからどうぞ。
さて、今回のお話には全く関係ないところから入りましたが、みなさん、ワークスペースってどないしてますか?
アドビ社のアプリケーションって作業毎に使うツールも違えば必要なパネルも違うわけですが、ワークスペース切替も面倒だから大体妥協できる組み合わせて用意している方が大半ではないでしょうか?
例えば選択ツール使っている時に字形パネルとか開いていてもそれは全くのデッドスペースなのです。そんなこんなでわたしがAIで使うワークスペースはだいたい以下の様なものです。常時使うのは3種類。これを切り替えて使います。
まず汎用です。

続いてテキスト編集用

3つめはパス等のアート編集用

こんな感じですね。
さて、切り替えて使うと言いましたが、これは自動的に切り替わるようにしています。それを可能にするのがWorkspaceSwitcherなわけです。

続きを読む……