Illustrator:リンクの注意のはなし

ちょっと現場でイラスターのトラブルがあったようで、
聞けば配置ファイル収集ソフトに関わる過信が原因だそうですよ。

別のディレクトリに置いてある同名ファイルが一カ所に集められる際の挙動などは
あらかじめ頭に入れた上でファイル名や置き場所の管理しないといけませんやね。

最近はCCにパッケージ機能なんかついて解消されてるらしいですがね。
リンクの更新もちゃんとしてくれる。
ウチらのように少し古いバージョンをいつまでも使う現場ではただのおとぎばなしでして…

配置ファイル収集の話とは違うんだけど、
これをきっかけに思い出した、過去に8.0で事故ったケースを紹介しておきます。
手元のCS6で試してみたら同様に再現してしまいました。。

当時、自分だけ残して全員帰り、徹夜で夜中に完全データの一発下版
カレンダーのデータが、こんな感じで入稿してきました。
150224a

注目するべきは、各ドキュメントのリンクが同一階層にないこと、

月ごとのリンクファイルが共通した名前であること、
そしてそれぞれ絵柄が違うこと、
MOを介してローカルにコピーしたデータは全てリンク切れしていたこと。
もうヤバい予感しかしないでしょう。

ウチは当時、まだ「完全データ」という言葉に油断しまくる若者でした。

記憶はあいまいですが、以下の手順で作業したかな。
ドキュメント1を開く

配置ファイルのリンク切れでダイアログが出る

置換ボタンを押し、ファイル選択ダイアログから1つずつ指定
(DefaultFolderへの甘えもあり、この作業を苦と思わない罠あり)

開いたドキュメント1のデータを編集、出力(Quark配置)に向けてeps保存

続いてドキュメント2を開く

ディレクトリ構造はドキュメント1と同様
なのにリンク切れのダイアログは出なかった

気付かず作業、出力、明け方ぐったり帰宅、ぐっすり仮眠

いろいろあって翌日吠え面

以下、仔細に解説など。

ドキュメントと別階層のファイルをリンクしたデータをそのままコピー(=入稿)した場合、
コピー先(受け取り先)ではすべてリンク切れとなります。
これはリンクが絶対パスで記録されているためです。
相対パスと絶対パスについてはこんなかんじ。
150224b

ドキュメントを開いてリンク切れで叱られた際、いきなり置換せず、一旦「無視」して開くと、
ドキュメント情報パネル > 配置されたファイル から元々の配置ファイルの場所を参照することができます。
150224c

リンク修復を人任せにしないために、
データ入稿時には配置ファイルをドキュメントの同一階層への収集が必須となります。
レイアウト完成後に配置ファイル収集ツールなどを利用するわけです。
でも、これはあくまでヨソにデータを出すためのお作法。
自分用に「とっちらかってきたからスッキリさせたい」などの目的ではちょっと危険。

ファイル収集後は元のリンクファイルを片付けておかないと、
次にドキュメントを開いたとき、しれっと元のファイルがリンクされます。
そのまま同一階層のリンクファイルを変更して、
ばっちり直した気になってしまうことも。
こわいこわーい。
150224e

では冒頭の、過去にウチがやらかした作業をもう一度。
最初に開いたドキュメントで、リンク切れのダイアログが出ます。
ちとイラスターのバージョンが半端に古いけど気にしないで…
150224f

人間視点の推測で、階層的にコレと思われるファイルを指定して開きました。
この頃はまだ意識がハッキリしていたので出力見本など参考にばっちり確認などしたし。
150224h

問題は次なんです、次。2つ目のドキュメントを開くとき。

※これには最初のドキュメントにリンクされているのと同じ名前の、
しかし置き場所も絵柄も全く違うファイルがリンクされています。
正しくリンクした場合は、こんなかんじ。
150224i

なのに、「最初のドキュメントを開く時に指定した置換ファイル」を
無言でリンクしてよこす。。
150224j

これで見事に事故りました(と同時に立場を追われましたorz)
まあ、疲労と眠気のなせる校正ザルっぷりもあったわけですが。

回避策としては以下のいずれか。

(日)あらかじめ同一階層にリンクファイルを集めてから開く
全体的にリンク切れの場合、同一階層のファイルを無条件でリンクします。
(月)ドキュメントを開く前にアプリを再起動する
これがおすすめ。手間は減らないけど危険は減る。
(火)名前のかぶったファイルをあらかじめリネームする
こうしておくと複数ドキュメントを一カ所で管理できる利点があります。
が、手作業での再リンクはかなり手間で危険。ひとつでも間違うと閉じてやり直し?
ウチが事故った案件は、(日)と(月)を複合で行うことでどうにかなりました。

最悪のケースとして、こんな状態のデータが来たらおとなしく(火)をやりましょう。
そして恨んでやれ呪ってやれ罵ってやれ。
150224d

仮に入稿データがこのようなディレクトリ構造であった場合、
手元に出力見本があったとしても大ケガさせられるかも知れません。
(これも過去実際にあった)
一般に出回ってる配置ファイル収集アプリやスクリプトも、
名前かぶりについてはケアがない物が多いです。そんなの作業者が自分でしっかりしろよって話ですが…

いくつか試してみたところ、
・後から来たファイルに次々と上書きされていく物
・後から来たファイルの末尾に「 2」など枝番が付く物(当然ドキュメントは自動でそれにリンクしない)
がありました。
特にそのツール達を責める気持ちなどはないのですが。
InDesignもですが、パッケージ機能を使うと重複したファイルには枝番をつけた上でリンク更新してくれますな。

それよりも、昔っからこの仕様なのに、
なんでそんなグダグダなデータ作りをする人がいなくならないのか、という部分にイラダチを覚える次第です。
逆にこの性質を利用して、
同トリミングのリンクファイルを入れ替えて数台のレイアウトを用意する、
なんて作業フローもあるにはありますねえ。色違いのパッケージとか。

まあ気をつけましょうね、という話です。今さらな内容でしたけども。

でーす。

Illustratorで正規表現で検索置換(今さら)

イラスター上で正規表現で検索置換。
既に先人達が作っておられます。
kamisetoさんたけうちとおるさんPICTRIXさん
(PICTRIXさんのRegXについては現在ページごと非公開のようす。残念。)
あとGitHubにはtenさんのも。
それぞれに特色がありますが。

自分としては正規表現の書き損じがとても心配なので、
置換前に結果をプレビューしたい。ぜひしたい。
先達の分でそれができるのはPICTRIX師匠のRegXだけなんですが、
ちとUIのカサがビッグで、触るトコが多すぎて一向に操作を覚えられない…
CS6未対応なのももったいないところで。

それはおいといても、果たして自作できるのか、と。
手間のない範囲でちょっと試してみたところ、
特にエスケープ文字に気を配らなくても手軽にpromptの引数をRegExpオブジェクトに渡せる事がわかったので
面倒なことになる直前までだけど作ってみました。
実際ここまででも結構ホネ折れましたが。。
そして、イラスターは全部BridgeTalk経由せにゃならん。。
POT2移植を諦めたのもこのせい。ぐぬぬ。

えー、シンプルでありながら置換結果をプレビューできる物、ということで
外観こんなんなりました。
20150105a

 

ダウンロードはここから。


ai_simpleRegExp.jsx
MacOSX10.9.5 IllustratorCS3、CS6で動作確認済み
2015.01.05.13:15 エスケープ(\)が使えない、重篤なミスを直しました。
スクリプトをエディタで開いて先頭に「ver_a」と書かれている場合は
お手数ですが再度ダウンロードしてくださいorz ver_b以降をお使いください。

