異体字の置換2

[5185]異体字の置換2 投稿者:mmk07 投稿日:2004/09/17(Fri) 20:04
mmk07と申します。下の題にすでにあるので恐縮ですが、亀レスで長くなってしまうもどうかと思い、新しくたててしまいました。

異体字の置換」にあるjavascriptをInDesginCS・MacOS10.3.4、OTF環境で使用させていただきました。
やりたい事は
大鍵 「 を 小鍵 にです。
下記のチェックソースで、小鍵の番号を取り、置換させようと思ったのですが、うまくいきません。
やりかた間違えたかなと思い、「あ」を●のなかに「あ」が白ぬきで表示される異体字に置換した所できました。
ちなみに
大鍵の ユニコードは FE41
小鍵の 番号は    1633774708,5

試しに行った「あ」の変換は
あ  ユニコードは 3042
●あ 番号は    1851878516,3

やはりフォントや、文字にかなり依存し置換できない文字もあるのでしょうか。

よろしくお願い致します。


使用させて頂いたソース

//チェックソース
arr = new Array(app.selection[0].openTypeFeatures);
alert(arr);


//以下サンプルソース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("処理が終了しました!");
» 1
[5185へのレス]Re: 異体字の置換2 投稿者:oppi 投稿日:2004/09/17(Fri) 21:51
こんにちは

ちょっと実験してみました(MacOSX10.3.5,CS3.0.1J,モリサワOTF

置き換えようとしているのは
『小鍵(縦用の)』(CID:121133、ユニコード:FE41、S-JIS:EB75、全ての異体字,5(aalt))
だと思うのですが、
InDesignCSに、テキストを配置、またはキーボードから入力した時の
『「』であれば、置き換えはできないようです。
縦組であると『「』が『「』のように表示されると思います。
字形パレットでは
『「』(CID:7911、ユニコード:FE41、S-JIS:EB75)
と表示されていますが、本当は(?)
『「(大鍵)』(CID:686、ユニコード:300C、S-JIS:8175)
が横倒しになっているようです(JEdit等に文字をコピーするとよくわかります)。
そのため、違った文字(ユニコード番号)なので異体字を置き換えしようとしても
できないのではないかと思います。
手間がかかりますが、検索/置換で『「(CID:686)』を『「(CID:7911)』
に一旦置き換えしたあと、スクリプト上で『「』を"1633774708,5"を指定すると
置き換えられました。
» 2
[5185へのレス]Re: 異体字の置換2 投稿者:oppi 投稿日:2004/09/17(Fri) 21:57
ごめんなさい。正しく表示できませんでした。

>縦組であると『「』が『「』のように表示されると思います。
2個目の『「』は横倒しのもの、
>『「』(CID:7911、ユニコード:FE41、S-JIS:EB75)
も『「』は横倒しのものです。
さらに、
>手間がかかりますが、検索/置換で『「(CID:686)』を『「(CID:7911)』
2個目の『「』も横倒しのもので、
>に一旦置き換えしたあと、スクリプト上で『「』を"1633774708,5"を指定すると
も『「』は横倒しのものです。

お手数ですが読み替えてください

» 3
[5185へのレス]Re: 異体字の置換2 投稿者:おやじ 投稿日:2004/09/17(Fri) 22:08
大鍵を入力後、それをいったん字形パレットを使って異体字に変換し、
さらにそれを字形パレットから大鍵に戻した後に実行するとうまくいきませんね。
たぶん、(字形パレットを使わず)新規で大鍵を入力後に実行するとうまくいくと思います。
» 4
[5185へのレス]Re: 異体字の置換2 投稿者:おやじ 投稿日:2004/09/17(Fri) 22:43
ちなみに私の上の書き込みは縦組みで
findChar = "「";
とした場合の検証結果です。

新規入力の場合、ユニコード指定の場合だと、
findChar = "\u300C";
でうまくいきました。
そのあたりはoppiさんの検証したあたりと絡んでいるのでしょうね。
» 5
[5185へのレス]Re: 異体字の置換2 投稿者:buraiha 投稿日:2004/09/18(Sat) 08:54
Unicode<-->CIDの変換(というか定義)がフォントによって
バラバラですので、大カギ<-->小カギの変換もフォントによって
挙動が異なるのでは?

もともとUnicodeでは大カギと小カギのコードに違いはないはずですし(単なる、デザインの差)。
u+FE41はUnicode上は縦用のカギで、大小は関係ないですから。
異体字リストに現れる順位も関係あるのかな。
» 6
[5185へのレス]Re: 異体字の置換2 投稿者:うえだ 投稿日:2004/09/19(Sun) 00:09
たぶん縦組みで作業されてると思うのですが、
300C <-ー> FE41
って、組方向を変えると自動で変えられますよね。

小塚プロでみると、いわゆる小鍵はFE41の異体字として扱われてるようなので、こういう状況になるんじゃないでしょうか。
横組みのフレームで、300Cをいわゆる小鍵に普通に置換して、それを組み方向変えたりすると、よくわかると思います。

\u300Cと\uFE41ともに置き換えるスクリプトにすれば、とりあえずうまくいきませんか?

やっぱりグリフを直接指定できる方法でないと、難しいですね。

buraihaさんが言っているように、単なるデザインの差だと思うので、大鍵のコードでも小鍵のデザインのフォントを使えば解決?
» 7
[5185へのレス]Re: 異体字の置換2 投稿者:oppi 投稿日:2004/09/19(Sun) 09:46
こんにちは
前の書き込み、認識が間違っていたようです。
>そのため、違った文字(ユニコード番号)なので異体字を置き換えしようとしても
>できないのではないかと思います。
タグで書き出してみて<cotfl:aalt\,4><0x300C>となっていて確認しました

で、再度確認しました(MacOSX10.3.5,CS3.0.1J,モリサワOTF
縦組・横組のストーリーの別なく、『「』(\u300C)の文字を
横組から縦組に変換、テキスト配置、別のアプリからペースト、キーボード入力した場合は
findChar = "「"; //『「』は\u300C。ユニコード番号でもOK
replaceArray = new Array(1633774708, 4); //異体字の番号『4』
でうまくいきました。

異体字の番号『4』は、横用の小鍵なんですけど、縦組の場合は勝手に横倒しにしてくれるみたいです。大鍵と同じですね

うえださんの
>大鍵のコードでも小鍵のデザインのフォントを使えば解決?
のように、私だったらフォントセットでそれだけヒラギノにしたほうが
直しもれを考えるといいような気がします
» 8
[5185へのレス]Re: 異体字の置換2 投稿者:mmk07 投稿日:2004/09/19(Sun) 22:51
mmk07です。
みな様、返信ありがとうございます。皆様が返信してくださってるのに、こちらの返答が遅くなり恐縮です。
うえださんが御指摘の通り、縦書きの文字組版です。
運用で安心なのはoppiさんのおっしゃる通り、もれが無い様に合成フォントを使用する方法を考えたいと思います。

縦書きと横書きでユニコードが違っていたのですね。まだまだ不勉強でした。

これからも書き込みさせていただくと思いますがよろしくお願い致します。

ありがとうございました。


» 9
[5185へのレス]Re: 異体字の置換2 投稿者:川村 投稿日:2004/09/21(Tue) 15:23
Tools+に追加機能の一つとして、複数の文字列の置換及びCID(GID)による文字の置換等を準備しています。時期をみてお知らせします。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア