データ結合とはInDesignにUTF-16のテキストを読み込ませて定型の流し込みを行う機能です。
データ結合を使うと非常に便利に名刺や名簿などが作れるのですが問題があります。
サロゲートペア文字
サロゲートペア文字をご存知でしょうか?くわしい説明はできませんが、 UTF-16で特殊な文字を表現する文字です。
データ結合でサロゲートペア文字が消える
(普通に配置で読み込んだ場合は大丈夫)
データ結合にサロゲートペア文字を含む文字を読み込ませるとエラーもなく文字が消えます。
(画像01,02,03)
サロゲート文字の一覧はネットで検索したら出てきます。
土の吉=>[?]なんかはリストにはありませんがこの文字もサロゲートペア文字のようです。
データ結合で流し込むという場合は名刺や名簿のように人名含むことが多く、さらに何千と行数があったりして
データ結合後に、流し込んだ文字があっているかをみつけるのは困難です。
ということで流し込む前にサロゲート文字があるかどうかわかれば便利かと思いサロゲートペアチェッカーを作りました。
(正規表現はネットで見つけましたので私が作ったわけではありません。)
使い方はInDesignのスクリプトにインストールして[サロゲートペアチェッカー.jsx]をダブルクリックします。
テキストファイルを聞いて来ますので選択します。サトゲートペア文字が見つかれば[サロゲートペアエラー.txt]を出力します。
ダウンロードはこちら
surrogate.zip
InDesign56
データ結合を使うと非常に便利に名刺や名簿などが作れるのですが問題があります。
サロゲートペア文字
サロゲートペア文字をご存知でしょうか?くわしい説明はできませんが、 UTF-16で特殊な文字を表現する文字です。
データ結合でサロゲートペア文字が消える
(普通に配置で読み込んだ場合は大丈夫)
データ結合にサロゲートペア文字を含む文字を読み込ませるとエラーもなく文字が消えます。
(画像01,02,03)
サロゲート文字の一覧はネットで検索したら出てきます。
土の吉=>[?]なんかはリストにはありませんがこの文字もサロゲートペア文字のようです。
データ結合で流し込むという場合は名刺や名簿のように人名含むことが多く、さらに何千と行数があったりして
データ結合後に、流し込んだ文字があっているかをみつけるのは困難です。
ということで流し込む前にサロゲート文字があるかどうかわかれば便利かと思いサロゲートペアチェッカーを作りました。
(正規表現はネットで見つけましたので私が作ったわけではありません。)
使い方はInDesignのスクリプトにインストールして[サロゲートペアチェッカー.jsx]をダブルクリックします。
テキストファイルを聞いて来ますので選択します。サトゲートペア文字が見つかれば[サロゲートペアエラー.txt]を出力します。
ダウンロードはこちら
surrogate.zip
InDesign56
//サロゲートペアのチェック //ダイアログ表示のおまじない app.scriptPreferences.userInteractionLevel=1699311169; main(); //************************************************** //テキスト読み込み //************************************************** function main(){ filename = File.openDialog("ファイルを指定してください"); if(filename){ }{ fileObj = new File(filename); flag = fileObj.open("r"); if (flag == true){ var m = 1; var errorstr = ""; while(!fileObj.eof){ text = fileObj.readln(); var result = text.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/); if(result != null){errorstr += m+"行目:"+result+"\n"} m++; } fileObj.close(); if(errorstr == ""){ alert("サロゲートペア文字はありませんでした。"); }else{ var my_folder = filename.parent; write_file('' + my_folder + '/サロゲートペアエラー.txt', errorstr);//ファイル書き込み alert("サロゲートペア文字が見つかりました。\n読み込みファイルと同じディレクトリに[サロゲートペアエラー.txt]を\n書き出しましたので\n書き出したファイルを見てしっかりチェックしてください。"); } } } } //市川せうぞーさんより //http://d.hatena.ne.jp/seuzo/20100918/1284799291 ////////////////////////////////////////////データをファイルに書き込む 。書き込んだファイルオブジェクトを返す function write_file(my_write_file_path, my_data) { var my_file_obj = new File(my_write_file_path); my_file_obj.encoding = "UTF-8";//★この行がないとShift-JISで書き出される if(my_file_obj.open("w")) { my_file_obj.write(my_data); my_file_obj.close(); return my_file_obj; } else { myerror("ファイルが開けません\n" + my_write_file_path); } }
コメントする