異体字の置換

[5051]異体字の置換 投稿者:oppi 投稿日:2004/08/25(Wed) 14:14
ようやくOTFInDesign CSで仕事をするようになったのですが,
異体字の検索置換で悩んでいます.
「逢(CID:1133,ユニコード:9022)」を,同字のJIS78字形である
「二点しんにょうの逢(CID:8266,ユニコード:9022)」に
検索置換で置換する場合,ユニコード番号が同じで「<9022>」と
入力して置換できないため,「置換形式の設定」「詳細文字形式」
異体字:JIS78字形」を設定して,置換するのはわかったのですが,
「縫」で困ってしまいました.
「縫(CID:3667,ユニコード:7E2B)」を,「二点しんにょうの縫
CID:14024,ユニコード:7E2B)」に置き換えたいのですが,
「二点しんにょうの縫」は「全ての異体字(aalt)」なので,やりようが
ありません.
こういった場合,タグで書き出して「<pSG:14024><pSG:>」で置き換えて,
再配置しか手がないんでしょうか?
MacOSX 10.3.5,InDesign CS3.0.1J,モリサワOTF使用です.
よろしくお願いします.
» 1
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/08/25(Wed) 14:44
失礼しました.
タグ「<pSG:14024><001a><pSG:>」でした.
» 2
[5051へのレス]Re: 異体字の置換 投稿者:YUJI 投稿日:2004/08/27(Fri) 17:00
タグで書き出したものを置換して再配置するしか、ないかもしれません。
» 3
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/08/30(Mon) 17:01
ありがとうございました.
今回は,タグでの置換で済ませました.
本文なので楽でしたが,キャプション等でフレームを分けていると
大変なことになりそうです.
次バージョンで「CID番号」で検索できるようになるのを期待します.
» 4
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/08/30(Mon) 17:21
すみません.
CID→GIDです
» 5
[5051へのレス]Re: 異体字の置換 投稿者:あああ 投稿日:2004/08/31(Tue) 13:35
最初に一つ手作業で「縫(CID:3667,ユニコード:7E2B)」を,「二点しんにょうの縫(CID:14024,ユニコード:7E2B)」に置き換えて、それを選択して文字スタイル新規作成。
置換の文字スタイルで、それを選べばできませんか?
全ての字形で試したわけではありませんが「二点しんにょうの縫」はできましたよ。MacOS9.2.2,インデザイン2.0.2,小塚&ヒラギノで確認。

でも文字スタイルのどこに記録されているのかはよく分かりません。

私もCID番号で入力できれば便利だと思います。
あとユニコード番号でも入力したいですが、方法はあるのでしょうか?
置換はできますが、いちいちパレットを開いて番号を入れて検索置換は面倒ですよね。
キャレットのある位置で、Altキー+数字のコンビネーションなんかで入力できないのかなぁ
» 6
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/03(Fri) 00:49
あああさん、ありがとうございます。
自宅のMacOS10.3.5、InDesign 2.0.2Jで確認しました。
InDesign 2.0.2Jではできるんですね。

しかし、CSではだめでした。残念です
» 7
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/03(Fri) 18:15
こんな感じでどうでしょうか(CS用のJavaScriptです)。
//以下サンプルソース

findChar = "\u7E2B"; //検索文字を指定(サンプルではユニコードで指定)
replaceArray = new Array(1953259873, 1); //カンマのあとの数字を変更することで異字体を指定(デフォルトは「0」)

app.findPreferences = null;
app.changePreferences = null;

var myTargets = app.activeDocument.search(findChar);
for (i = 0; i < myTargets.length; i++) {
myTargets[i].contents = findChar;
myTargets[i].openTypeFeatures = replaceArray;
}
» 8
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/10(Fri) 11:39
遅くなりました.
おやじさま,スクリプトありがとうございます.

が,うまく動かすことができません(MacOS10.3.5 CS3.0.1).
スクリプトをIEからコピペして,テキストエディットに貼り付けて
拡張子にjsをつけて,CSのScriptsフォルダに入れると
スクリプトパレットには現れるところまではできていますが…

ドキュメントに「縫」の文字の入ったフレームやグリッドを作り
スクリプトをクリックしても何も起こらないのです.
お手数ですが,ご教示願えないでしょうか.
よろしくお願いいたします
» 9
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/10(Fri) 13:56
>スクリプトをクリック

