Illustrator ver.30で実装されたグラデーション新機能の技術的解説

最終更新日

新規リリースということで皆さんの関心も高い目です。いち早く概要と要点をお伝えしたわけですが、今回は、仕組み的にどうなっているんだ?ってところを掘り下げてみましょう。

各機能の挙動について

まずは、ここまで解説したことをまとめておきます。

知覚的グラデーションについて

・CMYKにおいては全てのグラデーションストップの色がプロファイル依存の変換の影響を受ける
・PDF書出し時に72ppiでラスター化される
・下位バージョンで開くとクラシックとして開かれる。カラー変換の影響もない

ディザ

・PDFに書き出した際にドキュメントのラスタライズ効果の設定に依存したラスター化が行われる
・下位バージョンではPDF書出し時と同様のビットマップが埋め込まれた状態となる。

この挙動をしっかり把握して下さい。DTP関連の方は知覚的グラデーションは使用禁止です。ディザは利用可能です。Web等のディジタルメディア系の方は知覚的グラデーションを利用可能ですが、従来と比較すると中間調が大きく遷移するので違和感を覚える方もいるかもしれません。ディジタル系にはディザは必要ありません。

という事で、仕組み的な部分を見ていきましょう。
Illustratorの内部構造のお話ですが、当然の事ながらグラデーションの記述方法が拡張されています。
まずは知覚的グラデーションから見ていきましょう。

%AI5_BeginLayer
1 1 1 1 0 0 1 0 79 128 255 0 50 0 Lb
(<layerName…>) Ln
0 AE
%_/ArtDictionary :
%_/XMLUID : (<uid......>1) ; (AI10_ArtUID) ,
%_;
%_
0 A
0 Xw
0 Ae
u
1 Ap
4 As
0 O
0 1 0 0 0 Xy
0 J 0 j 1 w 10 M []0 d
0 XR
328.827586206897 -265.517241379311 m
168.827586206897 -265.517241379311 L
168.827586206897 -105.517241379311 L
328.827586206897 -105.517241379311 L
328.827586206897 -265.517241379311 L
Bb
1 (<gradientName......>) 0 0 0 1 1 0 0 1 0 0 1 Bg
160 0 0 -164 168.827586206897 -103.517241379311 Xm
7679.8275862069 0 0 -164 -7511 -103.517241379311 Bc
160 0 0 -164 168.827586206897 -103.517241379311 Bm
7679.8275862069 0 0 -164 328.827586206897 -103.517241379311 Bc
f
0 BB
U
%_/ArtDictionary :
%_/Dictionary : /NotRecorded ,

Illustrator形式ファイルの該当部分を抜き出したものです。各行の末尾がコマンドで、その前の数値等が引数となります。mはmoveToで指定の位置までポインタを移動しL(lineTo)で線を4回引きます。これで四角形が描かれるわけですけど、その下にBgというのがいらっしゃいます。これがBeginGradientでグラデーションの始まりとなります。ここではグラデーションに対するマトリクスを適用してグラデーションの状態(角度や範囲等)を指定しています。実際のグラデーションの内容はもっと前の方であらかじめ定義していて、それを名前指定で参照する仕組みとなっています。
では、定義自体を見てみましょう。

%AI5_BeginGradient: (gradientName.....)
(gradientName.....) 0 2 0 0 Bd
[
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1
0
1 %_Br
[
0 1 1 0 1 1 6 50 100 %_BS
%_0 1 1 0 1 1 6 50 100 Bs
0 0 1 0 1 1 6 50 0 %_BS
%_0 0 1 0 1 1 6 50 0 Bs
BD
%AI5_EndGradient

この部分です。Bd(BeginGradientDefinition)で定義されるのですが引数が5個存在します。2025迄は引数が3個でした。前から「名前」「タイプ」「nColor」「知覚的(フラグ)」「ディザ(フラグ)」となります。
こちらの例ではリニアグラデーションでカラーストップが両端の2個で、知覚的・ディザはオフになります。

知覚的で保存した場合

データ構造自体は上の状態と変わりません。
定義部分は以下のようになります。

%AI5_BeginGradient: (gradientName.....)
(gradientName.....) 0 2 1 0 Bd
[
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1
0
1 %_Br
[
0 1 1 0 1 1 6 50 100 %_BS
%_0 1 1 0 1 1 6 50 100 Bs
0 0 1 0 1 1 6 50 0 %_BS
%_0 0 1 0 1 1 6 50 0 Bs
BD
%AI5_EndGradient

このように知覚的とクラシックの違いはフラグ1つだけです。2026ではこのフラグを見て変換処理を行います。下位バージョンではこのフラグ自体を無視し従来通りのグラデーションとして処理します。

ディザの処理

ディザをONにした場合、グラデーション定義にてフラグが1つ変化します。

%AI5_BeginGradient: (gradientName.....)
(gradientName.....) 0 2 0 1 Bd
[
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1
0
1 %_Br
[
0 1 1 0 1 1 6 50 100 %_BS
%_0 1 1 0 1 1 6 50 100 Bs
0 0 1 0 1 1 6 50 0 %_BS
%_0 0 1 0 1 1 6 50 0 Bs
BD
%AI5_EndGradient

このように5つ目の引数が1になります。知覚的とは異なりディザの場合データ記述部が大幅に変わります。

%AI17_Begin_Content_if_version_gt:24 16
0 Ae
u
0 Ae
u
0 Ae
q
0 1 0 0 1 Xy
0 J 0 j 1 w 10 M []0 d
0 XR
%AI5_File:
%AI5_BeginRaster
() 1 XG
/DeviceCMYK XN
[ 0.24 0 0 0.24 82.5307380055747 -54.8102411111649 ] 434 434 0 Xh
[ 0.24 0 0 0.24 82.5307380055747 -54.8102411111649 ] 0 0 434 434 434 434 8 4 1 18 1 0 4 4 0 0
%%BeginData: 753427
XI
...
%%EndData
XH
%AI5_EndRaster
N
%_/ArtDictionary :
%_0.24 /Real (Raster Art Original Scale) ,
%_0 /Int (CAITagType) ,
%_(c986a11e-7aae-4d5e-9d9f-c4bd33bad351) /UnicodeString (AI24 ImageRawDataUUID) ,
%_(53ce5a6f-b683-478f-812e-36f9b863f6af) /UnicodeString (AI24 ImageAlphaRawDataUUID) ,
%_;
%_
1 Ap
4 As
0 1 0 0 0 Xy
184.530738005575 -156.810241111165 m
84.5307380055747 -156.810241111165 L
84.5307380055747 -56.8102411111649 L
184.530738005575 -56.8102411111649 L
184.530738005575 -156.810241111165 L
h
W
n

…で省略していますが、BeginDataからラスター化したビットマップが埋め込まれます。Alternate_Contentを挟んで複数のラスタライズされたイメージが差し込まれるので相当な容量増加となります。
この埋め込まれたビットマップが下位バージョンで開いた時に表示されるラスター化されたグラデーションです。
この仕組みはVersioned_Contentという仕組みで各バージョンにおける差異をそれぞれ記述し下位バージョンで開いた際に適宜該当部分を選択・表示させるための仕組みとなります。

ということで、ファイル構造から新機能の運用を考えると…
知覚的グラデーションは印刷向けのデータでは利用不可、Webやディジタルメディア用途では利用OK。
ディザは印刷用途ではメリットがあるが、容量増加の可能性がある為、トーンジャンプが起きないグラデーションではチェックしない。Webやディジタルメディア向けではメリットがないので常にオフ。

ってところが妥当なところでしょう。

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする