JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について
[5680]JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について |
投稿者:五月 貴 |
投稿日:2011/03/20(Sun) 01:48:04
OS10.5.8 CS4(6.0.6)を使用しています。
JavaScriptで各行(パラグラフ上ではありません)の1文字目の
フォント名を取得し,それをきっかけに任意の文字数だけ別の文字スタイルを適用しようと思っています。
各ページの最初の段落と最後の段落のキーワードをテキスト変数(文字スタイル)に割り当てるためです。
1行内でフォントがめまぐるしく変わるため,正規表現スタイルで文字スタイルの切り替えをしています。
(なお,文字スタイルで使用しているフォントは合成フォントです)
そこでスクリプトを書いていますが,
var obj = app.activeDocument;
(中略)
name = obj.pages[0].textFrames[0].lines[0].characters[0].appliedFont.name;
とすると,段落スタイルの基本になっているフォント名が戻ってきます。
また,
name = obj.pages[0].textFrames[0].lines[0].characters[0].appliedCharacterStyle.name;
とすると「[なし]」が値になります。
正規表現スタイル名の取得の方法があればベストなのですが,探しきれませんでした。
お知恵をお借りできれば幸いです。
» 1
JavaScriptで各行(パラグラフ上ではありません)の1文字目の
フォント名を取得し,それをきっかけに任意の文字数だけ別の文字スタイルを適用しようと思っています。
各ページの最初の段落と最後の段落のキーワードをテキスト変数(文字スタイル)に割り当てるためです。
1行内でフォントがめまぐるしく変わるため,正規表現スタイルで文字スタイルの切り替えをしています。
(なお,文字スタイルで使用しているフォントは合成フォントです)
そこでスクリプトを書いていますが,
var obj = app.activeDocument;
(中略)
name = obj.pages[0].textFrames[0].lines[0].characters[0].appliedFont.name;
とすると,段落スタイルの基本になっているフォント名が戻ってきます。
また,
name = obj.pages[0].textFrames[0].lines[0].characters[0].appliedCharacterStyle.name;
とすると「[なし]」が値になります。
正規表現スタイル名の取得の方法があればベストなのですが,探しきれませんでした。
お知恵をお借りできれば幸いです。
[5681]Re: JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について |
投稿者:PICTRIX |
投稿日:2011/03/21(Mon) 21:42:30
全然詳しく無いのに書いちゃって申し訳ないです。
行先頭のキャラクタの絶対位置を取得して、ストーリー?テキストフレーム先頭からの絶対位置で値を得たらどうなのでしょう。
やってもいませんからいい加減な事ですが。
プロパティって、得る道のりで得られたり得られなかったりって、得意技の様で。。。^^
関係なかったら堪忍してくだせい。
» 2
行先頭のキャラクタの絶対位置を取得して、ストーリー?テキストフレーム先頭からの絶対位置で値を得たらどうなのでしょう。
やってもいませんからいい加減な事ですが。
プロパティって、得る道のりで得られたり得られなかったりって、得意技の様で。。。^^
関係なかったら堪忍してくだせい。
[5682]Re: JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について |
投稿者:五月 貴 |
投稿日:2011/03/22(Tue) 01:37:53
PICTRIX様
コメントありがとうございます。
結局方針を変えて,
・一旦全ての段落に対し,行頭から正規表現にマッチした文字の長さだけ強制的に同じ文字スタイルを割り当てる
・その後,段落ではなく「行ごと」に冒頭の文字スタイルを調べ,各ページで最初と最後に位置する場合,別の文字スタイルを割り当てる
という処理をすることにしました。
修正が入って位置の移動があっても,再度スクリプトを実行すれば大丈夫そうです。
どうもありがとうございました。
» 3
コメントありがとうございます。
結局方針を変えて,
・一旦全ての段落に対し,行頭から正規表現にマッチした文字の長さだけ強制的に同じ文字スタイルを割り当てる
・その後,段落ではなく「行ごと」に冒頭の文字スタイルを調べ,各ページで最初と最後に位置する場合,別の文字スタイルを割り当てる
という処理をすることにしました。
修正が入って位置の移動があっても,再度スクリプトを実行すれば大丈夫そうです。
どうもありがとうございました。
[5683]Re: JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について |
投稿者:mg |
投稿日:2011/03/22(Tue) 11:03:33
別方法で解決しているようですが
正規表現スタイルで適用している文字スタイルは
nestedGrepStyle
https://gist.github.com/880616
で取得出来ます。
通常の文字スタイルと違い、複数条件にマッチした箇所は重複適用ができますので、文字スタイルは1つでない可能性があります。
» 4
正規表現スタイルで適用している文字スタイルは
nestedGrepStyle
https://gist.github.com/880616
で取得出来ます。
通常の文字スタイルと違い、複数条件にマッチした箇所は重複適用ができますので、文字スタイルは1つでない可能性があります。
[5684]Re: JavaScriptによる正規表現スタイル+合成フォントを使ったフォント名の取得について |
投稿者:五月 貴 |
投稿日:2011/03/22(Tue) 20:57:45
mg様
サンプルスクリプトご教示までいただきましてありがとうございました。
おっしゃる通り、正規表現スタイルは複数該当箇所が出てきますので注意が必要ですね(ただ、適用時の正規表現を/^[文字の組み合わせ]/と指定しているため、行頭だけに引っかかるとは思います)。
サンプルスクリプトご教示までいただきましてありがとうございました。
おっしゃる通り、正規表現スタイルは複数該当箇所が出てきますので注意が必要ですね(ただ、適用時の正規表現を/^[文字の組み合わせ]/と指定しているため、行頭だけに引っかかるとは思います)。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)