InDesign, Illustrator 및 Photoshop에서 JavaScript의 차이점

Adobe ExtendScript Toolkit을 사용하여
JavaScript에서 InDesign, Illustrator, Photoshop에서,
· 문자
· 글꼴 이름
・스타일명
・사이즈
· 컬러 값
을 얻는 자바 스크립트를 작성해 보았습니다.


InDesign
var myDocument = app.activeDocument;
var mySelection = myDocument.selection;
for (var i = 0, mySelectionLength = mySelection.length; i < mySelectionLength; i++) { //InDesignではfor文が必要!?
    var myContents = mySelection[i].contents; //選択している文字
    var myFontName = mySelection[i].appliedFont.postscriptName; //フォント名
    var myFontStyle = mySelection[i].appliedFont.fontStyleName; //スタイル名
    var myFontSize = mySelection[i].pointSize + 'pt'; //サイズ(四捨五入処理の必要があるが割愛)
    var myColorArray = mySelection[i].fillColor.colorValue; //文字色(配列)
    var myColor = "R:" + myColorArray[0] + " G:" + myColorArray[1] + " B:" + myColorArray[2];
}
alert(myContents + "\r\n" + myFontName + "\r\n" + myFontStyle + "\r\n" + myFontSize + "\r\n" + myColor);

여러가지 검증해 보았습니다만, for문을 사용하지 않으면 취득할 수 없는 것 같습니다.
폰트명은 「appliedFont.postscriptName」(일명 취득은 「appliedFont.name)
스타일 이름은 "appliedFont.fontStyleName"
사이즈는 「pointSize」
색은 「fillColor.colorValue」로 취득할 수 있습니다만 배열이 되기 때문에 번지를 지정해 각 색에 배분합니다.
※pt등, 단위는 환경 설정으로 선택되고 있는 것을 표시하는 것이 가능.

일러스트레이터
var myDocument = app.activeDocument;
var mySelection = myDocument.selection;

var myContents = mySelection.contents; //選択している文字
var myFontName = mySelection.textFont.name; //フォント名
var myFontStyle = mySelection.textFont.style; //スタイル名
var myFontSize = mySelection.size + 'pt'; //サイズ

var myFontRedColor = mySelection.fillColor.red; //red値
var myFontGreenColor = mySelection.fillColor.green; //green値
var myFontBlueColor = mySelection.fillColor.blue; //blue値
var myColor = "R:" + myFontRedColor + " G:" + myFontGreenColor + " B:" + myFontBlueColor;

alert(myContents + "\r\n" + myFontName + "\r\n" + myFontStyle + "\r\n" + myFontSize + "\r\n" + myColor);

InDesign과 달리 for 문을 사용하지 않고 검색할 수 있습니다.
폰트명은 「textFont.name」(「textFont.family」라고 하면 폰트 패밀리 취득(일명))
스타일 이름은 "textFont.style"
사이즈는 「size」
색상은 "fillColor.red""fillColor.green""fillColor.blue"와 같이 단색으로 얻을 수 있습니다.

Photoshop
var myDocument = app.activeDocument;
var mySelection = myDocument.selection;

var myActiveLayer = activeDocument.activeLayer;//Photoshopは文字をレイヤーとして持つ

var myContents = myActiveLayer.textItem.contents;//選択している文字
var myFontName=myActiveLayer.textItem.font;//フォント名
var myFontSize=myActiveLayer.textItem.size;//サイズ

var myFontRedColor=myActiveLayer.textItem.color.rgb.red ; //red値
var myFontGreenColor=myActiveLayer.textItem.color.rgb.green ; //green値
var myFontBlueColor=myActiveLayer.textItem.color.rgb.blue ; //blue値
var myColor="R:"+myFontRedColor+" G:"+myFontGreenColor+" B:"+myFontBlueColor;

alert(myContents+"\r\n"+myFontName+"\r\n"+myFontSize+"\r\n"+myColor);

InDesign이나 Illustrator와 달리 문자 도구로 문자를 선택하여 얻을 수 없는 것 같습니다.
그래서 이동 도구로 선택한 상태에서 실행합니다.
Photoshop은 문자를 레이어로 유지하므로 레이어에 액세스해야 합니다.
Illustrator와 마찬가지로 for 문을 사용하지 않고 얻을 수 있습니다.
폰트명은 「textItem.font」
스타일명은 여러가지 조사했지만 몰랐습니다.
폰트(패밀리)명의 뒤에 하이픈 연결로 표시되므로 그로부터 취득할 수밖에 없을까 생각됩니다.
크기는 "textItem.size"
색상은 "textItem.color.rgb.red""textItem.color.rgb.green""textItem.color.rgb.blue"와 같이 단색으로 얻을 수 있습니다.
rgb.red와 같이 컬러 모드를 지정하여 각 색상을 얻는 것이 특징입니다.
예를 들어 cmyk의 마젠타를 취득하는 경우는 「color.cmyk.magenta」라고 합니다.

좋은 웹페이지 즐겨찾기