【随笔】如何修改文字工具的默认字体

【随笔】如何修改文字工具的默认字体

今天一个网友求助,希望在选中 文字工具 的时候,能够通过脚本修改默认的字体。

修改默认字体

(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)

评论