2013-05-21 4 views
0

일련의 inDesign 문서에 사용 된 글꼴에 대한 자세한 정보를 나열해야합니다. 필요한 정보는 메뉴 항목 메뉴> 글꼴 찾기 ... (설명 된대로 here)을 통해 기본적으로 액세스 할 수 있지만 모든 문서의 각 글꼴을 통과하고 정보를 적어 두는 것은 실현 가능하지 않습니다.InDesign : 글꼴 및 확장 글꼴 정보를 나열하는 ExtendScript

내가 document.fonts 아래 Font 객체의 많은 정보를 찾을 수 있습니다 내 질문에 액세스하거나 아래 패널에있는 확장 속성 생성하는 방법입니다 : 주어진 글꼴

  • 에 대한

    • 문자 수를 글꼴

    1

    편집을 발생 페이지 : 목 e document.fonts 배열에도 누락 된 글꼴이 포함되어 있지 않은 것으로 보입니다.

  • +0

    이 스크립트를 사용해보세요. 설명은 독일어로되어 있습니다. 문서에 사용 된 모든 글꼴을 내 보냅니다. http://indesign.hilfdirselbst.ch/ausgabe-export/liste-mit-schriften-im-dokument-ausgeben.html – fabianmoronzirfas

    +0

    스크립트는 글꼴의 문자 수와 페이지를 내보내지 만 그렇지 않으면 유용한 스크립트를 내 보냅니다. 고맙습니다! – wna

    답변

    2

    음, 글자 수 계산을위한 무차별 전략이 있습니다. 문서의 문자 textStyleRange를 반복하고 적용된 글꼴을 확인합니다. 편집 : textStyleRanges를 사용하도록 업데이트되었습니다. 모든 캐릭터를 지나는 것보다 훨씬 빠릅니다.

    var document = app.open(new File(Folder.desktop.fsName + "/test/test.indd")); 
    try { 
        var fontMultiset = countCharsInFonts(document); 
    
        // For each font, display its character count. 
        var fonts = document.fonts.everyItem().getElements(); 
        for (var i = 0; i < fonts.length; i++) { 
         var fontName = fonts[i].fullName; 
         $.writeln(fontName + ": " + fontMultiset[fontName]); 
        } 
    } 
    finally { 
        document.close(); 
    } 
    
    function countCharsInFonts(document) { 
        // Create the font multiset. 
        var fontMultiset = { 
         add: function add(fontName, number) { 
          if (this.hasOwnProperty(fontName)) { 
           this[fontName] += number; 
          } 
          else { 
           this[fontName] = number; 
          } 
         }, 
        }; 
    
        // For every textStyleRange in the document, add its applied font to the multiset. 
        var stories = document.stories.everyItem().getElements(); 
        for (var i = 0; i < stories.length; i++) { 
         var story = stories[i]; 
         var textStyleRanges = story.textStyleRanges.everyItem().getElements(); 
         for (var j = 0; j < textStyleRanges.length; j++) { 
          fontMultiset.add(textStyleRanges[j].appliedFont.fullName, textStyleRanges[j].length); 
         } 
        } 
    
        // For any fonts that aren't applied in the document, set the character count to 0. 
        var fonts = document.fonts.everyItem().getElements(); 
        for (var i = 0; i < fonts.length; i++) { 
         var fontName = fonts[i].fullName; 
         if (!fontMultiset.hasOwnProperty(fontName)) { 
          fontMultiset[fontName] = 0; 
         } 
        } 
    
        return fontMultiset; 
    } 
    
    +0

    Splendid! 'document.fonts' 배열은 쓸데없는 것 같고,'fontName'은 누락 된 글꼴에 접근 할 수 없지만'name' 속성을 사용하여'textStyleRanges'를 반복하여 세트를 만드는 것은 문자 계산에 대한 트릭입니다. 페이지 번호에 대해서는'textStyleRanges'가'Page' 객체에 어떻게 연결되어 있는지 모르겠습니다. 그것에 대한 아이디어가 있습니까? – wna

    +0

    'textStyleRanges' 또는'stories'가 여러 페이지에 걸쳐있을 수 있기 때문에 페이지에 직접 연결될 수 있는지 알 수 없습니다. 아마도 각 페이지마다'textFrames'을 얻을 수 있고 각 textFrame 안에'textStyleRanges'를 얻을 수 있습니다. – dln385

    +0

    우리는 솔루션에 충분히 근접해 있으며 다음 주에 코드로 돌아올 것입니다. 나는 정말로 당신의 도움 dln385에 감사드립니다! – wna