inkscapeの半透明オブジェクト問題の検証

inkscapeで作られたデータは、SVG形式のままでは問題が発生する率が非常に高いため、基本的にPDF経由でIllustratorに読み込みます。この際に、半透明化の機能を使ったオブジェクトが消えてしまう場合があります。

まずはこの問題に対する有志による検証です。他にも発生しやすい問題がまとめられているので、inkscapeで折り図を描く(かつ投稿などをする)のであれば必読です。

https://sites.google.com/site/origamidiagramsstudygroup/guideline/inkscape

inkscapeでは、オブジェクトを半透明にする方法として、RGBA(赤緑青+透明度)のAの値を変更する方法と、不透明度の項目の値を変更する方法があります。このうち、不透明度を使った半透明オブジェクトがPDF読み込みの際に非表示の状態になってしまいます。ちなみにRGBAの方法であれば問題がなさそうですので、もし必要であればこちらを使うべきでしょう。

読み込んだデータを詳しく見てみると、不透明度を使ったオブジェクトは、色のついたオブジェクトに半透明のマスクをかけたような状態になっているようです。このマスク処理が読み込みの際に正確に反映されず、非表示もしくは完全に透明なマスクとして処理されているというのが原因だと考えられます。対してRGBAの方法を使ったデータの場合、オブジェクト自体に半透明の設定がされている状態になります。データの構造がシンプルな分、問題も発生しにくいのでしょう。

RGBA(アルファチャンネル)を使った半透明データをAIで読み込んだ場合の不透明度の状況。

ちなみに、強引な対処方法としては、正確に読み込めないオブジェクトを含むPDFを一旦別のアプリケーション(MacOS標準のプレビュー等)で開き保存し直すと、PDF自体が別エンジンで書き直されるのか読み込み可能な状態になります。ただしデータの構造等はひどい状態になり編集等に大きな支障が出る、また他の問題が発生している可能性もあるので、あくまで最後の手段とすべきでしょう。

そしてここからが新情報。今回の検証のため最新バージョンのinkscape(MacOS版1.2.1)で確認してみたところ、書き出したPDFが不透明度・RGBA共に半透明を維持した状態で読み込めることが分かりました。

PDFの情報を見比べてみると、書き出しに使われているcairoライブラリのバージョンが上がっていました。また、読み込んだデータを見てみると、オブジェクト+半透明マスクという構造自体は変わらないものの、この二つを含むグループに対して不透明度の設定がされていました。恐らく書き出されたPDFデータの構造などが改善されて、読み込みの精度が上がっているようです。

最新版inkscapeで書き出した不透明度を使ったデータをAIで読み込んだ場合。クリッピングで階層が増えていて、グループに対して透明度の設定がされている。

ということで雑にまとめると、

  • inkscapeのバージョンによって発生する問題は変わる。基本的に改善されているのでなるべく最新版を使うとよい。
  • 改善はされたものの、グループ状態の変化等で半透明化が解除されてしまう可能性もあるので、引き続きRGBA側の機能を使う方を奨励。

となります。

最後になりますが大前提として。異なるソフトウェア間でのデータの完全な再現は非常に難しく、発生した問題を発見し一つずつ検証・解決する必要があります。たとえ同じソフトウェアでも、バージョンやWin-Mac間の差でレイアウト等が再現されない場合もあります。精度の高いデータの変換・読み込みには、データを用意する側とそれを読み込む側の、双方の理解と準備・対策が必要になるのです。