AppleScript NSFont

[font book]フォントライブラリを作成する

ローカルドメイン(system liblary application)はURL形式のパス
ユーザードメイン(ホームディレクトリ)はエイリアスデータbookmarkのNSdataの登録となり
処理が異なる。

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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

###フォントブックを終了
tell application id "com.apple.FontBook"
  quit
end tell

##############################
###ライブラリ名を指定 ダイアログ
set appFileManager to refMe's NSFileManager's defaultManager()
###FontCollectionsのフォルダパス
set ocidUserLibraryPathArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserLibraryPath to ocidUserLibraryPathArray's firstObject()
set ocidFontCollectionsURL to ocidUserLibraryPath's URLByAppendingPathComponent:("FontCollections") isDirectory:(true)
set aliasFontCollectionsURL to ocidFontCollectionsURL's absoluteURL() as alias
##############################
#####ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
##############################
###ダイアログ
set strDefaultName to "名称未設定.library" as text
set strExtension to "library"
set strPromptText to "フォントライブラリの名前を決めてください" as text
set strMesText to "フォントライブラリの名前を決めてください" as text
set aliasFilePath to (choose file name strMesText default location aliasFontCollectionsURL default name strDefaultName with prompt strPromptText) as «class furl»
##############################
###ライブラリファイルのパス
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
set ocidFileName to ocidFilePathURL's lastPathComponent()
set ocidBaseFileName to ocidFileName's stringByDeletingPathExtension()
set ocidExtensionName to ocidFilePathURL's pathExtension()
###空の文字列 if文用
set ocidEmptyString to refMe's NSString's alloc()'s init()
if ocidExtensionName = ocidEmptyString then
  ###ダイアログで拡張子取っちゃった場合対策
  set ocidFilePathURL to ocidFilePathURL's URLByAppendingPathExtension:(strExtension)
end if

##############################
### フォルダ選択 
###(選択したフォルダの最下層までフォントを取得する)
set ocidUserDesktopPathArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserDesktopPath to ocidUserDesktopPathArray's firstObject()
###ダイアログ
set aliasFontCollectionsURL to ocidUserDesktopPath's absoluteURL() as alias
set strMes to "フォルダを選んでください"
set strPrompt to "フォントをライブラリに登録するフォルダ(フォントが入っているフォルダ)を選んでください"
set aliasFolderPath to (choose folder strMes with prompt strPrompt default location aliasFontCollectionsURL with invisibles and showing package contents without multiple selections allowed)
##############################
###読み込むフォントのパス
set strFontsDirPath to POSIX path of aliasFolderPath as text
set ocidFontsDirPathStr to refMe's NSString's stringWithString:(strFontsDirPath)
set ocidFontsDirPath to ocidFontsDirPathStr's stringByStandardizingPath()
set ocidFontsDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFontsDirPath) isDirectory:true)
##############################
##### ユーザー ドメイン専用
if strFontsDirPath starts with "/Users" then
  log "処理開始"
  ###########################################
  ###ユーザーフォント用
  ###########################################
  ##############################
  ###enumeratorAtURLL格納するリスト
  set ocidEmuFileURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  ###フォントファイルのURLのみを格納するリスト
  set ocidFontFilePathURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  
  ##############################
  ###ディレクトリのコンテツを収集
  ###収集する付随プロパティ
  set ocidPropertiesForKeys to {(refMe's NSURLContentTypeKey), (refMe's NSURLIsRegularFileKey)}
  ####ディレクトリのコンテツを収集
  set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidFontsDirPathURL) includingPropertiesForKeys:ocidPropertiesForKeys options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:(reference))
  ###戻り値用のリストに格納