スクリプトを「ダブルクリック」です。いちおう念のため。

で、スクリプトの実行方法に問題がないとすれば、
たとえば「縫」に適用されている書体が「小塚明朝Std」などになっていませんか?
「縫」の場合、OTFフォントのPro書体でないと、異字体に置換されません(字体パレットで確認して下さい)。
スクリプトの実行前に任意のOTFフォントのPro書体に変更するか、
Mac環境の場合、スクリプト実行後にcommand+optionを押しながらフォントをOTFフォントのPro書体に変更すると、
「二点しんにょうの縫」に変更されているはずです。
» 10
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/10(Fri) 22:05
おやじさま お手数をおかけします。

「ダブルクリック」はOKでした。
フォントもモリサワOTF等Pro書体で試しております。

またスクリプトの保存も、漢字コードをユニコードやS-JIS、
改行コードもCRやCR+LFやLF等で、
組み合わせをかえてみたりして試してみました。

さらに、
findChar = "\u7E2B";
の「¥」部分がSafariで見るとバックスラッシュになってたり
するので、そちらでも試してみました。

それらを自宅と会社のCS3.0.1(両方ともMacOSX10.3.5)で
試したのですが、やはりうまくいかないのです。
» 11
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/10(Fri) 22:41
当方はWin2000環境なので、Macの方はよく分かりませんけれども、
sjisで保存した上記のコードが普通に実行されています。

ちなみに、ラストの

myTargets[i].openTypeFeatures = replaceArray;
}

の末尾の「}」の前の行に

alert("処理が終了しました!");

という行を挿入して実行すると、上記メッセージが出ますでしょうか?(でなければそもそもスクリプトがうまく終了していないかも)
あと、

findChar = "\u7E2B";

の部分は

findChar = "縫";

でもOKです。
» 12
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/10(Fri) 22:53
前レスの

> myTargets[i].openTypeFeatures = replaceArray;
> }
> の末尾の「}」の前の行に
> alert("処理が終了しました!");
> という行を挿入して実行すると、……

は間違いで、

myTargets[i].openTypeFeatures = replaceArray;
}
の「後ろ(つまり一番最後)」に
alert("処理が終了しました!");
という行を「追加」して実行すると、……

が正しいです。
ごめんなさい(最近まちがえてばかり)。
» 13
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/13(Mon) 10:05
おやじささま,ありがとうございます.

alert("処理が終了しました!");

を追加して実行すると,メッセージは表示されます.
が,やはりダメです.
Win版とMac版でスクリプトの挙動が違うんでしょうか?
う~ん,Mac版でスクリプトに詳しい方いらっしゃらないでしょうか?
» 14
[5051へのレス]Re: 異体字の置換 投稿者:やまだ 投稿日:2004/09/13(Mon) 11:28
私はマックのCSを持ってないので検証できませんが、順番に見ていくしかないでしょう。エラー処理が全く書かれてないので。

自分の業務を助ける便利な道具は、お金を出して買うか、勉強して自分で作るか、どちらかになると思うので、

>う~ん,Mac版でスクリプトに詳しい方いらっしゃらないでしょうか?

簡単にこう書いてしまうのもどうかと思います。
とりあえず異体字じゃなくて、「あ」を「い」に置き換えられるか試してみてください。

CSのJSはやっていないので、想像ですが、
openTypeFeatures=Array(1953259873, 1)って、Ver2のタグでいう
cAlternateGlyphと同じようなもの?
だと、かなりフォントに依存しますよね?つまり1番目にどんな異体字が入っているか、フォントしだい。入ってないかもしれない。
» 15
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/13(Mon) 13:37
やまださん。どうもです。

>CSのJSはやっていないので、想像ですが、openTypeFeatures=Array(1953259873, 1)って、Ver2のタグでいうcAlternateGlyphと同じようなもの?

そうですね。(実行結果の規則性から)それに該当すると推測しています。

