Pagesでオープン中の最前面の書類の上に載っている(Pagesの仕様でページ指定はできない)テキストアイテムから、テキスト、フォント、フォントサイズを取得し、その内容でスタイル付きテキストを作成して画面上に描画するサイズを取得し、その幅でテキストアイテムをリサイズするAppleScriptです。
macOS 12.2beta+Pages 11.2で動作確認しています。
Pages上のタブの指定までスタイル付きテキスト内で再現できていないためか、中身の幅よりも外側のテキストアイテム(枠)が小さくなってしまうケースが見られますが、もう少し枠のリサイズを余裕を持って(大きめに)指定すると回避できます。
AppleScript名:Pagesのテキストアイテム内の文字の実際の幅でリサイズ |
— – Created by: Takaaki Naganoya – Created on: 2021/12/25 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.5" use scripting additions use framework "Foundation" use framework "AppKit" property NSFont : a reference to current application’s NSFont property NSString : a reference to current application’s NSString property NSDictionary : a reference to current application’s NSDictionary property NSFontAttributeName : a reference to current application’s NSFontAttributeName tell application "Pages" tell front document set tList to every text item if tList = {} then return repeat with i in tList set j to contents of i tell j set tmpFontName to font of its object text set tmpFontSize to size of its object text set tmpText to (its object text as string) & " " set aSize to getSizeFromAttributedText(tmpText, tmpFontName, tmpFontSize) of me set aWidth to |width| of aSize set bWidth to aWidth + 10 set its width to bWidth end tell end repeat end tell end tell –指定のテキスト、フォント名、フォントサイズでAttributed Stringを組み立ててサイズを取得する on getSizeFromAttributedText(aText as string, aFont as string, aFSize as real) set aFont to NSFont’s fontWithName:aFont |size|:aFSize set aStr to NSString’s stringWithString:aText set aSize to aStr’s sizeWithAttributes:(NSDictionary’s dictionaryWithObjects:{aFont} forKeys:{NSFontAttributeName}) return aSize end getSizeFromAttributedText |
More from my site
(Visited 81 times, 1 visits today)
NSAttributedStringにtab指定つきparagraph styleを指定 – AppleScriptの穴 says:
[…] Keynote/Pagesなどのテキストアイテムで、中にタブを含むスタイル付きテキストだった場合に、スタイル付きテキストの幅を計算したら大きな誤差が生じていたため、タブを展開して近似す […]