ocidEmuFileURLArray's addObjectsFromArray:(ocidEmuDict's allObjects)
  
  ##############################
  ###『ファイル』だけ取り出したリストにする
  ####enumeratorAtURLのかずだけ繰り返し
  repeat with itemEmuFileURL in ocidEmuFileURLArray
    ####URLをforKeyで取り出し
    set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
    ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
    set boolIsRegularFileKey to item 2 of listResult
    log boolIsRegularFileKey as text
    ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
    if boolIsRegularFileKey is (refMe's NSNumber's numberWithBool:true) then
      set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
      set ocidContentType to item 2 of listResult
      set strUTI to (ocidContentType's identifier) as text
      if strUTI contains "font" then
####リストにする
(ocidFontFilePathURLArray's addObject:(itemEmuFileURL))
      end if
    end if
  end repeat
  
  ##############################
  ###URL格納用(absoluteString)
  set ocidFontPathArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  repeat with itemAliasFontPath in ocidFontFilePathURLArray
(ocidFontPathArray's addObject:(itemAliasFontPath))
  end repeat
  
  ##############################
  ###PLISTのデータになるDict
  set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
  ###bookmarks
  set ocidBookmarks to refMe's NSMutableDictionary's alloc()'s init()
  ##############################
  ###containerURLs
  set ocidContainerURLs to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  repeat with itemFontPathArray in ocidFontPathArray
    ###このifは不要かな?
    set ocidFontStrigsPath to (itemFontPathArray's |path|())
    if (ocidFontStrigsPath as text) starts with "/Users/" then
      ###containerURLsはパスとエイリアスデータ
      set strRelativePath to "/" as text
      set ocidRelativePathStr to (refMe's NSString's stringWithString:(strRelativePath))
      set ocidRelativePath to ocidRelativePathStr's stringByStandardizingPath()
      set ocidRelativeToURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidRelativePath) isDirectory:true)
      set ocidBookMarkPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFontStrigsPath) isDirectory:false)
      ##############################
      ###bookmark エイリアスデータ生成
      set ocidBookMarkDataArray to (ocidBookMarkPathURL's bookmarkDataWithOptions:(11) includingResourceValuesForKeys:({missing value}) relativeToURL:(missing value) |error|:(reference))
      set ocidBookMarkData to item 1 of ocidBookMarkDataArray
      ###bookmarkデータを追加
(ocidBookmarks's setObject:(ocidBookMarkData) forKey:(ocidFontStrigsPath))
    else
      set strAbsoluteStringPath to (itemFontPathArray's absoluteString())
(ocidContainerURLs's addObject:(strAbsoluteStringPath))
    end if
  end repeat
ocidPlistDict's setObject:(ocidBookmarks) forKey:("bookmarks")
ocidPlistDict's setObject:(ocidContainerURLs) forKey:("containerURLs")
  ###disabled
  set ocidFalse to (refMe's NSNumber's numberWithBool:false)
ocidPlistDict's setValue:(ocidFalse) forKey:("disabled")
  ###name
ocidPlistDict's setValue:(ocidBaseFileName) forKey:("name")
  ###reference
  set ocidReference to refMe's NSNumber's numberWithInteger:(1)
ocidPlistDict's setValue:(ocidReference) forKey:("reference")
  ###date
  set ocidDate to (refMe's NSDate's |date|())
  set ocidFormatter to refMe's NSDateFormatter's alloc()'s init()
ocidFormatter's setDateFormat:("yyyy-MM-dd'T'HH:mm:ss'Z'")
ocidFormatter's setTimeZone:(refMe's NSTimeZone's timeZoneWithAbbreviation:("UTC"))
  set ocidSetDate to ocidFormatter's stringFromDate:(ocidDate)
  -->string形式でセットするのでsetValueで
ocidPlistDict's setValue:(ocidSetDate) forKey:("date")
  ##############################
  ###urlAddedDates
  set ocidUrlAddedDates to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
  ###フォントのURLを追加(absoluteString形式)
  repeat with itemFontPathArray in ocidFontPathArray
    set strPath to (itemFontPathArray's |path|())
(ocidUrlAddedDates's setValue:(ocidSetDate) forKey:(strPath))
  end repeat
ocidPlistDict's setObject:(ocidUrlAddedDates) forKey:("urlAddedDates")
  ###version
ocidFormatter's setDateFormat:("yyyyMMdd")
  set ocidversion to ocidFormatter's stringFromDate:(ocidDate)
ocidPlistDict's setValue:(ocidversion) forKey:("version")
  ######################
  ###XML形式
  set ocidXmlplist to refMe's NSPropertyListXMLFormat_v1_0
  ####書き込み用にXMLに変換
  set ocidPlistEditData to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidXmlplist) options:0 |error|:(missing value)
  ####書き込み
ocidPlistEditData's writeToURL:(ocidFilePathURL) atomically:true
else
  ###########################################
  ###ローカルフォント用
  ###########################################
  ###enumeratorAtURLL格納するリスト
  set ocidEmuFileURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  ###フォントファイルのURLのみを格納するリスト
  set ocidFontFilePathURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  
  ##############################
  #####ディレクトリのコンテツを収集
  ###収集する付随プロパティ
  set ocidPropertiesForKeys to {(refMe's NSURLContentTypeKey), (refMe's NSURLIsRegularFileKey)}
  ####ディレクトリのコンテツを収集
  set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidFontsDirPathURL) includingPropertiesForKeys:ocidPropertiesForKeys options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:(reference))
  ###戻り値用のリストに格納
ocidEmuFileURLArray's addObjectsFromArray:(ocidEmuDict's allObjects)
  
  ##############################
  #####『ファイル』だけ取り出したリストにする
  ####enumeratorAtURLのかずだけ繰り返し
  repeat with itemEmuFileURL in ocidEmuFileURLArray
    
    ####URLをforKeyで取り出し
    set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
    ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
    set boolIsRegularFileKey to item 2 of listResult
    log boolIsRegularFileKey as text
    ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
    if boolIsRegularFileKey is (refMe's NSNumber's numberWithBool:true) then
      set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
      set ocidContentType to item 2 of listResult
      set strUTI to (ocidContentType's identifier) as text
      if strUTI contains "font" then
####リストにする
(ocidFontFilePathURLArray's addObject:(itemEmuFileURL))
      end if
    end if
  end repeat
  
  ##############################
  #####URL格納用(absoluteString)
  set ocidFontPathArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  repeat with itemAliasFontPath in ocidFontFilePathURLArray
(ocidFontPathArray's addObject:(itemAliasFontPath))
  end repeat
  
  ##############################
  ##### PLIST処理
  ###PLISTのデータになるDict
  set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
  ###bookmarks
  set ocidBookmarks to refMe's NSMutableDictionary's alloc()'s init()
ocidPlistDict's setObject:(ocidBookmarks) forKey:("bookmarks")
  #####################
  ###containerURLs
  set ocidContainerURLs to refMe's NSMutableArray's alloc()'s initWithCapacity:0
  ###フォントのURLを追加(absoluteString形式)
  repeat with itemFontPathArray in ocidFontPathArray
    set strAbsoluteStringPath to (itemFontPathArray's absoluteString())
(ocidContainerURLs's addObject:(strAbsoluteStringPath))
  end repeat
ocidPlistDict's setObject:(ocidContainerURLs) forKey:("containerURLs")
  ###disabled
  set ocidFalse to (refMe's NSNumber's numberWithBool:false)
ocidPlistDict's setValue:(ocidFalse) forKey:("disabled")
  ###name
ocidPlistDict's setValue:(ocidBaseFileName) forKey:("name")
  ###reference
  set ocidReference to refMe's NSNumber's numberWithInteger:(1)
ocidPlistDict's setValue:(ocidReference) forKey:("reference")
  ###date
  set ocidDate to (refMe's NSDate's |date|())
  set ocidFormatter to refMe's NSDateFormatter's alloc()'s init()
ocidFormatter's setDateFormat:("yyyy-MM-dd'T'HH:mm:ss'Z'")
ocidFormatter's setTimeZone:(refMe's NSTimeZone's timeZoneWithAbbreviation:("UTC"))
  set ocidSetDate to ocidFormatter's stringFromDate:(ocidDate)
  -->string形式でセットするのでsetValueで
ocidPlistDict's setValue:(ocidSetDate) forKey:("date")
  #####################
  ###urlAddedDates
  set ocidUrlAddedDates to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
  ###フォントのURLを追加(absoluteString形式)
  repeat with itemFontPathArray in ocidFontPathArray
    set strPath to (itemFontPathArray's |path|())
(ocidUrlAddedDates's setValue:(ocidSetDate) forKey:(strPath))
  end repeat
ocidPlistDict's setObject:(ocidUrlAddedDates) forKey:("urlAddedDates")
  ###version
ocidFormatter's setDateFormat:("yyyyMMdd")
  set ocidversion to ocidFormatter's stringFromDate:(ocidDate)
ocidPlistDict's setValue:(ocidversion) forKey:("version")
  
  ######################
  ###XML形式
  set ocidXmlplist to refMe's NSPropertyListXMLFormat_v1_0
  ####書き込み用にXMLに変換
  set ocidPlistEditData to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidXmlplist) options:0 |error|:(missing value)
  ####書き込み
ocidPlistEditData's writeToURL:(ocidFilePathURL) atomically:true
  
end if


###フォントブックを起動
tell application id "com.apple.FontBook"
  launch
end tell



|

[FontBook]ライブラリにフォントを登録する(途中 現在不具合あり)

bookmark(ファイルエイリアス)の内容NSDATAに相違があり
どうしてもうまくいかない

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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application


###フォントブックを終了
tell application id "com.apple.FontBook"
  quit
end tell

##############################
###ライブラリ名を指定 ダイアログ
set appFileManager to refMe's NSFileManager's defaultManager()
###FontCollectionsのフォルダパス
set ocidUserLibraryPathArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserLibraryPath to ocidUserLibraryPathArray's firstObject()
set ocidFontCollectionsURL to ocidUserLibraryPath's URLByAppendingPathComponent:("FontCollections") isDirectory:(true)
set aliasFontCollectionsURL to ocidFontCollectionsURL's absoluteURL() as alias
##############################
#####ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
set strDefaultName to "名称未設定.library" as text
set strExtension to "library"
set strPromptText to "フォントライブラリの名前を決めてください" as text
set strMesText to "フォントライブラリの名前を決めてください" as text
set aliasFilePath to (choose file name strMesText default location aliasFontCollectionsURL default name strDefaultName with prompt strPromptText) as «class furl»
######
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
set ocidFileName to ocidFilePathURL's lastPathComponent()
set ocidBaseFileName to ocidFileName's stringByDeletingPathExtension()
set ocidExtensionName to ocidFilePathURL's pathExtension()
###空の文字列 if文用
set ocidEmptyString to refMe's NSString's alloc()'s init()
if ocidExtensionName = ocidEmptyString then
  ###ダイアログで拡張子取っちゃった場合対策
  set ocidFilePathURL to ocidFilePathURL's URLByAppendingPathExtension:(strExtension)
end if
##############################
### フォルダ選択 
###(選択したフォルダの最下層までフォントを取得する)
set ocidUserDesktopPathArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserDesktopPath to ocidUserDesktopPathArray's firstObject()
###ダイアログ
set aliasFontCollectionsURL to ocidUserDesktopPath's absoluteURL() as alias
set aliasFolderPath to (choose folder "フォントをライブラリに登録するフォルだ(フォントが入っているフォルダ)を選んでください" with prompt "フォントファイルを選んでください" default location aliasFontCollectionsURL with invisibles and showing package contents without multiple selections allowed)

set strFontsDirPath to POSIX path of aliasFolderPath as text
set ocidFontsDirPathStr to refMe's NSString's stringWithString:(strFontsDirPath)
set ocidFontsDirPath to ocidFontsDirPathStr's stringByStandardizingPath()
set ocidFontsDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFontsDirPath) isDirectory:true)

###enumeratorAtURLL格納するリスト
set ocidEmuFileURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
###フォントファイルのURLのみを格納するリスト
set ocidFontFilePathURLArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0

##############################################
##ディレクトリのコンテツを収集
##############################################
###収集する付随プロパティ
set ocidPropertiesForKeys to {(refMe's NSURLContentTypeKey), (refMe's NSURLIsRegularFileKey)}
####ディレクトリのコンテツを収集
set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidFontsDirPathURL) includingPropertiesForKeys:ocidPropertiesForKeys options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) errorHandler:(reference))
###戻り値用のリストに格納
ocidEmuFileURLArray's addObjectsFromArray:(ocidEmuDict's allObjects)

##############################################
##『ファイル』だけ取り出したリストにする
##############################################

####enumeratorAtURLのかずだけ繰り返し
repeat with itemEmuFileURL in ocidEmuFileURLArray
  
  ####URLをforKeyで取り出し
  set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
  ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
  set boolIsRegularFileKey to item 2 of listResult
  log boolIsRegularFileKey as text
  ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
  if boolIsRegularFileKey is (refMe's NSNumber's numberWithBool:true) then
    set listResult to (itemEmuFileURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
    set ocidContentType to item 2 of listResult
    set strUTI to (ocidContentType's identifier) as text
    if strUTI contains "font" then
      ####リストにする
(ocidFontFilePathURLArray's addObject:(itemEmuFileURL))
    end if
  end if
end repeat

###URL格納用(absoluteString)
set ocidFontPathArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
repeat with itemAliasFontPath in ocidFontFilePathURLArray
(ocidFontPathArray's addObject:(itemAliasFontPath))
end repeat


######################
###PLISTのデータになるDict
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0



###bookmarks
set ocidBookmarks to refMe's NSMutableDictionary's alloc()'s init()
###containerURLs
set ocidContainerURLs to refMe's NSMutableArray's alloc()'s initWithCapacity:0


repeat with itemFontPathArray in ocidFontPathArray
  set ocidFontStrigsPath to (itemFontPathArray's |path|())
  if (ocidFontStrigsPath as text) starts with "/Users/" then
    
    
    set strRelativePath to "/" as text
    set ocidRelativePathStr to (refMe's NSString's stringWithString:(strRelativePath))
    set ocidRelativePath to ocidRelativePathStr's stringByStandardizingPath()
    set ocidRelativeToURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidRelativePath) isDirectory:true)
    
    
    set ocidBookMarkPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFontStrigsPath) isDirectory:false)
    
    set ocidOption to (refMe's NSURLBookmarkCreationWithSecurityScope)
    
    set ocidBookMarkDataArray to (ocidBookMarkPathURL's bookmarkDataWithOptions:(ocidOption) includingResourceValuesForKeys:({missing value}) relativeToURL:(missing value) |error|:(reference))
    
    set ocidBookMarkData to item 1 of ocidBookMarkDataArray
(ocidBookmarks's setObject:(ocidBookMarkData) forKey:(ocidFontStrigsPath))
  else
    set strAbsoluteStringPath to (itemFontPathArray's absoluteString())
(ocidContainerURLs's addObject:(strAbsoluteStringPath))
  end if
end repeat


ocidPlistDict's setObject:(ocidBookmarks) forKey:("bookmarks")
ocidPlistDict's setObject:(ocidContainerURLs) forKey:("containerURLs")


###disabled
set ocidFalse to (refMe's NSNumber's numberWithBool:false)
ocidPlistDict's setValue:(ocidFalse) forKey:("disabled")
###name
ocidPlistDict's setValue:(ocidBaseFileName) forKey:("name")
###reference
set ocidReference to refMe's NSNumber's numberWithInteger:(1)
ocidPlistDict's setValue:(ocidReference) forKey:("reference")
###date
set ocidDate to (refMe's NSDate's |date|())
set ocidFormatter to refMe's NSDateFormatter's alloc()'s init()
ocidFormatter's setDateFormat:("yyyy-MM-dd'T'HH:mm:ss'Z'")
ocidFormatter's setTimeZone:(refMe's NSTimeZone's timeZoneWithAbbreviation:("UTC"))
set ocidSetDate to ocidFormatter's stringFromDate:(ocidDate)
-->string形式でセットするのでsetValueで
ocidPlistDict's setValue:(ocidSetDate) forKey:("date")
###urlAddedDates
set ocidUrlAddedDates to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
###フォントのURLを追加(absoluteString形式)
repeat with itemFontPathArray in ocidFontPathArray
  set strPath to (itemFontPathArray's |path|())
(ocidUrlAddedDates's setValue:(ocidSetDate) forKey:(strPath))
end repeat

ocidPlistDict's setObject:(ocidUrlAddedDates) forKey:("urlAddedDates")
###version
ocidFormatter's setDateFormat:("yyyyMMdd")
set ocidversion to ocidFormatter's stringFromDate:(ocidDate)
ocidPlistDict's setValue:(ocidversion) forKey:("version")

######################
###XML形式
set ocidXmlplist to refMe's NSPropertyListXMLFormat_v1_0
####書き込み用にXMLに変換
set ocidPlistEditData to refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidXmlplist) options:0 |error|:(missing value)
####書き込み
ocidPlistEditData's writeToURL:(ocidFilePathURL) atomically:true


###フォントブックを起動
tell application id "com.apple.FontBook"
  launch
end tell





|

フォント名収集とフォント選択(たぶん日本語可なフォントのリスト)


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "Appkit"
use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()


###################################
##### フォント収集
###################################
###フォント初期化
set appFontManager to refMe's NSFontManager
set appSharedMaanager to appFontManager's sharedFontManager()
###利用可能なフォントリスト
set ocidFontList to appSharedMaanager's availableFonts()
###格納用のレコード
set ocidFontNameeDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0

###フォントの数だけ繰り返し
repeat with itemFontList in ocidFontList
  ###PS名でフォントオブジェクトにして
  set ocidTempFont to (refMe's NSFont's fontWithName:(itemFontList) matrix:(missing value))
  ###収録文字数を調べ
  set intCharCnt to ocidTempFont's numberOfGlyphs as integer
  ###5000文字以上なら日本語もあるだろって事で
  if intCharCnt > 5000 then
    set strDisplayName to ocidTempFont's displayName as text
    ###レコードに追加
(ocidFontNameeDict's setObject:(itemFontList) forKey:(strDisplayName))
  end if
end repeat


###################################
##### ダイアログ
###################################
###ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
    activate
  end tell
else
  tell current application
    activate
  end tell
end if

###格納用の可変リスト
set ocidFontNameeArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
###ディレクトリのallValuesで値のみのリスト
ocidFontNameeArray's addObjectsFromArray:(ocidFontNameeDict's allKeys())
###並び替え
set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:"self" ascending:(true) selector:"localizedStandardCompare:")
(ocidFontNameeArray's sortUsingDescriptors:{ocidSortDescriptor})
####デフォルト選択値
set strDefailtsFont to "Osaka−等幅" as text
set intDefaultsFont to (ocidFontNameeArray's indexOfObject:(strDefailtsFont)) + 1 as integer
set listFontList to ocidFontNameeArray as list
###ダイアログ
try
  set listResponse to (choose from list listFontList with title "選んでください" with prompt "フォントを選んでください\r複数可" default items (item intDefaultsFont of listFontList) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed) as list
on error
  log "エラーしました"
return "エラーしました"
end try
if (item 1 of listResponse) is false then
return "キャンセルしました"
end if
###################################
##### 選択した数だけ繰り返し
###################################
repeat with itemFontDisplayName in listResponse
  ###PS名
  log (ocidFontNameeDict's valueForKey:itemFontDisplayName) as text
  
end repeat



|

画像にテキストを描画する


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "Appkit"
use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()

###################################
#####パス処理
###################################
set strFilePath to "~/Desktop/image.png" as text
set ocidFilePathstr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathstr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false

###################################
#####画像生成
###################################
###サイズ ピクセル 横縦
set numPixelsWide to 720 as integer
set numPixelsHigh to 360 as integer
###背景色指定
set ocidSetColor to refMe's NSColor's colorWithDeviceRed:1 green:1 blue:1 alpha:1
##透過指定
set ocidSetColor to refMe's NSColor's clearColor
##フォーマット
set ocidFormat to refMe's NSBitmapFormatAlphaFirst
###カラースペース
set ocidColorSpace to refMe's NSCalibratedRGBColorSpace

####生成本処理
set ocidBitmapImageRep to (refMe's NSBitmapImageRep's alloc()'s initWithBitmapDataPlanes:(missing value) pixelsWide:(numPixelsWide) pixelsHigh:(numPixelsHigh) bitsPerSample:8 samplesPerPixel:4 hasAlpha:true isPlanar:false colorSpaceName:(ocidColorSpace) bitmapFormat:(ocidFormat) bytesPerRow:0 bitsPerPixel:32)

###################################
#####テキスト生成
###################################
###設定用のレコード
set ocidTextAttr to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0

#################################
##描画する文字列
set ocidText to refMe's NSString's stringWithString:("美しい日本語")

#################################
###色指定
set ocidTextColor to refMe's NSColor's blackColor
###RGBA 透過指定
set ocidTextColor to refMe's NSColor's colorWithSRGBRed:0 green:0 blue:0 alpha:0.8
ocidTextAttr's setObject:(ocidTextColor) forKey:(refMe's NSForegroundColorAttributeName)

#################################
##システムフォント
set ocidFont to refMe's NSFont's systemFontOfSize:36
###PS名指定でもいける?
set ocidFont to refMe's NSFont's fontWithName:"Osaka-Mono" |size|:36
ocidTextAttr's setObject:(ocidFont) forKey:(refMe's NSFontAttributeName)

#################################
##行間
set ocidStyle to refMe's NSParagraphStyle's defaultParagraphStyle
ocidTextAttr's setObject:(ocidStyle) forKey:(refMe's NSParagraphStyleAttributeName)

#################################
##カーニング
set ocidKern to refMe's NSTextScalingStandard
set ocidKern to refMe's NSTextScalingiOS
set ocidKern to -1.8 as number
ocidTextAttr's setObject:(ocidKern) forKey:(refMe's NSKernAttributeName)

#################################
##ドロップシャドウ
set ocidShadow to refMe's NSShadow's alloc()'s init()
###テキスト色と同色にする場合
set ocidShadowColor to ocidTextColor's colorWithAlphaComponent:0.8
###色指定する場合
set ocidShadowColor to refMe's NSColor's colorWithDeviceRed:0 green:0 blue:0 alpha:0.5
ocidShadow's setShadowColor:(ocidShadowColor)
ocidShadow's setShadowOffset:(refMe's NSMakeSize(1, -1))
ocidShadow's setShadowBlurRadius:4
ocidTextAttr's setObject:(ocidShadow) forKey:(refMe's NSShadowAttributeName)


####描画されるテキストボックスのサイズ
set ocidTextSize to ocidText's sizeWithAttributes:(ocidTextAttr)
set ocidTextWide to ocidTextSize's width as integer
set ocidTextHigh to ocidTextSize's height as integer

###################################
#####描画位置
###################################
###余白
set numPadding to 10 as integer
(*
###真ん中
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide) / 2, (numPixelsHigh - ocidTextHigh) / 2)
###下中央
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide) / 2, numPadding)
###左下
set ocidTextOrigin to refMe's NSMakePoint(numPadding, numPadding)
###右下
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide - numPadding), numPadding)
###上中央
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide) / 2, (numPixelsHigh - ocidTextHigh))
###上右
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide - numPadding), (numPixelsHigh - ocidTextHigh))
###上左
set ocidTextOrigin to refMe's NSMakePoint(numPadding, (numPixelsHigh - ocidTextHigh))
*)
###右下
set ocidTextOrigin to refMe's NSMakePoint((numPixelsWide - ocidTextWide - numPadding), numPadding)