で、どこかおかしいとすれば、「1953259873」という数字(何かの定数でしょうけれど)かなと思うのですが、
Macではどうセットされるのでしょうね。
ちなみに私は下に記したコードで「1953259873, 1」という配列を得ました。
後ろの「1」を変更していくことで(これが上の「Ver2のタグでいうcAlternateGlyphと同じようなもの」)望みの結果になったので、それでよしとしたのですが
前の値「1953259873」が何を指定しているのかは調べがつきませんでした。
(コードの)その他の部分は単に指定した文字列をドキュメントすべてで検索し配列に入れているだけなので、特に問題ないと思うのですがどうでしょうか。

//以下、チェック用スクリプト(とその手順)
//"縫"を入力
//字形パレットから異体字に変換(二点しんにょうの"縫"に)
//異体字に変更した文字をテキストツールで選択
//本スクリプトを実行(→私の環境[Win2000,CS_J3.01(8月)]では「1953259873, 1」と表示される)

arr = new Array(app.selection[0].openTypeFeatures);
alert(arr);
» 16
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/13(Mon) 14:04
やまださま ご指摘ありがとうございます.
>Win版とMac版でスクリプトの挙動が違うんでしょうか?
>う~ん,Mac版でスクリプトに詳しい方いらっしゃらないでしょうか?
「詳しい方」は上の行にかけたつもりだったんですが.
言葉が足りなかったようです.

おやじさんにスクリプトを提示していただいたので,それを試してみたい
と考えているところです.試しているフォントやスクリプトの実行に関しては,
おやじさんに追加の返信をいただいて,同環境でできるようになっていると思います.
しかし,ここで問題なのがOSの違いなので,その疑問をなんとかしたかっただけ
なのですが.WEBでみかけるCS用のJSスクリプトもWin環境の方が多く,
「Macでも動くんじゃないかな」といった但し書きがついているものがほとんどです.

いままで前提として書き忘れていましたが,CSについてくるサンプル(JSの)の
スクリプトはこの環境でも動いています.また,簡単な置き換えのスクリプト
(あ-い,全角-半角等)もWEBで見たものを参考に作って動かしています.
ただ,異体字に関しては勉強不足のためスクリプトでどう扱ったらいいのかが,
皆目見当がついていない状況です.

>自分の業務を助ける便利な道具は、お金を出して買うか、勉強して自分で作るか、
私も基本的にそのスタンスです.ただ,必要なものだとわかっていれば,
皆に教えたくなりませんか? おやじさんがスクリプトを書いて下さったように.
そもそもこの掲示板も同じ考えではないでしょうか?

おやじさま,ありがとうございます.
チェック用スクリプトを試したところ,小塚・ヒラギノ・モリサワの各OTF-PRO書体で
1633774708, 1
と返されました.この数字をスクリプトのものと替えて試したところ,
置き換えが正しくできました.
後ほど他の異体字でも試してみます.
» 17
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/14(Tue) 09:32
おやじさん,ありがとうございました.
「邉
» 18
[5051へのレス]Re: 異体字の置換 投稿者:oppi 投稿日:2004/09/14(Tue) 09:34
うまく書き込みできませんでした.

おやじさん,ありがとうございました.
「邉(CID:6930,ユニコード:9089)」のaaltや「辻翔逢辻迪迪頤濯」
などのJIS78字形でも試してみました.うまくいくようです.
ごめんどうおかけしました.
でも「1633774708」ってなんなのでしょうね?

//以下サンプルソースMac用(byおやじさん)
findChar = "\u7E2B"; //検索文字を指定(サンプルではユニコードで指定)
replaceArray = new Array(1633774708, 1); //カンマのあとの数字を変更することで異字体を指定(デフォルトは「0」)
app.findPreferences = null;
app.changePreferences = null;
var myTargets = app.activeDocument.search(findChar);
for (i = 0; i < myTargets.length; i++) {
myTargets[i].contents = findChar;
myTargets[i].openTypeFeatures = replaceArray;
}
alert("処理が終了しました!");
» 19
[5051へのレス]Re: 異体字の置換 投稿者:おやじ 投稿日:2004/09/14(Tue) 13:31
>でも「1633774708」ってなんなのでしょうね?

リファレンスで検索をかけましたが、結局分かりませんでした。
あと、やまださんが

>つまり1番目にどんな異体字が入っているか、フォントしだい。入ってないかもしれない。

と書かれているように、フォントの実装状態によって結果が変わる可能性がありますので、
その点は注意する必要があると思います。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア