PhotoShop主要是美术在使用,在遇到其它同事也需要使用psd做一些操作时,就很容易遇到字体缺失的问题。
看到有同事还要手工去查找,然后复制、安装字体库,就希望写个脚本帮他们简化下工作。代码也比较简单,读取图层 –> 识别所使用的字库 –> 查询字库是否存在(不存在就去指定字体库找字体,找到后打开它)
!(function() {
var layers = app.activeDocument.artLayers;
var textLayer = layers[layers.length - 1];
if (textLayer.kind == LayerKind.TEXT) {
var textLayerItem = textLayer.textItem;
var textLayerFont = textLayerItem.font;
/*
for (var i = 0, len = app.fonts.length; i < len; i++) {
alert(app.fonts[i].name);
break;
}
*/
var fontName = textLayerFont.split('-')[0];
var fontFileStr = fontName + ".TTF";
var fontCacheDir = "C:/Windows/Fonts";
var sourceFontFilePath = "//字体存放的共享目录地址/" + fontFileStr;
var targetFilePath = fontCacheDir + "/" + fontFileStr;
// var fontCacheFiles = new Folder(sourceFontFilePath).getFiles();
// alert(fontCacheFiles.length);
// 在系统盘里查找指定字体是否存在
if (File(targetFilePath).exists) {
alert('字体文件[' + fontName + ']已存在,无需导入');
} else {
var fontFileObj = new File(sourceFontFilePath);
if (fontFileObj.exists) {
var openResult = fontFileObj.execute();
if (openResult == false) {
alert('字体文件安装失败!' + sourceFontFilePath);
} else {
// 刷新字体 (暂时未找到安装成功返回的监听事件)
app.refreshFonts();
}
} else {
alert('未找到指定的字体文件:' + sourceFontFilePath);
}
}
} else {
alrt('最顶部的图层非文本图层');
}
})();
参考链接:
https://blog.cutterman.cn/2021/09/18/photoshop-plugin-types/
https://blog.cutterman.cn/assets/files/photoshop-cc-javascript-ref.pdf
https://blog.cutterman.cn/assets/files/JavaScript-Tools-Guide-CC.pdf