###################################
##### テキスト描画
###################################
###初期化
refMe's NSGraphicsContext's saveGraphicsState()
###生成された画像でNSGraphicsContext初期化
(refMe's NSGraphicsContext's setCurrentContext:(refMe's NSGraphicsContext's graphicsContextWithBitmapImageRep:(ocidBitmapImageRep)))
###塗り色
ocidSetColor's |set|()
ocidText's drawAtPoint:(ocidTextOrigin) withAttributes:(ocidTextAttr)
####画像作成終了
refMe's NSGraphicsContext's restoreGraphicsState()

###################################
#####保存オプション PNG
###################################
set ocidFileType to refMe's NSBitmapImageFileTypePNG
set ocidProperties to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
###インターレース
ocidProperties's setObject:false forKey:(refMe's NSImageInterlaced)
###ガンマ
ocidProperties's setObject:(1 / 2.2 as number) forKey:(refMe's NSImageGamma)
####NSImageColorSyncProfileData カラースペース
set ocidColorSpace to refMe's NSColorSpace's displayP3ColorSpace()
set ocidColorSpaceData to ocidColorSpace's colorSyncProfile()
###プロファイルを付ける
ocidProperties's setObject:(ocidColorSpaceData) forKey:(refMe's NSImageColorSyncProfileData)
####出力用データに変換
set ocidNSInlineData to (ocidBitmapImageRep's representationUsingType:(ocidFileType) |properties|:(ocidProperties))
###################################
#####保存
###################################
set boolDone to (ocidNSInlineData's writeToURL:ocidFilePathURL options:(refMe's NSDataWritingAtomic) |error|:(reference))



