Adobe FDKO

[Font] afdko(Adobe Font Development Kit for OpenType)4.0.2アップデート

2024110803421080x1080144
https://github.com/adobe-type-tools/afdko/releases


2種類の使い方ができる
1:バイナリーも同封されているのでコマンドラインとしても利用できる
2:python3のパッケージとしてインストールしてpython3からも利用できる

python3を利用するにはX-codeまたはコマンドラインツールにインストールが必要
[Python] macOSでPython利用時の基本セットアップ(ユーザー環境)
https://quicktimer.cocolog-nifty.com/icefloe/2024/09/post-84bace.html
python3で利用するためのインんストール方法はこちら
[afdko]Adobe Font Development Kit
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-1dfa07.html

スクリプトで簡単インストールできる(ユーザーインストール)



ダウンロード - fontdump.zip




[afdko]テキストダンプ (フォントに収録されている文字情報をテキストで出力する)
https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-3bb422.html

[afdko]テキストダンプ 詳細 (フォントに収録されている文字情報をテキストで出力する)
https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-6768fa.html


[afdko]PDFダンプ詳細 (フォントに収録されている文字一覧をPDFで出力する)
https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-59c323.html

[afdko]PDFダンプ (フォントに収録されている文字一覧をPDFで出力する)
https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-5b7bf5.html


リソースリンク
AFDKO
https://github.com/adobe-type-tools/afdko/

Adobeの「CJK Type」Blog
https://ccjktype.fonts.adobe.com

フォントについてのAdobeテクニカルノート
http://www.adobe.com/devnet/font.html

「CMap Resources」のオープンソースプロジェクト
https://github.com/adobe-type-tools/cmap-resources

OpenTypeの仕様
https://learn.microsoft.com/ja-jp/typography/opentype/spec/

|

