DTP駆け込み寺

No.13920へ返信

記事投稿フォーム
補助
送信

[ 返信 ]

Re^10: InDe JSでフォント置換は?

(z-)さん、ご回答ありがとうございます。
そして、ditahackさん、わざわざこちらまでお越しいただいた上に
アドバイスまでいただきまして誠にありがとうございます。

ご指摘の点をふまえまして、下記のように改変しました。
改変した箇所のみ記載します。

/*******************************************************************************
* [概要] メインルーチン
*******************************************************************************/
function main() {
if (app.documents.length == 0) {
myError("文書が開かれていません。\n文書を開いてから実行してください。");
}
readFontReplaceFile(); // 外部ファイルから、旧フォント名と新フォント名の対応を読み込む
replaceFont(); // 検索・置換機能を使ってフォントを指定のフォントに置き換える
}

/*******************************************************************************
* [概要] 外部ファイルから、旧フォント名と新フォント名の対応を読み込む
*******************************************************************************/
function readFontReplaceFile() {
//置換前と置換後のフォント名をカンマ区切りで配列に入れる
var motoFontList = [
"A-OTF じゅん Pro\t34,A-OTF 勘亭流 Std\tUltra",
"ウインクス-S7-JTCウインS7\tBold,A-OTF 勘亭流 Std\tUltra",
"A-OTF フォーク Pro\tM,A-OTF 勘亭流 Std\tUltra"
];
for ( i=0 ; i<motoFontList.length ; i++ ) {
var myObj = motoFontList[i]; //
var tmpArray = myObj.split(","); // カンマで文字列を分割して、配列に格納
oldFontList.push(tmpArray[0]); // 置換前のフォント名を配列にプッシュ
var tmpFontObj = app.fonts.item(tmpArray[1]); // フォントオブジェクトを取得
if (tmpFontObj != null) {
newFontList.push(tmpArray[1]); // 置換後のフォント名を配列にプッシュ
newFontObj.push(tmpFontObj); // 置換後のフォントオブジェクトを配列にプッシュ
} else {
aleart("システムにインストールされていないフォントです\nフォント名 = "+tmpArray[1]);
}
}
}

以上になります。
残念ながらまだ完全ではありません。
置換前のフォントとして「システムにないフォント」を指定した場合は正しく動作しません。
置換後のフォントへは変更されず、何も起きないのです。
ちなみ、こちらのテスト環境では「ウインクス-S7-JTCウインS7\tBold」がシステムにないフォントです。

[13920] しるしる (2012/04/20 Fri 13:35)