PhotoShop自动识别并安装字体的脚本

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

posted @ 2022-07-06 21:01  meteoric_cry  阅读(726)  评论(0编辑  收藏  举报