リンクをクリップボードにコピー
コピー完了
InDesign2021のJavascriptで、テキストフレームの文字列から「.contents」を使用して「°」を取得した時に、文字として認識してくれず、「DEGREE_SYMBOL」となってしまいます。
degree_signはスペシャルキャラクター扱いなのでenumでアクセスするって面倒な子なんですけど、単純に検索置換したいだけなら検索条件プロパティに現物を突っ込めばOKです。
たとえば…
app.findGrepPreferences.findWhat = "°";
app.changeGrepPreferences.changeTo = "°";
このようなコードで検索置換ダイアログボックスに放り込めます。あとは
app.changeGrep()
メソッドで置換すればOKです。
SpecialCharacters.DEGREE_SYMBOL ですね。
それなりのやりかたもありますが、今回はコードポイントを利用したほうがかんたんかと思います。
コードポイントは文字を選択して情報パネル上で参照できます。
>テキストフレームの文字列から「.contents」を使用して「°」を取得
について、どんな感じのコードを運用しているか、見せてもらえますか?
というのは、
1文字だけとらえた場合はアイツが返るのですが、
2文字以上の文字列の場合、下記スクショのようになる(面倒なく取得できる)など、
ちょっと運用から見直したほうがよい可能性もあるためです。
ちなみに
スクリプト内で検索置換機能を使う場合はこんなかんじで取得できます。
app.findGrepPreferences.findWhat = "\\x{00B0}";
var myFind = app.activeDocument.findGrep();
if(myFind.length){
myFind[0].showText();
}
リンクをクリップボードにコピー
コピー完了
degree_signはスペシャルキャラクター扱いなのでenumでアクセスするって面倒な子なんですけど、単純に検索置換したいだけなら検索条件プロパティに現物を突っ込めばOKです。
たとえば…
app.findGrepPreferences.findWhat = "°";
app.changeGrepPreferences.changeTo = "°";
このようなコードで検索置換ダイアログボックスに放り込めます。あとは
app.changeGrep()
メソッドで置換すればOKです。
リンクをクリップボードにコピー
コピー完了
SpecialCharacters.DEGREE_SYMBOL ですね。
それなりのやりかたもありますが、今回はコードポイントを利用したほうがかんたんかと思います。
コードポイントは文字を選択して情報パネル上で参照できます。
>テキストフレームの文字列から「.contents」を使用して「°」を取得
について、どんな感じのコードを運用しているか、見せてもらえますか?
というのは、
1文字だけとらえた場合はアイツが返るのですが、
2文字以上の文字列の場合、下記スクショのようになる(面倒なく取得できる)など、
ちょっと運用から見直したほうがよい可能性もあるためです。
ちなみに
スクリプト内で検索置換機能を使う場合はこんなかんじで取得できます。
app.findGrepPreferences.findWhat = "\\x{00B0}";
var myFind = app.activeDocument.findGrep();
if(myFind.length){
myFind[0].showText();
}
リンクをクリップボードにコピー
コピー完了
皆様ありがとうございます。
仕様上、文字列を1文字ずつ取得しなければならず、皆様のお力をお借りいたしました。
for (i = 0; 〜){
リンクをクリップボードにコピー
コピー完了
完成したスクリプトで「𠮷田くんは90°です」と書かれたテキストフレームが正しく処理できますか?
できなかったらサロゲートペアでググってみてください