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(13) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
おはようございます。
私は三島梅花藻さんの「連続文字置換用スクリプト.jsx」(http://www4.tokai.or.jp/high-sea-fleet/)を利用して字形タグで変換しています。
書体により検証が不可欠です(特にaalt)が、ルビが飛ぶことは無いように思います(但し、親字の変更を伴う場合はその限りにあらず)。
以下、拙ブログ内関連記事の一部です。
http://d.hatena.ne.jp/works014/20111029
http://d.hatena.ne.jp/works014/20111123
Posted by 大石 十三夫 at 2013年10月23日 08:05
大石さん、ありがとうございます。
まだざっと拝見しただけですが、すごいものが既にあったのですね。恥ずかしくて自分の記事を引っ込めたくなりました。
でも、こうして恥をかいたからこそご指摘いただけたのだと思い、勉強のきっかけにします。
Posted by 照山裕爾 at 2013年10月23日 11:53
大石さんのブログを拝読しながら、今更ですが理解の浅いまま書いてしまったことを後悔しています。今回のjavascriptは他の目的で使用した方がいいように思いました。お読みいただいた皆さま、どうか無理のない範囲で、おもちゃのようなツールとしてお使いください。
Posted by 照山裕爾 at 2013年10月23日 13:31
記事内容とは関係ないのですが、「痩」は常用漢字になりましたので、もはや3の印刷標準字体を使用することはないと存じます。
Posted by 小池和夫 at 2013年10月23日 15:22
小池さん、ありがとうございます。
ろくに考えず、javascriptが動いたとはしゃいでしまいました。作業の目標や基準を考えなくては意味がありませんね。漢字、難しいです。
Posted by 照山裕爾 at 2013年10月23日 17:01
横からすみません。

>大石様
私も最初、大石様のブログを参考にし、テーブルも使わせていただき、「連続文字置換用スクリプト.jsx」を使わせて頂いていたのですが(本当にお世話になっております。ありがとうございます。ご挨拶が遅くなって、本当に申し訳ありません…)、書体によって、一部文字に問題が起きてしまい、それで照山さんに相談させて頂いた経緯がありました。
私も勉強不足なままで、上手く説明できずにお願いしてしまったので、申し訳ないことをしてしまいました。

>小池様
おお、そうなのですね!(本当に勉強不足で……)
クライアントの本のルールで、まだこちらのものを正字として扱っている案件があるのです……。
古くからのルールは、なかなか変わらないようで、K社さんの一部の案件などは、未だに拳の旧字の指定が生きています……。

勉強不足の私が頼んでしまったことによって、照山さんには本当にご迷惑をおかけしました。申し訳ありませんでした。
Posted by 松尾美恵子 at 2013年10月23日 19:57
>松尾様
私のテーブルをご利用でしたか…公開しているのは常用漢字改定前のテーブルですので、
いわゆる康煕字典体になるとは思いますが、(あちこちに書いていますように)書体によってはGSUBとかいうテーブルが異なりますし、
ProとかPr5とかでも異なってきます。
なので書体ごとに検証は必須ですが、テーブルを書き替えることで対応は可能です。
現状、私はイワタ用とその他の2つのテーブルで事足りていますが、
先日、リョービの本明朝体を利用した際には、やはり書き換えが必要でした。
難しいようでしたら、書体と字形を仰っていただけたら、差し替え部分を提示しますので、
お気軽にご相談くださいませ。
Posted by works014 at 2013年10月23日 20:56
>大石様
もったいない申し出ありがとうございます!
案件によって、千差万別になってしまっていることと、勉強不足で変換テーブルの読み解きができず、個々のカスタマイズまで至ることができず、照山さんに、私の理解の及ぶ範囲でのスクリプトを書いて貰ってしまいました……。
本当にありがとうございます。
丁寧な情報開示とわかりやすいブログには、助けられることばかりです。
今後共どうぞよろしくお願いします。
Posted by 松尾美恵子 at 2013年10月24日 11:59
CS4だとテキストを選択すると、右クリックから字形の置換へ直接送れますよ
置換したい字形も同様に送れます
数が少なくて、全文一括でやっちゃっていいならこれが一番簡単では?
Posted by 詠み人知らず at 2013年10月25日 00:45
読み人知らずさん
おぉ、これは楽になりますね。
知りませんでした。ありがとうございました。
Posted by 照山裕爾 at 2013年10月25日 23:42
こちらのスクリプトを2023で使わせて貰おうと思ったのですが動作はするのですが、変換できません。
どうすれば良いのでしょうか?
教えていただきたいです。
よろしくお願いします。
Posted by CP0 at 2024年11月20日 00:09
CP0さま
ブログをご覧いただきありがとうございます。

このスクリプトは11年も前に作成したもので、
現在の環境ではうまく動かないようですね。

少し調べて修正を加えてみました。
https://mottainaidtp.up.seesaa.net/image/minimum1241121c.zip

ただ、このスクリプトは私が右も左も分からないまま初めて書いたものであり、
他にも不備があるかもしれません。
あまり積極的におすすめできるものとは言えないと思います。

ブログ内で触れている
「三島梅花藻さんの「連続文字置換用スクリプト.jsx」》」
について検索したところ、@mori_taksi(窮狸)さんが
2021年に改良版をお書きになっているようです。
https://qiita.com/mori_taksi/items/b2d5d63a13adb1a3363c

こちらをお試しになってみたほうが良いように思います。
Posted by 照山裕爾 at 2024年11月21日 04:52
mottainaiDTPさま

忙しい中、修正くださりありがとうございます。
感謝いたします。
教えていただいたサイトの連続文字置換用スクリプトを試してみたのですが、うまく動作しませんでした。

こちらのスクリプトの方がシンプルで、わかりやすいので使いやすいです。
多くのユーザーは、こちらのスクリプトのが絶対に需要があると思います。
置換テーブルのサイトを見ましたが素人には、全くわかりません。
その点、こちらのスクリプトはCIDコードを打ち込めばフォントに関係なく変換されるので素人の私にはこちらのスクリプトが合っています。
とても助かりました。本当にありがとうございます。
Posted by CP0 at 2024年11月21日 23:38
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック