今天一个网友求助,希望在选中 文字工具 的时候,能够通过脚本修改默认的字体。
(Ps有个特性,如果用户没有修改过某些值,那它就会使用默认预设的值,比如默认前景色是#000000,默认字体是 Adobe Hei std这样。当使用的是默认值之后,你在获取图层属性的时候,这些参数就会没有,然后会导致你的脚本报错)
我之前大多数都在搞PSD相关的内容,要修改用户工具的相关属性,还没有具体操作过,研究了一个早上…… 这种事情,只能通过 Action Manager 来完成,基本思路是先拿到当前选中工具的各种属性,然后逆向想办法去重新设置它,逆向的过程有点苦逼,1靠猜,2靠搜。
先把代码贴上来,后续我再专门写教程介绍如何写 Action Manager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var ref1 = new ActionReference(); ref1.putProperty(stringIDToTypeID('property'), stringIDToTypeID("tool")); ref1.putClass(stringIDToTypeID('application'))
var desc1 = executeActionGet(ref1);
var ref2 = new ActionReference(); ref2.putClass(stringIDToTypeID('typeCreateOrEditTool'));
var desc2 = executeActionGet(ref1).getObjectValue(stringIDToTypeID('currentToolOptions'));
var textTool = desc2.getObjectValue(stringIDToTypeID("textToolCharacterOptions"))
var style = textTool.getObjectValue(stringIDToTypeID("textStyle")) style.putString(stringIDToTypeID("fontName"), "Consolas"); style.putString(stringIDToTypeID("fontStyleName"), "Regular"); style.putString(stringIDToTypeID("fontPostScriptName"), "Consolas"); textTool.putObject(stringIDToTypeID("textStyle"), stringIDToTypeID("textStyle"), style);
desc2.putObject(stringIDToTypeID("textToolCharacterOptions"), stringIDToTypeID("textToolCharacterOptions"), textTool);
desc1.putReference(stringIDToTypeID('null'), ref2),
desc1.putObject(stringIDToTypeID('to'), stringIDToTypeID('null'), desc2), executeAction(stringIDToTypeID('set'), desc1)
|