1

我正在尝试使用接受字符串的 textItem.font 设置 textItem 的字体,但我不知道要在代码中引用的确切字体名称,我正在尝试实现这样的目标

var newLayer = docRef_1.artLayers.add();
newLayer.kind=LayerKind.TEXT;
var textItemRef = newLayer.textItem;
textItemRef.contents = someCharacter;
textItemRef.size = 120;
textItemRef.font="Verdana-Bold";

但是在代码中引用的字体名称与它们在 Photoshop UI 中出现的字体名称不同,例如 Arial 是 ArialMT,arial 粗体是 Arial-BoldMT。我在哪里可以获得所有字体名称?我在 javascript 参考中找不到它。

4

2 回答 2

3

Photoshop 可用的字体在 中列出app.fonts。要将所有字体列出到 Extendscript 工具控制台,请执行:

for (i=0; i< app.fonts.length; i++) {
    $.writeln(app.fonts[i].name);
}

您可以使用该app.fonts.getByName('String')方法调用app.fonts数组String中与其名称匹配的第一个字体。

于 2013-12-14T23:00:34.450 回答
1

显示的字体名称和内部字体名称之间存在差异。在您的脚本中,您必须使用内部名称。此功能可以帮助您:

var internalFontName = getInternalFontName("Trebuchet MS Bold");    

function getInternalFontName(pFontName) {
    for (var i = 0; i < app.fonts.length; i++) {
       if (pFontName == app.fonts[i].postScriptName) {
           return pFontName; // already is an internal font name.
       }
       if (pFontName == app.fonts[i].name) {
           return app.fonts[i].postScriptName; // found an internal name.
       }
   }   
   return null;
}  
于 2015-01-12T16:30:05.077 回答