2015.01.06.14:15 改行、タブなど
正規表現のエスケープ文字に絡む記号がターゲットに含まれる場合に帰ってこなくなるバグを修正。ダウンロード先は同じです。ver_c となります。すいませんごめん。
これにより、プレビュー窓がほとんど使い物にならなくなりましたw いずれ直します

2015.01.13.12:00 ver_e
複数段落を有するテキストが絡むと動かなかった件を含め、
こっぴどく直しました。すいませんすいません。
また、注意事項を1つ追加しました。再度確認お願いします

2015.11.16 ver_f
置換語内のメタ文字を正しく解釈するよう修正。
“\t” をタブ送り文字、”\r” を改行として扱います。
これにより後方参照も可能となりました。やったー。

2015.12.04 ver_g
上記に加え、強制改行(Unicode:0003)文字を
“\n”(Unicode:000A)で代用可能に。
かなり汚い書き方したのでバグ出るかも。

2017.04.18 ver_h
1年半前にアップしたver_gの置換部分にゴミを置き忘れていて動かなかったのを修正…
誰か教えてくれてもorz


 

検索対象となるのはドキュメント上の選択可能なテキストオブジェクト。
または、あらかじめ選択されているテキストオブジェクトがあればそれらだけが対象となります。

あそびかた

最初は「検索語」ボタン。ダイアログが出るので検索語を入力します。
ExtendScriptの仕様にのっとった物なので戻り読み(?<=hoge)と(?<!hoge)は使えません。

フラグオプションについてはInDesignやJeditなどでしか正規表現を扱わない人には目新しいかもですが
チェックを入れることで以下のご利益があります。
i……大文字、小文字の区別なし
m……複数行に対応
g……検索結果が1つのテキスト内に複数見つかる場合、すべて対象とします(オフでは先頭の1つのみ)

そしたら「まず検索」ボタン。←二番目なのに「まず」付けちゃった。。
検索結果は選択ハニーとなって示されます。
20150105b

1つでも見つかった場合、「まず検索」ボタンは操作不能となり、他のボタンが操作可能となります。
「中断」ボタンを押すか、全て置換し終わるか、まではボタンは元に戻りません。
ただ検索&選択したいだけなら、ここで終了。

置換するなら「置換語」ボタンで、置換語の入力。
グループ参照はInDesignのGREP検索置換同様$1〜$9を使います。
20150105c

「検索結果」と「置換予定」の欄に文字が出ます。これが直近のターゲットです。
ここから1つずつ順に置換するには「置換&次へ」ボタン。
置換が実行され、次の対象が「検索結果」と「置換予定」に反映されます。
まずってたら「スキップ」ボタンで、置換せず次へ。
「残りぜんぶドン」ボタンは考えずに感じてください。

で、以下、とても大事な注意点。
読まずに使って困った事になってエーンって泣いても知りません。

 

(日)テキスト属性

置換後は、テキストオブジェクト全体の先頭文字の属性に均されてしまいます。
不向きなオブジェクトにはまったく使えません。
先達のスクリプトにはここもしっかりクリアされている物もあります。
要は字数をカウントした上で1文字ずつ置換していかないといけない箇所なのです。
めんどくさい上に精査している心の余裕がないのでココの強化はまたの機会に。
20150105d

(月)威張るパレット

ScriptUIで作ったパレットが出ずっぱりなのですが、
これはプラグイン仕立てで作ったパネルと違い、ドキュメントウィンドウと主導権の取り合いをします。
パレットをいじった直後は、いかなるキーボード操作もドキュメントに届きません。
バージョンによっては問題ないかも知れません。CS4がとくに鬼門なので気をつけて。
作業時は一度ドキュメントウィンドウをカチしてアクティブにしてあげてください。
20150105e

(火)戻り読み非対応

上でも書きましたが、ExtendScriptの正規表現は戻り読み・否定戻り読みに対応しておりません。
なかったら作ればいいじゃない、となればかっこいいんですけども。
ウチはかっこわるいので作りません。
RegXでは可能です。どれだけ作り込んだんだって話ですよもう。
以上、反響如何、モチベ如何では強化するかも知れません。ウチはお金がありません。

(水)検索〜置換中は選択ハニーを変更しないでください(2015.01.13追記分)

検索結果を選択ハニーで表すのは前述の通りですが、
いざ置換の際にはその選択ハニーを頼りにテキストをつかまえます。
選択状況を変更すると誤動作します。

ですー。

Illustrator:縦中横設定にバグ

どもども。諸事情もないのに最近みょうにイラスターづいてますが。
というか、バグづいてますが。。
ふだん文字組みは全部InDesignでやっちゃうけど、ヨソから来たデータに関してはもう不可避。

なんだか縦中横の文字が見本とズレてて、
根本治療する時間がなかったのでちまちま位置修正してたんですけど。
以下、CS6でスクショ撮ってますがCCもCS5以前も同様です。
前置きですが、ウチは環境設定で単位をそれぞれ、文字は級、送りは歯、としてあります。

20140611a

縦中横にした文字を選択して、縦中横設定。
ちょっと左にシフト。-5H。ちょっとじゃないけど、どんまい。
20140611b

でOKボタン。
…その後、なんとなくもうちょっと直したくなって、また縦中横設定を開いた。
そしたら、こう。
20140611c

この数字、おわかりの方も多いでしょうけど、Point値の整数なんですね。。
ドロップダウンリストの中もPointしかいない。CS4までは文字サイズもこうだった。

イラスターさんは距離に関わる処理はすべて中の人がPointでケーサンしてます。
それはともかく任意の単位の整数入れたんだから言う事きけよ。
こっちは歯にしたくてカネ払ってんだよ(たぶん)

で、疑問。
どのタイミングでPoint整数値に直してくださりやがっていらっしゃるのか、確認しました。
左右位置未調整の縦中横文字の両脇にガイド。そのガイドを外側へ向けて1ptずつ複製。
くさめりまさお。…誰だw
20140611d

これで、選択ハニーを非表示にしつつ縦中横設定。
プレビューにチェックを入れながら左右位置をマイナス(左)にシフトしていってみたところ、
わあ。ガイドにぴったりだー。つまりすでにPoint整数。
20140611e

これも、一度OKボタン押して再度、縦中横設定を開くと-4.23Hと出る。
このまま環境設定>単位 で、日本語オプション(CCでは東アジアなんちゃら)
を「ポイント」にしてやると
当たり前のようにこんなかんじ。
20140611f

なんかもう、ハナッからPoint整数から外れる気がないみたい。ぐぬぬぬぬ
…というわけで、不具合報告を出しておきました。

(縦中横が日本語版独自機能であるのを思い出すにあたり、
「英語版ではちゃんと動作してたりしてー」なんて思って
言語環境を英語に切り替えてシステム再起動までしちまいました恥ずかしいorz)

でーす。


2014.06.18 追記
InDesignなんかだと、スクリプトでなら制御可能な要素もあったりしたのを思い出し、
オブジェクトモデルをほじくってみました。

teteChuYokoHorizontal、tateChuYokoVertical
いずれもデータ型がInt32。つまり整数のみ。単位がポイント限定な事の是非はさておき、
これはバグというよりは仕様の範疇…うそん。いやん。
ちなみに記事を投げたと同時に不具合報告を出しておいたのですが
Adobeさん様からはリアクションが一切ありませんorz

最後に、この仕様の詳細。
通常は、任意の単位つきで数値入力→ポイント値に換算の上四捨五入されます。
これをスクリプトで単位なしで小数指定してやったら小数は切り捨てられました。Int型は整数部分しか受け付けませんので当然なのですが、
この仕組みにより、元から環境設定で単位をポイントで扱った場合のみ、
小数の指定は四捨五入ではなく切り捨てとなりますのでご注意おば。

ですです。