|

[NSFont] NSFont

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
#                       com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application


set ocidFontManager to refMe's NSFontManager's sharedFontManager()

set ocidFontObject to refMe's NSFont's systemFontSize()
log ocidFontObject as integer
-->(*13*)

set ocidFontObject to refMe's NSFont's smallSystemFontSize()
log ocidFontObject as integer
-->(*11*)

set ocidOsaka to refMe's NSFont's fontWithName:"Osaka-mono" |size|:16

log ocidOsaka's pointSize()
-->(*16.0*)
log ocidOsaka's fixedPitch as boolean
-->(*true*)
log (ocidOsaka's mostCompatibleStringEncoding()) as real
-->(*2.147483649E+9*)
log (ocidOsaka's fontDescriptor())'s fontAttributes() as record
-->(*NSFontSizeAttribute:16.0, NSFontNameAttribute:Osaka-Mono*)

|

[NSFont] NSFontManager

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
#                       com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application


set ocidFontManager to refMe's NSFontManager's sharedFontManager()


set ocidFontNameArray to ocidFontManager's availableFonts()
log ocidFontNameArray as list
-->フォント名のリスト


set ocidFontFamilyArray to ocidFontManager's availableFontFamilies()
log ocidFontFamilyArray as list
-->フォントファミリー名のリスト

repeat with itemFontFamilyArray in ocidFontFamilyArray
    
    set ocidFamilyFontArray to (ocidFontManager's availableMembersOfFontFamily:itemFontFamilyArray)
    log ocidFamilyFontArray as list
    -->フォントファミリーの構成フォント
    set numCntFontFamily to count of ocidFamilyFontArray
    set numCntFontNo to 0 as integer
    repeat numCntFontFamily times
        set ocidFontArray to (ocidFamilyFontArray's objectAtIndex:numCntFontNo)
        log (ocidFontArray's objectAtIndex:0) as text
        -->POST SCRIPT NAME
        log (ocidFontArray's objectAtIndex:1) as text
        -->SUB NAME
        log (ocidFontArray's objectAtIndex:2) as text
        -->フォントのウェイト 1<-->12
        log (ocidFontArray's objectAtIndex:3) as text
        -->フォントの種類
        (*
log refMe's NSBoldFontMask as integer
-->(*2*)
log refMe's NSCompressedFontMask as integer
-->(*512*)
log refMe's NSCondensedFontMask as integer
-->(*64*)
log refMe's NSExpandedFontMask as integer
-->(*32*)
log refMe's NSFixedPitchFontMask as integer
-->(*1024*)
log refMe's NSItalicFontMask as integer
-->(*1*)
log refMe's NSNarrowFontMask as integer
-->(*16*)
log refMe's NSNonStandardCharacterSetFontMask as integer
-->(*8*)
log refMe's NSPosterFontMask as integer
-->(*256*)
log refMe's NSSmallCapsFontMask as integer
-->(*128*)
log refMe's NSUnboldFontMask as integer
-->(*4*)
log refMe's NSUnitalicFontMask as integer
-->(*16777216*)
        
        *)
        set numCntFontNo to numCntFontNo + 1 as integer
    end repeat
end repeat


###等幅
set ocidFontTraits to refMe's NSFixedPitchFontMask
###等幅のリスト
set ocidFontTraitsArray to ocidFontManager's availableFontNamesWithTraits:ocidFontTraits
log ocidFontTraitsArray as list
-->フォント名のリスト


|

その他のカテゴリー

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