フォント検索置換について

[8889]フォント検索置換について 投稿者:むらた 投稿日:2006/04/26(Wed) 11:52
はじめまして。
WinXpでIndesignCS2.4.02を使用していますが、
Quarkから流用することがあり、
OCFから同名のOTFに置き換えることが
多々あるのですが、
置き換えるフォントは大体決まっていますので
自動でできないものでしょうか?
Indesgin自動化のホームページで
フォントを変えるスクリプトがあったのですが、
これを応用して自分でつくるしかやはり
方法はないでしょうか?
何か良い方法があればご教授下さい。
よろしくお願いします。
» 1
[8889へのレス]Re: フォント検索置換について 投稿者:流星 投稿日:2006/04/27(Thu) 00:00
>Indesgin自動化のホームページで
>フォントを変えるスクリプトがあったのですが、
>これを応用して自分でつくるしかやはり
>方法はないでしょうか?
私も、それ以外の方法は思いつきません…

>WinXpでIndesignCS2.4.02を使用していますが
CS2とのことで、参考になるか分かりませんが、
Script(VBS)ですが、書いてみましたので、
使って見て下さい。CS1で動作確認しました。
CS2だと、
Set MyInDesign = CreateObject("InDesign.Application.CS")

Set MyInDesign = CreateObject("InDesign.Application.CS2")
に直せば動くと思いますが、
当方CS2の環境がありませんので、
不具合については、ご容赦ください。


'+------------------------------------------------------------+
'| 使用フォント置換スクリプト For InDesign CS1(3.01) VBScript |
'|------------------------------------------------------------|
'|------------------------------------------------------------|
'| 2006/04/26作成/制作者: 流星 (InDesign Script For Windows) |
'| URL: http://f42.aaacafe.ne.jp/~idscript/ |
'+------------------------------------------------------------+
Call FontReplace("小塚ゴシック Pro", "M", "小塚明朝 Pro", "L")
Call FontReplace("小塚ゴシック Pro", "H", "小塚明朝 Pro", "B")
'----------------------------------------------------------
Function FontReplace(FindFontName , FindFontTypeFace , ReplaceFontName , ReplaceFontTypeFace )
Set MyInDesign = CreateObject("InDesign.Application.CS")
With MyInDesign
.FindPreferences = Nothing
.ChangePreferences = Nothing
.FindPreferences.AppliedFont = FindFontName
.FindPreferences.FontStyle = FindFontTypeFace
.ChangePreferences.AppliedFont = ReplaceFontName
.ChangePreferences.FontStyle = ReplaceFontTypeFace
Set Dummy = .Search("", False, False, False, False, "")
End With
Set Dummy = Nothing
Set MyInDesign = Nothing
End Function
'----------------------------------------------------------
» 2
[8889へのレス]Re: フォント検索置換について 投稿者:お~まち 投稿日:2006/04/27(Thu) 16:24
流星さんへ
> Set MyInDesign = CreateObject("InDesign.Application.CS2")

Set MyInDesign = CreateObject("InDesign.Application.CS2_J")
です。統一されてないんですよ。
» 3
[8889へのレス]Re: フォント検索置換について 投稿者:流星 投稿日:2006/04/27(Thu) 17:55
お~まち殿>
お久しぶりです。フォローありがとうございます。

