[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:703) Re: do shell script
>ちなみに、やろうとしてることは、Illustratorで現在使えるフォントのうち、RomanとJapaneseでふるいにかけて、別々のリストで持ちたいってことです。
で、こんな感じで。
set {roman_list, japanese_list} to current_fonts()
--Illustratorで使えるフォントのうち、RomanとJapaneseのフォントリストを返す。
to current_fonts()
set bs to ASCII character 128
set font_db_path to "~/Library/Application" & bs & " Support/Adobe/TypeSpt/AdobeFnt07.lst"
set font_db to do shell script "tr " & bs & bs & "r " & bs & bs & "n < " & font_db_path & " | perl -ne 'print if s/^(FontName:|WritingScript:)//;'"
if font_db is "" then
my my_error("以下のファイルが見つかりません" & return & font_db_path, true)
else
--現在Illustratorが認識しているフォント名一覧
tell application "Illustrator CS" to set all_fonts to name of text fonts
--AdobeFnt07.lstからRomanとJapaneseをふるいにかけ、かつall_fontsに存在するかどうかを確かめる
set roman_list to {} --Romanのフォントリスト
set japanese_list to {} --Japaneseのフォントリスト
repeat with i from 2 to (count paragraph of font_db) by 2
set tmp_WritingScript to paragraph i of font_db
if tmp_WritingScript is "Roman" then
set tmp_FontName to paragraph (i - 1) of font_db
if all_fonts contains tmp_FontName then set end of roman_list to tmp_FontName
else if tmp_WritingScript is "Japanese" then
set tmp_FontName to paragraph (i - 1) of font_db
if all_fonts contains tmp_FontName then set end of japanese_list to tmp_FontName
end if
end repeat
end if
return {roman_list, japanese_list}
end current_fonts
----------------------------------●エラー処理
on my_error(err_str, my_stop)
if my_stop then
set my_stop to {"中止"}
else
set my_stop to {"中止", "続行"}
end if
tell application "Illustrator CS"
set user interaction level to interact with all
activate
beep
set ANS to button returned of (display dialog err_str buttons my_stop with icon stop) --警告ダイアログ出してストップ
if ANS is "中止" then error number -128
end tell
end my_error