2017-04-07 3 views
1

자바 스크립트에서 얻기 NSAttributedString은 글꼴 메트릭, 우리가 쓸 수 있습니다 :JXA - 자동화를위한 맥 OS 시에라 자바 스크립트에서 자동화

// helvetica12Width :: String -> Num 
function helvetica12Width(str) { 
    return $.NSAttributedString.alloc.init.initWithString(
      str 
     ) 
     .size.width; 
} 

기본에 특정 문자열에 대한 통계를 얻을 수 헬 베티 카 (12)를 아직하지 않은 무엇 다른 글꼴 및 글꼴 크기에 대한 특성을 전달하고 해당 글꼴에 대한 해당 메트릭을 얻는 것입니다.

여기 JXA 또는 AppleScript에서 작동하는 숙어/구문을 발견 한 사람이 있습니까?

(() => { 
    'use strict'; 

    ObjC.import('AppKit'); 

    return $.NSAttributedString.alloc.init.initWithStringAttributes(
      "Substantiation", { 
       'NSFontAttributeName': $.NSFont.fontWithNameSize('Helvetica', 24) 
      } 
     ) 
     .size.width 
})(); 

답변

1

아 : - :

업데이트 글꼴 크기의 변화로/이름 값은 반환 값에 영향을주지 않습니다, 명확하게 표시 오프하지만 이것은 내가 실험 한 물건의 종류 ...이 작업을 수행하는 것으로 보입니다.

(function() { 
    'use strict'; 

    ObjC.import('AppKit'); 

    // show :: a -> String 
    const show = x => JSON.stringify(x, null, 2); 

    // stringSizeInFontAtPointSize :: String -> String -> Num 
    //         -> {width:Num, height:Num} 
    function stringSizeInFontAtPointSize(str, fontName, points) { 
     return $.NSAttributedString.alloc.init.initWithStringAttributes(
      str, $({ 
       'NSFont': $.NSFont.fontWithNameSize(fontName, points) 
      }) 
     ) 
     .size; 
    } 

    // TEST ------------------------------------------------------------------- 
    return show([ 
     stringSizeInFontAtPointSize("hello World", "Geneva", 32), 
     stringSizeInFontAtPointSize("hello World", "Geneva", 64), 
     stringSizeInFontAtPointSize("hello World", "Helvetica", 64), 
    ]); 
})();