>Set MyInDesign = CreateObject("InDesign.Application.CS2_J")
>です。統一されてないんですよ。
3.0.1環境でCS_Jが通らない環境が存在するので、
あえて付けようかどうか迷ったんですが。
動かないんですね。 めもめもφ(^_^;
» 4
[8889へのレス]Re: フォント検索置換について 投稿者:むらた 投稿日:2006/04/27(Thu) 20:43
流星さん、お~まちさんへ
ありがとうございます。

上記の様にしたら置換は問題なくできました。
しかし、MacのOCFをwinのIndesignで開いて
認識できないフォントをそのフォントのOTF
置き換えようとした所できませんでした。

例えばIndesignのパレットでは
[ロダンPlus-EB]の[Regular]様に
表示されているのを"FOT-ロダン Pro", "EB"
では置き換えできませんでした。

[ロダンPlus-EB]の[Regular]部分を
色々変えてみましたが、やはり
認識できないフォントは不可能なのでしょうか?
もし何か解決策などがあれば度々すいませんが、ご教授ください。
» 5
[8889へのレス]Re: フォント検索置換について 投稿者:流星 投稿日:2006/04/27(Thu) 23:26
CSでは動作確認しました。

今回もCS2で動作確認出来ませんが、
使用文字を総当たりにして、
自動化を試みてみました。

現在、単体のテキストフレーム
のみ対象になっています。
表や表中のインラインは
検証していませんし、
動作もしないです。
データの作り方で、スクリプトの
書き方が変わるので、
このサンプルを元に
最適な方法を検討してください。

#ソース汚くてすみません… orz

'+------------------------------------------------------------+
'| 使用フォント置換スクリプト For InDesign CS1(3.01) VBScript |
'| 総当たり版 |
'+------------------------------------------------------------+
Call FontReplace("ロダンPlus-EB", "Regular","FOT-ロダン Pro","EB")

Function FontReplace(FindFontName, FindFontTypeFace, ReplaceFontName, ReplaceFontTypeFace)
Set MyInDesign = CreateObject("InDesign.Application.CS2_J")
With MyInDesign.ActiveDocument.AllPageItems
For APIC = 1 To .Count
Select Case TypeName(.Item(APIC))
Case "TextFrame"
With .Item(APIC).Characters
For APICCC = 1 To .Count
If .Item(APICCC).AppliedFont = FindFontName & Chr(9) & FindFontTypeFace Then
.Item(APICCC).AppliedFont = MyInDesign.Fonts.Item(ReplaceFontName & Chr(9) & ReplaceFontTypeFace)
End If
Next
End With
Case Else
MsgBox TypeName(.Item(D))
End Select
Next
End With
» 6
[8889へのレス]Re: フォント検索置換について 投稿者:むらた 投稿日:2006/04/28(Fri) 09:47
ありがとうございます。
試してみます。
また何かわかりましたら報告いたしますので
よろしくお願いします。
» 7
[8889へのレス]Re: フォント検索置換について 投稿者:むらた 投稿日:2006/04/28(Fri) 18:21
流星さんありがとうございます。

WinCS2環境でも問題なく置換はできたのですが、
普通のチラシなどのデータを置換しようとしたら
エラーになりました。
OCF外字などにしかない番の文字データをOTF
置換できないのは問題ないのですが、
“エラー番号:30475”
“エラー文字列:要求されたコレクションの
メンバーは存在しません”
となります。
試したところ文字列だけだと、問題ないですが、
他のオブジェクトがあるとそこで
止まってしまってるみたいなのですが、
わかりますでしょうか?
» 8
[8889へのレス]Re: フォント検索置換について 投稿者:流星 投稿日:2006/04/28(Fri) 22:29
当方では、どのようなデータの作り方を
しているかが把握できませんし、
当方はqxdファイルを作成する環境も
有りません。

本来なら、実際にコンバートしたデータを対象に
何度も実験を繰り返し、正しく動くスクリプトを
作りますが、前述のスクリプトはフォントを外して
動作確認させていただきました。

まず、InDesignデータ上にあるオブジェクトで
下記のオブジェクトが存在する場合には、
正しい動作をしません。前述しましたが…

・グループ化されたオブジェクト
・インライングラフィック
・表組
・表組中のインライングラフィック

スクリプトの修正には、InDesignのCDに
ScriptingのReferenceがPDFで収録されて
いますので、そちらを参照ください。
BBSで簡単に手取り足取りという訳には
いかないと思いますので。
’---------------------------------
Select Case TypeName(.Item(APIC))
Case "TextFrame"
テキストフレームの場合の処理
Case "Group"
グループ化されたオブジェクトの処理
Case Else
それ以外の場合

End Select
’---------------------------------

# qxdのFileFormatが簡単で、Fontの記述を
Binaryで書き換えられるなら、qxdをBinaryで
書き換えてから、コンバートした方が良いような
気がするんですが、詳しい方サポート下さい。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア