Illustratorのテキストは,メニューの 書式:組み方向 で縦組み/横組みを変更することができます。
初期設定ではこの機能にキーボードショートカットが割り当てられていませんが,編集:キーボードショートカット で新たなキーを設定すれば一瞬で呼び出せるようになります。とっても簡単ですね。
でもこれだと,縦組みと横組みでそれぞれ1つずつキー割当が必要です。ショートカットを山ほど作っている皆さんならきっと,打ちやすく覚えやすいキーが枯渇して悩んでいることでしょう。
そこで今回は,選択しているテキストの組み方向を交互に切り替えるJavaScriptを紹介します。
早速ですが,こちらがスクリプトのファイルです。ダウンロードし,スクリプトにショートカットを割り当てるソフトで自分の好きなキーに設定してください。
switchOrientation.jsx
1 ファイル 1.72 KB
使いかたは,テキストフレームを選択して(複数も可能)スクリプトを実行するだけです。
実行すると縦組みだったものは横組みになり,横組みだったものは縦組みになります。いわゆるトグルスイッチと呼ばれるものですね。
連打するだけでパタパタと変わります!
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
コードはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
/** * @fileOverview Illustratorのテキストの縦組み/横組みを切り替える * @version 1.0.1 * @author sttk3.com */ #target 'illustrator' (function() { if(app.documents.length <= 0) {return ;} var doc = app.documents[0] ; var sel = doc.selection ; var targetItems ; switch(sel.constructor.name) { case 'TextRange' : // テキスト編集中 targetItems = sel.story.textFrames ; break ; case 'Array' : // オブジェクト選択中,または何も選択していない targetItems = allPageItemOfSelection(sel) ; if(targetItems.length <= 0) {return ;} // selectionからTextFrameだけを取り出す targetItems = filterItems(function(aItem) {return /^TextFrame$/.test(aItem.constructor.name) ;}, targetItems) ; if(targetItems.length <= 0) {return ;} break ; default : return ; break ; } // 切り替え処理 for(var i = 0, len = targetItems.length ; i < len ; i++) { var targetFrame = targetItems[i] ; var orientation = targetFrame.orientation ; if(orientation == TextOrientation.HORIZONTAL) { targetFrame.orientation = TextOrientation.VERTICAL ; } else { targetFrame.orientation = TextOrientation.HORIZONTAL ; } } })() ; /** * selectionからgroupItemの中身を含めたすべてのpageItemを返す * @param {Array} sel selection * @return {Array} */ function allPageItemOfSelection(sel) { var res = [] ; for(var i = 0, len = sel.length ; i < len ; i++) { var currentItem = sel[i] ; switch(currentItem.constructor.name) { case 'GroupItem' : res.push(currentItem) ; res = res.concat(arguments.callee(currentItem.pageItems)) ; break ; default : res.push(currentItem) ; break ; } } return res ; } /** * Array.filterみたいなもの * @param {Function} func 条件式 * @param {Array} targetItems 対象のArrayかcollection。lengthとindexがあれば何でもいい * @return {Array} */ function filterItems(func, targetItems) { var res = [] ; for(var i = 0, len = targetItems.length ; i < len ; i++) { if(i in targetItems) { var val = targetItems[i] ; if(func.call(targetItems, val, i)) {res.push(val) ;} } } return res ; } |
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。