Illustratorには、InDesignのようなプリフライト機能がなくて、InDesignユーザーから見ると、かなり不便!!(元々クリエイティブな作業をやるツールなので、まー。理解はできる)。
Illustratorには、3種類のtextFrameがあります。
- TextType.AREATEXT
- TextType.PATHTEXT
- TextType.POINTTEXT
※3番のPOINTTEXTには溢れること自体がなくて、文字量によって大きくなるだけ。
「1」と「2」のtextFrameの溢れ確認方法:
a = 全体の文字数 ー 段落数(改行記号数)+1(最終行は改行記号なし)
b = 各行の文字数の総和(改行記号/溢れた文字が計算されない)
a === bの場合は、溢れなし。
var r = checkOverFlowTfs(app.activeDocument); alert("溢れ箇所: " + r); function checkOverFlowTfs(doc) { var tfs = doc.textFrames; var L = tfs.length; var count = 0; while (L--) { if (tfs[L].kind === TextType.POINTTEXT) { $.writeln(tfs[L].contents + " はチェック必要ない"); continue } if (isOverFlow(tfs[L])) { count++; } } return count; //*********************************** function isOverFlow(pageItem) { //溢れた部分含めての合計文字数 var total = pageItem.characters.length - pageItem.paragraphs.length + 1; var Lines = pageItem.lines; var L = Lines.length; var sum = 0;//各行の文字数(溢れた文字が数えられない!) while (L--) { sum += Lines[L].length; } return total === sum ? false : true; } }