[afdko]テキストダンプ (フォントに収録されている文字情報をHTMLで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007*)
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use framework "UniformTypeIdentifiers"
013use scripting additions
014property refMe : a reference to current application
015
016#################
017##設定項目
018set strSaveExtension to ("html") as text
019
020
021#################
022##
023set strCommandText to ("/usr/bin/which python3") as text
024try
025do shell script strCommandText
026on error
027return "python3未インストール"
028end try
029#################
030##
031set appFileManager to refMe's NSFileManager's defaultManager()
032set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
033set ocidSaveDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites/FontList") isDirectory:(true)
034set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
035ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions)
036set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
037
038#################
039##バイナリーへのパス
040set appFileManager to refMe's NSFileManager's defaultManager()
041set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
042set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
043set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
044set strBinFilePath to ocidBinFilePathURL's |path| as text
045
046#################
047## ダイアログ関連
048set strName to (name of current application) as text
049if strName is "osascript" then
050  tell application "Finder" to activate
051else
052  tell current application to activate
053end if
054
055tell application "Finder"
056  set aliasDefaultLocation to (path to fonts folder from user domain) as alias
057end tell
058set listUTI to {"public.font", "public.opentype-font"} as list
059set strPromptText to "フォントファイルを選んでください" as text
060set strMes to "選んでください" as text
061set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
062
063####ファイルパス
064set strFilePath to (POSIX path of aliasFilePath) as text
065set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
066set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
067set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
068set strFontsFilePath to ocidFilePathURL's absoluteString() as text
069#
070set strExtensionName to ocidFilePathURL's pathExtension() as text
071set ocidFileName to ocidFilePathURL's lastPathComponent()
072set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
073set strBaseFileName to ocidBaseFilePathURL's lastPathComponent() as text
074#
075set ocidSaveBasePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strBaseFileName) isDirectory:(false)
076set ocidSaveFilePathURL to ocidSaveBasePathURL's URLByAppendingPathExtension:("html")
077
078
079
080#################
081#コマンド整形
082#リストのみ
083set strCommandText to ("\"" & strBinFilePath & "\" -dump -0 -y \"" & strFilePath & "\"") as text
084##
085log "\n" & strCommandText & "\n"
086#コマンド実行
087set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
088try
089  set strResponse to (do shell script strExecCommand) as text
090  
091on error
092  log "osascript でエラーしました"
093  return false
094end try
095
096#################
097#
098set ocidTmpArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
099set ocidTmpStringM to (refMe's NSMutableString's alloc()'s initWithCapacity:(0))
100#
101set ocidResponse to refMe's NSString's stringWithString:(strResponse)
102set ocidResponseArray to ocidResponse's componentsSeparatedByString:("\r")
103#
104repeat with itemArray in ocidResponseArray
105  set boolPreFixStart to (itemArray's hasPrefix:("## Top Dict")) as boolean
106  if boolPreFixStart is true then
107    set boolStart to true as boolean
108    set ocidTmpStringM to (refMe's NSMutableString's alloc()'s initWithCapacity:(0))
109  else if boolPreFixStart is false then
110    set boolPreFixEnd to (itemArray's hasPrefix:("## Private")) as boolean
111    if boolPreFixEnd is true then
112      set boolStart to false as boolean
113      (ocidTmpArrayM's addObject:(ocidTmpStringM))
114    else
115      set boolPreFixFileName to (itemArray's hasPrefix:("## Filename")) as boolean
116      if boolPreFixFileName is false then
117        set boolPreFixDict to (itemArray's hasPrefix:("## FontDict[")) as boolean
118        if boolPreFixDict is false then
119          (ocidTmpStringM's appendString:(itemArray))
120          (ocidTmpStringM's appendString:("\n"))
121        else if boolPreFixDict is true then
122          set itemArray to (itemArray's stringByReplacingOccurrencesOfString:("## ") withString:(""))
123          (ocidTmpStringM's appendString:(itemArray))
124          (ocidTmpStringM's appendString:("\n"))
125        end if
126      end if
127    end if
128  end if
129  
130end repeat
131
132
133#################
134#
135set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
136(ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind))
137# DTD付与
138set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
139(ocidDTD's setName:("html"))
140(ocidXMLDoc's setDTD:(ocidDTD))
141# XML主要部分を生成
142set ocidRootElement to doMakeRootElement()
143#ボディエレメント
144set ocidBodyElement to (refMe's NSXMLElement's elementWithName:("body"))
145#ヘッダー
146set ocidHeaderElement to (refMe's NSXMLElement's elementWithName:("header"))
147set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("header"))
148(ocidHeaderElement's addAttribute:(ocidAddNode))
149set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header"))
150(ocidHeaderElement's addAttribute:(ocidAddNode))
151(ocidBodyElement's addChild:(ocidHeaderElement))
152#アーティクル
153set ocidArticleElement to (refMe's NSXMLElement's elementWithName:("article"))
154set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("article"))
155(ocidArticleElement's addAttribute:(ocidAddNode))
156set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article"))
157(ocidArticleElement's addAttribute:(ocidAddNode))
158(ocidBodyElement's addChild:(ocidArticleElement))
159#フッター
160set ocidFooterElement to (refMe's NSXMLElement's elementWithName:("footer"))
161set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer"))
162(ocidFooterElement's addAttribute:(ocidAddNode))
163set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer"))
164(ocidFooterElement's addAttribute:(ocidAddNode))
165#リンク付与(不要なら削除可)
166set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
167set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/"))
168(ocidAElement's addAttribute:(ocidAddNode))
169set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
170(ocidAElement's addAttribute:(ocidAddNode))
171set strContents to ("AppleScriptで生成しました") as text
172(ocidAElement's setStringValue:(strContents))
173(ocidFooterElement's addChild:(ocidAElement))
174(ocidBodyElement's addChild:(ocidFooterElement))
175
176log "HTMLヘッダー部終了"
177##############################
178# TABLE コンテンツ部分生成開始
179##############################
180#【table】
181set ocidTableElement to (refMe's NSXMLElement's elementWithName:("table"))
182set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("summary") stringValue:("ADKFOリスト"))
183(ocidTableElement's addAttribute:(ocidAddNode))
184
185########################
186#【caption】
187set ocidCaptionElement to (refMe's NSXMLElement's elementWithName:("caption"))
188(ocidCaptionElement's setStringValue:(strFontsFilePath))
189(ocidTableElement's addChild:(ocidCaptionElement))
190########################
191#【colgroup】
192set ocidColgroupElement to (refMe's NSXMLElement's elementWithName:("colgroup"))
193#テーブルのタイトル部
194set listColName to {"行番号", "キー名", "値"} as list
195set listColID to {"liineNO", "KeyName", "Value"} as list
196#項目数を取得して
197set numCntCol to (count of listColName) as integer
198#タイトル部の数だけ繰り返し
199repeat with itemNo from 1 to numCntCol by 1
200  set strItemName to (item itemNo of listColName) as text
201  #【col】col生成
202  set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
203  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(strItemName))
204  (ocidAddElement's addAttribute:(ocidAddNode))
205  (ocidColgroupElement's addChild:(ocidAddElement))
206end repeat
207#テーブルエレメントに追加
208(ocidTableElement's addChild:(ocidColgroupElement))
209
210########################
211#【thead】
212set ocidTheadElement to (refMe's NSXMLElement's elementWithName:("thead"))
213#TR
214set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
215#項目数を取得して
216set numCntCol to (count of listColName) as integer
217#タイトル部の数だけ繰り返し
218repeat with itemNo from 1 to numCntCol by 1
219  set strItemName to (item itemNo of listColName) as text
220  set strColID to (item itemNo of listColID) as text
221  #【col】col生成
222  set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
223  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(strItemName))
224  (ocidThElement's addAttribute:(ocidAddNode))
225  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:(strColID))
226  (ocidThElement's addAttribute:(ocidAddNode))
227  (ocidThElement's setStringValue:(strItemName))
228  #
229  (ocidTrElement's addChild:(ocidThElement))
230end repeat
231#TRをTHEADに入れる
232(ocidTheadElement's addChild:(ocidTrElement))
233#THEADをテーブルにセット
234(ocidTableElement's addChild:(ocidTheadElement))
235
236log "THEAD部終了"
237########################
238#【tbody】
239set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody")
240
241#
242set numCntLineNO to 1 as integer
243#
244repeat with itemArray in ocidTmpArrayM
245  #
246  set ocidLineArray to (itemArray's componentsSeparatedByString:("\n"))
247  
248  #
249  repeat with itemLineArray in ocidLineArray
250    #
251    set ocidContentsArray to (itemLineArray's componentsSeparatedByString:("  "))
252    set ocidSetKey to ocidContentsArray's firstObject()
253    set ocidSetValue to ocidContentsArray's lastObject()
254    #
255    if (ocidSetKey as text) is "" then
256      set ocidSetKey to "" as text
257      set ocidSetValue to "" as text
258      set strSetCnt to (refMe's NSString's stringWithString:("  "))
259      set numCntLineNO to numCntLineNO - 1 as integer
260    else
261      set strSetCnt to numCntLineNO as text
262    end if
263    #TR
264    set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
265    set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
266    (ocidTrElement's addAttribute:(ocidAddNode))
267    #TD
268    set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
269    set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("liineNO"))
270    (ocidTdElement's addAttribute:(ocidAddNode))
271    (ocidTdElement's setStringValue:(strSetCnt))
272    (ocidTrElement's addChild:(ocidTdElement))
273    #TD
274    set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
275    set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("KeyName"))
276    (ocidTdElement's addAttribute:(ocidAddNode))
277    (ocidTdElement's setStringValue:(ocidSetKey))
278    (ocidTrElement's addChild:(ocidTdElement))
279    #TD
280    set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
281    set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Value"))
282    (ocidTdElement's addAttribute:(ocidAddNode))
283    (ocidTdElement's setStringValue:(ocidSetValue))
284    (ocidTrElement's addChild:(ocidTdElement))
285    #
286    (ocidTbodyElement's addChild:(ocidTrElement))
287    set numCntLineNO to numCntLineNO + 1 as integer
288  end repeat
289  
290end repeat
291
292
293
294############
295#TBODYをテーブルにセット
296(ocidTableElement's addChild:(ocidTbodyElement))
297##############################
298############
299#【tfoot】 TRで
300set ocidTfootElement to (refMe's NSXMLElement's elementWithName:("tfoot"))
301set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
302#colspan指定して1行でセット
303set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
304set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
305(ocidThElement's addAttribute:(ocidAddNode))
306set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:(numCntCol as text))
307(ocidThElement's addAttribute:(ocidAddNode))
308set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
309(ocidThElement's addAttribute:(ocidAddNode))
310(ocidThElement's setStringValue:("AFDKO Adobe Font Development Kit for OpenType"))
311#THをTRにセットして
312(ocidTrElement's addChild:(ocidThElement))
313#TRをTFOOTにセット
314(ocidTfootElement's addChild:(ocidTrElement))
315#TFOOTをテーブルにセット
316(ocidTableElement's addChild:(ocidTfootElement))
317
318##############################
319# ROOT
320##############################
321# 出来上がったテーブルをArticleエレメントにセット
322(ocidArticleElement's addChild:(ocidTableElement))
323#
324(ocidRootElement's addChild:(ocidBodyElement))
325#ROOTエレメントをXMLにセット
326ocidXMLDoc's setRootElement:(ocidRootElement)
327#読み取りやすい表示
328set ocidXMLdata to ocidXMLDoc's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)
329
330
331
332##############################
333# 保存
334set listDone to ocidXMLdata's writeToURL:(ocidSaveFilePathURL) options:(refMe's NSDataWritingAtomic) |error| :(reference)
335if (item 1 of listDone) is true then
336  log "正常終了"
337else if (item 1 of listDone) is false then
338  log (item 2 of listDone)'s localizedDescription() as text
339  return "保存に失敗しました"
340end if
341##############################
342# 開く
343set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
344set boolDone to appSharedWorkspace's openURL:(ocidSaveFilePathURL)
345#
346set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
347(ocidOpenURLsArray's addObject:(ocidSaveDirPathURL))
348appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
349
350
351
352return "終了"
353
354
355
356##############################
357# 基本的なHTMLの構造
358##############################
359to doMakeRootElement()
360  #
361  set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
362  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
363  ocidRootElement's addAttribute:(ocidAddNode)
364  #
365  set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
366  #
367  set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
368  ocidAddElement's setStringValue:("ファイル比較")
369  ocidHeadElement's addChild:(ocidAddElement)
370  # http-equiv
371  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
372  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
373  ocidAddElement's addAttribute:(ocidAddNode)
374  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
375  ocidAddElement's addAttribute:(ocidAddNode)
376  ocidHeadElement's addChild:(ocidAddElement)
377  #
378  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
379  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type")
380  ocidAddElement's addAttribute:(ocidAddNode)
381  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css")
382  ocidAddElement's addAttribute:(ocidAddNode)
383  ocidHeadElement's addChild:(ocidAddElement)
384  #
385  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
386  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type")
387  ocidAddElement's addAttribute:(ocidAddNode)
388  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript")
389  ocidAddElement's addAttribute:(ocidAddNode)
390  ocidHeadElement's addChild:(ocidAddElement)
391  #
392  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
393  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
394  ocidAddElement's addAttribute:(ocidAddNode)
395  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720")
396  ocidAddElement's addAttribute:(ocidAddNode)
397  ocidHeadElement's addChild:(ocidAddElement)
398  #
399  set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
400  ocidAddElement's setStringValue:("body { margin: 10px; background-color: #FFFFFF; } table { border-spacing: 0; caption-side: top; font-family: system-ui; } thead th { border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:first-of-type { border-start-start-radius: .5em } &:last-of-type { border-start-end-radius: .5em; border-inline-end-width: 1px }} thead td {border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:last-of-type {border-inline-end-width: 1px}}tbody td { word-wrap: break-word;max-width: 360px;border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:last-of-type { border-inline-end-width: 1px }} tbody p { margin-block-end: 2px; margin-block-start: 2px;} tbody th { border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; } tbody tr:nth-of-type(odd) { background: #F2F2F2; } .kind_string { font-size: 0.75em; } .date_string { font-size: 0.5em; } tfoot th { border: solid 1px #666666; padding: .5ch 1ch; &:first-of-type { border-end-start-radius: .5em } &:last-of-type { border-end-end-radius: .5em; border-inline-end-width: 1px }}")
401  ocidHeadElement's addChild:(ocidAddElement)
402  #
403  ocidRootElement's addChild:(ocidHeadElement)
404  #
405  return ocidRootElement
406end doMakeRootElement
AppleScriptで生成しました

|

[afdko]テキストダンプ (フォントに収録されている文字情報をテキストで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007
008
009コマンドオプション
010$HOME/Library/Python/3.9/bin/tx -dump -h
011[-dump options: default -1]
012-0      global data
013-1      global data + glyph data (short)
014-2      global data + glyph data (medium)
015-3      global data + glyph data (long)
016-4      glyph data (short)
017-5      glyph data (medium)
018-6      glyph data (long)
019-d      remove dotsection and convert seac charstring operators
020-n      no hints (suppress h/vstem, flex, and dotsection)
021
022Dump mode writes an ASCII text dump of an abstract font. The display of global
023font data or glyph and charstring data is controlled by the various options
024described above. All charstring data is specified in absolute character space
025units.
026
027For example, the command:
028
029    tx -6 -g exclam,a rdr_____.pfb
030
031will write, on standard output, a full dump the glyph and charstring data for
032the glyphs named "exclam" and "a" from the font file "rdr_____.pfb".
033
034Note that since dump is the default mode for tx it isn't necessary to specify
035the -dump option.
036
037*)
038----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
039use AppleScript version "2.8"
040use framework "Foundation"
041use framework "AppKit"
042use framework "UniformTypeIdentifiers"
043use scripting additions
044property refMe : a reference to current application
045
046#################
047##設定項目
048set strSaveExtension to ("txt") as text
049
050#################
051##バイナリーへのパス
052set appFileManager to refMe's NSFileManager's defaultManager()
053set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
054set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
055set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
056set strBinFilePath to ocidBinFilePathURL's |path| as text
057
058#################
059## ダイアログ関連
060set strName to (name of current application) as text
061if strName is "osascript" then
062  tell application "Finder" to activate
063else
064  tell current application to activate
065end if
066
067tell application "Finder"
068  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
069end tell
070set listUTI to {"public.font", "public.opentype-font"} as list
071set strPromptText to "フォントファイルを選んでください" as text
072set strMes to "選んでください" as text
073set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
074
075####ファイルパス
076set strFilePath to (POSIX path of aliasFilePath) as text
077set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
078set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
079set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
080set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
081set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
082#
083set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
084set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
085set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
086
087#################
088##保存先 ダイアログ関連
089set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
090set strMes to "名前を決めてください" as text
091set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
092####ファイルパス
093set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
094set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
095set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
096set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
097set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
098set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
099set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
100if strSaveFileExtension is not strSaveExtension then
101  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
102end if
103#
104set strSaveFilePath to ocidSaveFilePathURL's |path| as text
105
106
107#################
108#コマンド整形
109#リストのみ
110set strCommandText to ("\"" & strBinFilePath & "\" -dump -0 -d -n -y \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
111##
112log "\n" & strCommandText & "\n"
113#コマンド実行
114set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
115try
116  set strResponse to (do shell script strExecCommand) as text
117on error
118  log "osascript でエラーしました"
119  return false
120end try
121
122#################
123#
124set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
125set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
126#
127set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
128(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
129appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
130
131
132return "終了"
AppleScriptで生成しました

|

[afdko]テキストダンプ 詳細 (フォントに収録されている文字情報をテキストで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007*)
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use framework "UniformTypeIdentifiers"
013use scripting additions
014property refMe : a reference to current application
015
016#################
017##設定項目
018set strSaveExtension to ("txt") as text
019
020#################
021##バイナリーへのパス
022set appFileManager to refMe's NSFileManager's defaultManager()
023set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
024set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
025set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
026set strBinFilePath to ocidBinFilePathURL's |path| as text
027
028#################
029## ダイアログ関連
030set strName to (name of current application) as text
031if strName is "osascript" then
032  tell application "Finder" to activate
033else
034  tell current application to activate
035end if
036
037tell application "Finder"
038  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
039end tell
040set listUTI to {"public.font", "public.opentype-font"} as list
041set strPromptText to "フォントファイルを選んでください" as text
042set strMes to "選んでください" as text
043set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
044
045####ファイルパス
046set strFilePath to (POSIX path of aliasFilePath) as text
047set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
048set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
049set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
050set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
051set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
052#
053set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
054set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
055set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
056
057#################
058##保存先 ダイアログ関連
059set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
060set strMes to "名前を決めてください" as text
061set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
062####ファイルパス
063set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
064set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
065set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
066set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
067set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
068set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
069set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
070if strSaveFileExtension is not strSaveExtension then
071  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
072end if
073#
074set strSaveFilePath to ocidSaveFilePathURL's |path| as text
075
076#################
077#コマンド整形
078#リストのみ
079set strCommandText to ("\"" & strBinFilePath & "\" -dump -0 -y \"" & strFilePath & "\" | grep nGlyphs") as text
080##
081log "\n" & strCommandText & "\n"
082#コマンド実行
083set strExecCommand to ("/bin/zsh -c  '" & strCommandText & "' | awk '{print $2}'") as text
084try
085  set strCntGlyphs to (do shell script strExecCommand) as text
086on error
087  log "osascript でエラーしました"
088  return false
089end try
090
091#################
092#コマンド整形
093#リストのみ
094set strCommandText to ("\"" & strBinFilePath & "\" -dump -1 -d -n -y \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
095##
096log "\n" & strCommandText & "\n"
097#コマンド実行
098set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
099try
100  set strResponse to (do shell script strExecCommand) as text
101on error
102  log "osascript でエラーしました"
103  return false
104end try
105
106#################
107#
108set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
109set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
110#
111set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
112(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
113appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
114
115
116return "終了"
AppleScriptで生成しました

|

[afdko]PostScriptダンプ 詳細 (フォントに収録されている文字一覧をPostScriptで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007*)
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use framework "UniformTypeIdentifiers"
013use scripting additions
014property refMe : a reference to current application
015
016#################
017##設定項目
018set strSaveExtension to ("ps") as text
019
020#################
021##バイナリーへのパス
022set appFileManager to refMe's NSFileManager's defaultManager()
023set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
024set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
025set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
026set strBinFilePath to ocidBinFilePathURL's |path| as text
027
028#################
029## ダイアログ関連
030set strName to (name of current application) as text
031if strName is "osascript" then
032  tell application "Finder" to activate
033else
034  tell current application to activate
035end if
036
037tell application "Finder"
038  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
039end tell
040set listUTI to {"public.font", "public.opentype-font"} as list
041set strPromptText to "フォントファイルを選んでください" as text
042set strMes to "選んでください" as text
043set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
044
045####ファイルパス
046set strFilePath to (POSIX path of aliasFilePath) as text
047set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
048set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
049set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
050set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
051set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
052#
053set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
054set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
055set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
056
057#################
058##保存先 ダイアログ関連
059set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
060set strMes to "名前を決めてください" as text
061set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
062####ファイルパス
063set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
064set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
065set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
066set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
067set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
068set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
069set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
070if strSaveFileExtension is not strSaveExtension then
071  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
072end if
073#
074set strSaveFilePath to ocidSaveFilePathURL's |path| as text
075
076#################
077#コマンド整形
078#リストのみ
079set strCommandText to ("\"" & strBinFilePath & "\" -dump -0 -y \"" & strFilePath & "\" | grep nGlyphs") as text
080##
081log "\n" & strCommandText & "\n"
082#コマンド実行
083set strExecCommand to ("/bin/zsh -c  '" & strCommandText & "' | awk '{print $2}'") as text
084try
085  set strCntGlyphs to (do shell script strExecCommand) as text
086on error
087  log "osascript でエラーしました"
088  return false
089end try
090
091#################
092#コマンド整形
093#リストのみ
094set strCommandText to ("\"" & strBinFilePath & "\" -" & strSaveExtension & " -1 -g 0-" & strCntGlyphs & "  \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
095##
096log "\n" & strCommandText & "\n"
097#コマンド実行
098set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
099try
100  set strResponse to (do shell script strExecCommand) as text
101on error
102  log "osascript でエラーしました"
103  return false
104end try
105
106#################
107#
108set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
109set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
110#
111set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
112(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
113appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
114
115
116return "終了"
AppleScriptで生成しました

|

[afdko]PostScriptダンプ (フォントに収録されている文字一覧をPostScriptで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007
008コマンドオプション
009[-ps options: default -0]
010-0      show glyph palette (320 glyphs/page)
011-1      show glyph outline (1 glyph/page)
012-e      show by encoding
013-l      don't show numeric labels
014-d      enable duplex printing
015
016PostScript mode writes a PostScript program that graphically represents the
017glyphs in an abstract font.
018
019The -0 option shows 24 point filled glyphs up to maximum of 320 glyphs per
020page. The -e (encoding) option can be used in conjunction with the -1 option to
021show glyphs in an 16x16 (8-bit) encoding grid. The -e option is only suitable
022for use with legacy Type 1 fonts that contain 8-bit encodings. Also, only the
023first of multiply encoded glyphs are shown with this option.
024
025The -1 option shows a single 500 point outline glyph per page. In order to
026prevent the inadvertent printing of a large number of pages with this option
027you must specify a glyph subset. Simply specify an all glyphs range: -g 0-N, if
028you really need to print all the glyphs in the font. The printing of path
029coordinates may be suppressed with the -l (label) option when using the -1
030option.
031
032The -d option adds PostScript code to enable duplex printing. This code is
033ignored by non-duplex printers.
034
035For example, the command:
036
037    tx -ps -1 -g aacute rdr_____.pfb
038
039will write, on standard output, a 500 point outline of the glyph named "aacute"
040from the font file "rdr_____.pfb". This may be piped to "lpr" for printing on
041Unix or directed to "lpt1:" for printing from a DOS window on Windows.
042
043
044*)
045----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
046use AppleScript version "2.8"
047use framework "Foundation"
048use framework "AppKit"
049use framework "UniformTypeIdentifiers"
050use scripting additions
051property refMe : a reference to current application
052
053#################
054##設定項目
055set strSaveExtension to ("ps") as text
056
057#################
058##バイナリーへのパス
059set appFileManager to refMe's NSFileManager's defaultManager()
060set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
061set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
062set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
063set strBinFilePath to ocidBinFilePathURL's |path| as text
064
065#################
066## ダイアログ関連
067set strName to (name of current application) as text
068if strName is "osascript" then
069  tell application "Finder" to activate
070else
071  tell current application to activate
072end if
073
074tell application "Finder"
075  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
076end tell
077set listUTI to {"public.font", "public.opentype-font"} as list
078set strPromptText to "フォントファイルを選んでください" as text
079set strMes to "選んでください" as text
080set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
081
082####ファイルパス
083set strFilePath to (POSIX path of aliasFilePath) as text
084set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
085set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
086set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
087set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
088set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
089#
090set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
091set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
092set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
093
094#################
095##保存先 ダイアログ関連
096set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
097set strMes to "名前を決めてください" as text
098set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
099####ファイルパス
100set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
101set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
102set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
103set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
104set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
105set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
106set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
107if strSaveFileExtension is not strSaveExtension then
108  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
109end if
110#
111set strSaveFilePath to ocidSaveFilePathURL's |path| as text
112
113
114#################
115#コマンド整形
116#リストのみ
117set strCommandText to ("\"" & strBinFilePath & "\" -" & strSaveExtension & " -0 -y \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
118##
119log "\n" & strCommandText & "\n"
120#コマンド実行
121set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
122try
123  set strResponse to (do shell script strExecCommand) as text
124on error
125  log "osascript でエラーしました"
126  return false
127end try
128
129#################
130#
131set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
132set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
133#
134set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
135(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
136appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
137
138
139return "終了"
AppleScriptで生成しました

|

[afdko]PDFダンプ詳細 (フォントに収録されている文字一覧をPDFで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004#
005#  詳細版は100M超える巨大PDFになります
006(*
007AFDFO を先にインストール済みの必要があります
008https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
009*)
010#
011----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
012use AppleScript version "2.8"
013use framework "Foundation"
014use framework "AppKit"
015use framework "UniformTypeIdentifiers"
016use scripting additions
017property refMe : a reference to current application
018
019#################
020##設定項目
021set strSaveExtension to ("pdf") as text
022
023#################
024##バイナリーへのパス
025set appFileManager to refMe's NSFileManager's defaultManager()
026set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
027set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
028set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
029set strBinFilePath to ocidBinFilePathURL's |path| as text
030
031#################
032## ダイアログ関連
033set strName to (name of current application) as text
034if strName is "osascript" then
035  tell application "Finder" to activate
036else
037  tell current application to activate
038end if
039
040tell application "Finder"
041  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
042end tell
043set listUTI to {"public.font", "public.opentype-font"} as list
044set strPromptText to "フォントファイルを選んでください" as text
045set strMes to "選んでください" as text
046set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
047
048####ファイルパス
049set strFilePath to (POSIX path of aliasFilePath) as text
050set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
051set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
052set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
053set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
054set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
055#
056set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
057set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
058set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
059
060#################
061##保存先 ダイアログ関連
062set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
063set strMes to "名前を決めてください" as text
064set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
065####ファイルパス
066set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
067set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
068set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
069set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
070set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
071set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
072set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
073if strSaveFileExtension is not strSaveExtension then
074  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
075end if
076#
077set strSaveFilePath to ocidSaveFilePathURL's |path| as text
078
079
080#################
081#コマンド整形
082#リストのみ
083set strCommandText to ("\"" & strBinFilePath & "\" -" & strSaveExtension & "  -1 -y \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
084
085
086log "\n" & strCommandText & "\n"
087#コマンド実行
088set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
089try
090  set strResponse to (do shell script strExecCommand) as text
091on error
092  log "osascript でエラーしました"
093  return false
094end try
095
096#################
097#
098set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
099set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
100#
101set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
102(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
103appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
104
105
106return "終了"
AppleScriptで生成しました

|

[afdko]PDFダンプ (フォントに収録されている文字一覧をPDFで出力する)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004(*
005AFDFO を先にインストール済みの必要があります
006https://quicktimer.cocolog-nifty.com/icefloe/2024/11/post-56e0e1.html
007
008コマンドオプション
009 $HOME/Library/Python/3.9/bin/tx -pdf -h
010** Warning: this mode is still under development and has a number of bugs **
011
012[-pdf options: default -0]
013-0      show glyph palette (320 glyphs/page)
014-1      -0 + glyph outlines (1 glyph/page)
015
016PDF mode writes PDF data that graphically represents the glyphs in an abstract
017font.
018
019The -0 option shows a glyph palette of 24 point filled glyphs up to a maximum
020of 320 glyphs per page. The -1 option shows a single 500 point outline glyph
021per page that are linked to the corresponding glyph in the palette. Thus you
022can mouse click on a glyph in the palette to get to the outline page of the
023same glyph.
024*)
025#
026----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
027use AppleScript version "2.8"
028use framework "Foundation"
029use framework "AppKit"
030use framework "UniformTypeIdentifiers"
031use scripting additions
032property refMe : a reference to current application
033
034#################
035##設定項目
036set strSaveExtension to ("pdf") as text
037
038#################
039##バイナリーへのパス
040set appFileManager to refMe's NSFileManager's defaultManager()
041set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
042set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
043set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.9/bin/tx") isDirectory:(false)
044set strBinFilePath to ocidBinFilePathURL's |path| as text
045
046#################
047## ダイアログ関連
048set strName to (name of current application) as text
049if strName is "osascript" then
050  tell application "Finder" to activate
051else
052  tell current application to activate
053end if
054
055tell application "Finder"
056  set aliasDefaultLocation to (path to desktop folder from user domain) as alias
057end tell
058set listUTI to {"public.font", "public.opentype-font"} as list
059set strPromptText to "フォントファイルを選んでください" as text
060set strMes to "選んでください" as text
061set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias
062
063####ファイルパス
064set strFilePath to (POSIX path of aliasFilePath) as text
065set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
066set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
067set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
068set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
069set aliasContainerDirPath to (ocidContainerDirPathURL's absoluteURL()) as alias
070#
071set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
072set ocidSaveFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
073set strBaseFileName to ocidSaveFilePathURL's lastPathComponent() as text
074
075#################
076##保存先 ダイアログ関連
077set strPromptText to ("保存する名前を決めてください\n拡張子は【" & strSaveExtension & "】です") as text
078set strMes to "名前を決めてください" as text
079set aliasSaveFilePath to (choose file name default location aliasContainerDirPath default name strBaseFileName with prompt strPromptText) as «class furl»
080####ファイルパス
081set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text
082set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath)
083set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath()
084set ocidSaveFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:(false)
085set ocidSaveContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent()
086set ocidSaveBaseFilePathURL to ocidSaveFilePathURL's URLByDeletingPathExtension()
087set strSaveFileExtension to ocidSaveFilePathURL's pathExtension() as text
088if strSaveFileExtension is not strSaveExtension then
089  set ocidSaveFilePathURL to ocidSaveBaseFilePathURL's URLByAppendingPathExtension:(strSaveExtension)
090end if
091#
092set strSaveFilePath to ocidSaveFilePathURL's |path| as text
093
094
095#################
096#コマンド整形
097#リストのみ
098set strCommandText to ("\"" & strBinFilePath & "\" -" & strSaveExtension & " \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
099set strCommandText to ("\"" & strBinFilePath & "\" -" & strSaveExtension & " -y \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
100#詳細文字毎データ付き
101# set strCommandText to ("\"" & strBinFilePath & "\" -pdf -1  \"" & strFilePath & "\" \"" & strSaveFilePath & "\"") as text
102
103log "\n" & strCommandText & "\n"
104#コマンド実行
105set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
106try
107  set strResponse to (do shell script strExecCommand) as text
108on error
109  log "osascript でエラーしました"
110  return false
111end try
112
113#################
114#
115set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
116set boolDone to appSharedWorkspace's openURL:(ocidContainerDirPathURL)
117#
118set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
119(ocidOpenURLsArray's addObject:(ocidSaveFilePathURL))
120appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray)
121
122
123return "終了"
AppleScriptで生成しました

|

[Font] afdko(Adobe Font Development Kit for OpenType)4.0.2 インストール


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "UniformTypeIdentifiers"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014
015set appFileManager to refMe's NSFileManager's defaultManager()
016
017
018#############################
019#設定項目 最新版URL
020set strURL to ("https://github.com/adobe-type-tools/afdko/releases/download/4.0.2/afdko-4.0.2-py3-none-macosx_10_13_universal2.whl") as text
021
022#################
023#コマンド整形
024set strCommandText to ("/usr/bin/which python3") as text
025##
026log "\n" & strCommandText & "\n"
027#コマンド実行
028set strExecCommand to ("/bin/zsh -c  '" & strCommandText & "'") as text
029try
030  set strBinPath to (do shell script strExecCommand) as text
031  
032on error
033  
034  return "python3未インストールセットアップしてください"
035end try
036
037#############################
038#
039set ocidURLString to refMe's NSString's stringWithString:(strURL)
040set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLString)
041set ocidFileName to ocidURL's lastPathComponent()
042#ディレクトリ
043set appFileManager to refMe's NSFileManager's defaultManager()
044set ocidTempDirURL to appFileManager's temporaryDirectory()
045set ocidUUID to refMe's NSUUID's alloc()'s init()
046set ocidUUIDString to ocidUUID's UUIDString
047set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:true
048#
049set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
050ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
051set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
052#パス
053set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(ocidFileName) isDirectory:false
054
055set strFilePath to ocidSaveFilePathURL's |path| as text
056
057#############################
058#
059set ocidOption to (refMe's NSDataReadingMappedIfSafe)
060set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error| :(reference)
061if (item 2 of listResponse) = (missing value) then
062  log "正常処理"
063  set ocidReadData to (item 1 of listResponse)
064else if (item 2 of listResponse) ≠ (missing value) then
065  set strErrorNO to (item 2 of listResponse)'s code() as text
066  set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
067  refMe's NSLog("■:" & strErrorNO & strErrorMes)
068  return "エラーしました" & strErrorNO & strErrorMes
069end if
070
071#############################
072#保存
073set ocidOption to (refMe's NSDataWritingAtomic)
074set listDone to ocidReadData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error| :(reference)
075if (item 1 of listDone) is true then
076  log "正常処理"
077else if (item 2 of listDone) ≠ (missing value) then
078  set strErrorNO to (item 2 of listDone)'s code() as text
079  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
080  refMe's NSLog("■:" & strErrorNO & strErrorMes)
081  return "エラーしました" & strErrorNO & strErrorMes
082end if
083
084############コマンド実行
085#通常はこちら
086set strCommandText to ("\"" & strBinPath & "\" -m pip install --user \"" & strFilePath & "\"") as text
087
088
089#ターミナル
090tell application "Terminal"
091  #起動
092  launch
093  #前面に
094  activate
095  #新規Windowでシェルを実行
096  set objWindowID to (do script "/bin/bash\n\n")
097  delay 1
098  #WidnowのIDを取得
099  do script strCommandText in objWindowID
100  #確実にウィンドウが出来るのをまつ
101  delay 1
102  tell front window
103    tell front tab
104      #プロセスが終わるまで繰り返し
105      repeat
106        #フロントタブで実行中のプロセス
107        set listProcesses to processes as list
108        #処理終了のデフォルト値 NO
109        set boolProcessesDone to false as boolean
110        #プロセスリストの数だけ繰り返し
111        repeat with itemProcesses in listProcesses
112          #プロセス名がコマンドラインの内容に含んでいるか?
113          set boolContain to (strCommandText contains itemProcesses) as boolean
114          #含んでいる=まだ実行中
115          if boolContain is true then
116            #終了判定 NO
117            set boolProcessesDone to false as boolean
118          else
119            #プロセス名が含まれない場合は 終了判定YES
120            set boolProcessesDone to true as boolean
121          end if
122        end repeat
123        #プロセス名を巡回チェックして
124        #終了判定が YESなら
125        if boolProcessesDone is true then
126          #リピートを抜けて終了処理に
127          exit repeat
128        else if boolProcessesDone is false then
129          #終了判定がNOなら 1秒まつ
130          delay 1
131        end if
132      end repeat
133      #コマンドが終了したら
134      do script "\n\n" in objWindowID
135      #シェルをEXITして BASHを抜ける
136      do script "exit" in objWindowID
137      #コマンドが終了したら
138      do script "\n\n" in objWindowID
139      #シェルをEXITして ZSHを抜ける
140      do script "exit" in objWindowID
141      delay 1
142    end tell
143  end tell
144  close front window saving no
145  set numCntWindow to (count of every window) as integer
146  
147  repeat with itemWindowID from 1 to (numCntWindow) by 1
148    close window itemWindowID saving no
149  end repeat
150end tell
151
152
153############コマンド実行
154#再インストール時はこちら
155set strCommandText to ("\"" & strBinPath & "\"  -m pip install  --force-reinstall --user \"" & strFilePath & "\"") as text
156
157
158#ターミナル
159tell application "Terminal"
160  #起動
161  launch
162  #前面に
163  activate
164  #新規Windowでシェルを実行
165  set objWindowID to (do script "/bin/bash\n\n")
166  delay 1
167  #WidnowのIDを取得
168  do script strCommandText in objWindowID
169  #確実にウィンドウが出来るのをまつ
170  delay 1
171  tell front window
172    tell front tab
173      #プロセスが終わるまで繰り返し
174      repeat
175        #フロントタブで実行中のプロセス
176        set listProcesses to processes as list
177        #処理終了のデフォルト値 NO
178        set boolProcessesDone to false as boolean
179        #プロセスリストの数だけ繰り返し
180        repeat with itemProcesses in listProcesses
181          #プロセス名がコマンドラインの内容に含んでいるか?
182          set boolContain to (strCommandText contains itemProcesses) as boolean
183          #含んでいる=まだ実行中
184          if boolContain is true then
185            #終了判定 NO
186            set boolProcessesDone to false as boolean
187          else
188            #プロセス名が含まれない場合は 終了判定YES
189            set boolProcessesDone to true as boolean
190          end if
191        end repeat
192        #プロセス名を巡回チェックして
193        #終了判定が YESなら
194        if boolProcessesDone is true then
195          #リピートを抜けて終了処理に
196          exit repeat
197        else if boolProcessesDone is false then
198          #終了判定がNOなら 1秒まつ
199          delay 1
200        end if
201      end repeat
202      #コマンドが終了したら
203      do script "\n\n" in objWindowID
204      #シェルをEXITして BASHを抜ける
205      do script "exit" in objWindowID
206      #コマンドが終了したら
207      do script "\n\n" in objWindowID
208      #シェルをEXITして ZSHを抜ける
209      do script "exit" in objWindowID
210      delay 1
211    end tell
212  end tell
213  close front window saving no
214  set numCntWindow to (count of every window) as integer
215  
216  repeat with itemWindowID from 1 to (numCntWindow) by 1
217    close window itemWindowID saving no
218  end repeat
219end tell
220
221
AppleScriptで生成しました

|

[afdko]コマンドラインツールTX ヘルプ


サンプルコード

サンプルソース(参考)
行番号ソース
001 $HOME/Library/Python/3.9/bin/tx -u
002
003tx {[mode][mode options][shared options][files]}*
004tx [other options]
005
006[modes: default -dump]
007-dump           write text dump of font data            (-dump -h for help)
008-ps             write PostScript dump of font data      (-ps -h for help)
009-pdf            write PDF dump of font data             (-pdf -h for help)
010-dcf            write text dump of CFF font data        (-dcf -h for help)
011-mtx            write metrics dump of font data         (-mtx -h for help)
012-cff            write CFF (Compact Font Format) FontSet (-cff -h for help)
013-cff2           write CFF2 FontSet                      (-cff2 -h for help)
014-t1             write Type 1 font                       (-t1 -h for help)
015-cef            write CEF (Compact Embedded Font) font  (-cef -h for help)
016-afm            write AFM representation of font data   (-afm -h for help)
017-svg            write SVG font                          (-svg -h for help)
018-ufo            write UFO font                          (-ufo -h for help)
019-path           test path handling code                 (-path -h for help)
020
021[shared options]
022-g <list>       comma separated glyph selector: tag, cid, or glyph name.
023                May use ranges. Example: '-g Aacute,three.superior,100-123'
024
025-gx <list>      comma separated glyph exclusion selector: tag, cid, or glyph name.
026                May use ranges. All glyphs except those listed are copied.
027                The '.notdef' glyph will never be excluded.
028
029-fd <index>     only select glyphs belonging to specified font dict
030-fdx <index>    only select glyphs not belonging to specified font dict
031                font dict index list arg may be a range or comma-delimited list.
032                '-fd 1' or '-fd 3,4,7' or '-fd 3-5' are all valid.
033
034-p <percent>    select random <percent> of src glyphs [repeatable]
035-P <percent>    select random <percent> of src glyphs [unrepeatable]
036
037-U <list>       user design vector (to instantiate an MM or CFF2 font)
038-UNC            don't clamp the design vector to min/max of font's design space
039
040-i <resid>      FFIL sfnt resource or TTC index selector
041-y              select every font in FFIL or TTC
042
043-x              use exact quadratic to cubic curve conversion (TrueType)
044-X              generate combined approximate and exact conversions (TrueType)
045
046-t              dump PostScript tokens from Type 1/CID font
047-m <arg>        simulate memory allocation failure
048-N              print filename and FontName to stderr before processing
049-pg             preserve GIDs when subsetting
050-n              remove hints
051
052[files]
053*none*          input from stdin, output to stdout
054<src>           input from <src>, output to stdout
055<src> <dst>     input from <src>, output to <dst>
056-f <src>+       input from <src>+, output to stdout
057-o <dst> -f <src>+
058                input from <src>+, output to <dst>
059-a <src>+       input from <src>+, output to <filename>.<mode>
060-A <src>+       input from <src>+, output to <FontName>.<mode>
061-sr <srcroot>   read files from <srcroot> (combine with above options)
062-sd <srcdir>    read files from <srcdir> (combine with above options)
063-dd <dstdir>    write files to <dstdir> (combine with above options)
064
065[other options]
066-s <script>     read options from <script>
067-u              print usage
068-h              print general help
069-v              print component versions
070-r              dump Macintosh resource map
071-R              dump AppleSingle/Double entry descriptors
AppleScriptで生成しました

|

より以前の記事一覧

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom