我得到了一些寻找丢失字体的代码。 当它是一个脚本时,它返回“已安装”或“不可用” 当它是一个应用程序时,它返回«constant **** fsIn»或«constant **** fsNA»
我想一个解决方法就是让它寻找fsIn,但我还是想了解这里发生的事情......
tell application id "com.adobe.InDesign"
tell active document
set fontStatus to (status of every font)
repeat with s in fontStatus
display dialog (s as string)
end repeat
end tell
end tell
答案 0 :(得分:2)
display dialog
属于Standard Additions,其范围不同。
尝试将常量设置为Indesign
tell application id "com.adobe.InDesign"
tell active document
set fontStatus to (status of every font)
repeat with s in fontStatus
set fontStatusString to s as string
display dialog fontStatusString
end repeat
end tell
end tell
答案 1 :(得分:0)
这是正常的。 Apple事件使用“四字符代码”,而不是人类可读的名称。 当您在脚本编辑器中运行脚本时,AppleScript已经加载了应用程序的术语(因为它需要从源代码编译AS脚本),因此可以使用它将这些代码转换回人类可读的名称。
当您将AS脚本保存为独立应用程序时,它已经编译,因此默认情况下不会加载应用程序的术语。您可以使用条件块:
repeat with aConstantRef in fontStatus
set theConstant to contents of aConstantRef
if theConstant is installed then
set constantName to "installed"
else if theConstant is not available then
set constantName to "not available"
...
else -- catch-all in case you miss any
set constantName to theConstant as string
end if
end repeat
或者您可以通过包含run script
命令来强制AppleScript在运行时加载应用程序的术语,该命令可编译针对该应用程序的“虚拟”脚本:
run script "tell application id \"com.adobe.InDesign\" to (not available)"
之后,该术语也应该可用于您的主脚本。