2013年11月08日

ルビのついた文字(親文字)を置換する

DTP作業者にとっての難易度 ★☆☆☆☆(1)

「検索/置換」はInDesignの機能の中でも便利で、使用頻度の高いものです。しかしInDesignでは(なぜか)ルビのついた文字(親文字)を置換するとルビ文字が消えてしまいます(InDesign CCになっても変わりません)。作業上とても不便なので、これを回避するためのJavaScriptを作ってみました。
考え方はとてもシンプルです。下図・左のようなルビ付きの文字を右のように分解してから置換を実行、その後、あらためて左のような状態に組み立て直すというものです。
1109.jpg

※私にはゼロからJavaScriptを書くほどの知識はありませんので、多くの部分についてはWeb上で探したものを書き換えたり、合体したりしています。たとえばJavaScriptを分解する過程は「DOT」さんの「★ルビをすべて解除する」をベースにしました。他にも「市川せうぞー」さんの「簡単な検索置換(検索オプション)- 名もないテクノ手」をはじめ、いろいろなサイトを参照しています。



※動画内でも少し触れましたが、たとえば一部の親文字の書式が異なる場合は他の文字の書式に影響が及ぶ可能性があります。他にも何らかの問題が生じる可能性は否定できませんので必ずバックアップを取り、慎重にお使いください。あまりドキュメントの完成間際に使用することはお勧めしません。


ここ数回JavaScriptを題材にしてきましたが、もう材料がありません(知識がないため1つのJavaScriptを書くのに膨大な時間がかかりますし……)。次回以降は背伸びせず初心に立ち返り、もう少し身近な機能について書くことにしようと思います。よろしくお願いします。
サンプルデータはこちら《minimum2013_1109b.zip》です(CS4以降)。

posted by 照山裕爾 at 19:27| Comment(0) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする

2013年10月26日

JavaScriptで丸数字、四角囲み数字などに置換する

DTP作業者にとっての難易度 ★★☆☆☆(2)

前回のJavaScriptをご覧いただいた方に「記号などはCIDの方がいい場合もあるかも」とヒントをいただき、活用方法を考えてみました。

多くのフォント(Pro以上?)にはカッコ書きの数字や丸数字、四角囲みの数字などが用意されています。が、その多くにはUnicodeが割り当てられていないため、ライターや編集者の方々はテキストデータに入力できず不便を感じていることが多いのではないでしょうか。

そこで、たとえば「○100○」のように入力しておけば丸数字の100に置換されるように前回・前々回のJavaScriptのリストを書き換えてみました。下図のように、「○100○」などの文字列をキリル文字もしくはギリシャ文字1文字に置換した後、字形置換をおこないます。
1025-01.jpg

※ドキュメント内でキリル文字やギリシャ文字を使用していた場合、そこまで一緒に置換されてしまいます。必要に応じてリストを書き換えてください。


たとえば、こんな感じに置換できます。
1025-03.jpg

※Stdフォントは想定していません(これらの修飾数字を持っていないため)。中でも「小塚明朝 Std R」は文字が消えてしまうようなので使用を避けてください(理由はよく分かりません)。

(2013.10.31追記)小塚明朝Std RおよびB、さらに小塚ゴシックBでこの現象が発生するようです。

※1桁数字は「1」「01」どちらでも大丈夫だと思います(該当グリフがない場合はテキストデータに記録されます)。

※必ず元ドキュメントは保存した上でお試しください。何かあっても責任は持てません。


では、動画をご覧ください。

実は、このJavaScriptの簡単なものを一度アップしたのですが、ある方から“市川せうぞーさんの「数字を丸数字などに変換(round_num.jsx) - 名もないテクノ手」というものが既にあります”と教えていただきました(ありがとうございました!)。拝見し、特にピンポイントで置換する場面ではすごく便利だと感じました。スクリプトの信頼性の高さは私のものと段違いですし……。

私が作ったものはリストが長いのでモタモタしています。ただ、複数の種類の数字を一気に処理できるので、使える場面はあるのではないかと思っています。機会があれば、ぜひお役立てください。また、他の使い方のヒントになれば嬉しいです。
サンプルデータはこちら《minimum20131104.zip》です(CS4以降)。

(2013.10.26追記)未実行リストが作成できないという問題があるようです。追って、何とか解決できるか試してみます。ご迷惑をおかけします。

(2013.10.31追記)全リストを一気に実行するJavaScriptファイルを修正しました。また、小塚Stdの不具合を示すInDesignファイルを追加しました。

(2013.11.5)全リストを一気に実行するJavaScriptファイルをさらに修正しました(未実行一覧のファイルをシンプルにしました)。

posted by 照山裕爾 at 04:08| Comment(0) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする

2013年10月23日

目的の異体字に置換する

DTP作業者にとっての難易度 ★★★★★(5)

(2013.10.24追記)まずは下部コメント欄をお読みください。「痩」を例に取りあげたことも、Adobe Japan 1に準拠しているフォントならCIDコードは完璧に同一だと私が思い込んでいたことも適切ではありません。「字形タグで変換する」JavaScriptがあることも大石さんに教えていただきました。それでも今回のJavaScriptが使える場面があればお使いいただければと思い、はずかしながら記事自体は削除しないことにしました。コメントをいただいた大石さん、小池さん、松尾さん、ありがとうございました。



以前、知人に“InDesign上の漢字、たとえば「痩」などを効率良く印刷標準字体に置換したい”という相談を受けました。今回は、その時に試したことをご紹介します(おそらく次回も)。

「痩」という漢字には下図のように異体字が存在します(フォントが《A-OTF ゴシックMB101 Pro R》の場合)。このうち印刷標準字体は縦棒が下まで突き抜けている[3]の文字なのだそうです(文化庁の字体表を参照ください)。

(2013.10.24追記)下記コメント欄に、小池和夫様より《「痩」は常用漢字になりましたので、もはや3の印刷標準字体を使用することはないと存じます。》とコメントをいただきました。ありがとうござました。


1021-002.jpg

「検索と置換」ダイアログの「字形」で置換する


「検索と置換」ダイアログの「テキスト」では[1]→[3]の置換が実行できません(フォントが《A-OTF ゴシックMB101 Pro R》の場合)。この原因は[2]と[3]のUnicode番号が同一(いずれも「7626」)だということにあります。

しかし「検索と置換」ダイアログの「字形」であればGID/CIDコードを設定することで[1]→[3]に置換できるのです。これが通常の置換方法です。

※GID/CIDについては「モリサワのサイト」を参照ください。


ただ、この方法は動画で説明したように手間がかかります。そこで試してみることにしたのがJavaScriptを使う方法です。

※Adobe-Japan1に準拠するCIDフォントとOpenTypeフォント間では、基本的にGID/CIDは統一されています。(前述の「モリサワのサイト」より)

※Adobe-Japan1に準拠していても《A-OTF A1明朝 Std Bold》のように[3]が含まれないフォントもあります。この場合[3]を使用したければ他フォントに変更するしかありません。

(2013.10.24追記)まだよく調べられていませんが、「Adobe Japan 1に準拠」といっても程度の差があるようです。たとえばイワタは「OpenType Pr6/Pr6N版 仕様詳細」の中で「なお、Proシリーズからのイワタフォントの仕様により、CIDレベルでのグリフ形状が一部小塚明朝等の実装とは反転している箇所がありますのでご注意ください。」などと書いています。



JavaScriptで作業の効率化を図る


(2013.10.24)大石さんより《三島梅花藻さんの「連続文字置換用スクリプト.jsx」》の存在をコメント欄で教えていただきました。ありがとうございました。今回の目的では、こちらをお使いになるほうが賢明だと思います。字体切り換え機能を使い、ルビの問題も生じないようです。


このJavaScriptは2つのファイルで構成されています(同じ階層に置く必要があります)。「jikei_chikan_xxxx.jsx」は本体ファイル、「list.jsx」は検索/置換したい文字のGID/CIDコードを書き込んだリストのファイルです。リストを編集したい場合はExcelファイルを書き換えて「list.jsx」に貼り付けてください。その後、JavaScript本体ファイルを実行するとドキュメント上の全フォントに対して順番に置換が実行されます。

※検索対象、置換対象となる文字が存在しない場合はテキストファイルに結果を記録します。テキストファイルはInDesignドキュメントと同階層に保存されます。

※InDesignドキュメントが一度も保存されていない状態でJavaScriptを実行することはできません。

※最前面ドキュメントのみが処理対象となります。

※InDesignではルビ付きの文字を置換するとルビ文字が表示されなくなる問題が存在します。この問題を回避する方法については次回ご紹介したいと思います(やや強引です)。

※Adobe-Japan1に準拠しないフォントでは意図しない置換が行われます。使用しないでください。


応用例/JIS2004字形←→JIS90字形の置換


Adobeの「JIS2004とJIS90との文字の形の対照表」からリストを作成して実行してみました。

このJavaScriptファイルの完成度は、とても胸を張れるようなものではありません。何かお気づきになられたら改良案をご提案いただけると助かります。また、有用な使用場面や活用例がありましたら、ぜひお聞かせください。

サンプルデータはこちら《minimum1023.zip》です(CS4以降)。
posted by 照山裕爾 at 04:29| Comment(10) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする