« タグとラベルインデックス 両方削除する | トップページ | [bash]path to temporary items from user domain »

フォントファイル書き出し

Adobeの同期フォントを書き出します。
同期がエラーになった時に作ったものを手直し
フォントファイルを書き出します。
自動化してみた

ダウンロード - fontexporter.zip


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#単体動作しません
#試す場合はこちらを利用してください
# https://quicktimer.cocolog-nifty.com/icefloe/files/fontexporter.zip
#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()

###enumeratorAtURL用のBoolean用
set ocidFalse to (refMe's NSNumber's numberWithBool:false)
set ocidTrue to (refMe's NSNumber's numberWithBool:true)

####################################
######パス関連
####################################
set ocidUserApplicationSupportPathURLArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationSupportDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserApplicationSupportPathURL to ocidUserApplicationSupportPathURLArray's firstObject()
set ocidLivetypeDirURL to ocidUserApplicationSupportPathURL's URLByAppendingPathComponent:"Adobe/CoreSync/plugins/livetype"

####################################
######コンテンツ(URLパスの取得)収集
####################################
##プロパティ
set ocidProperties to {refMe's NSURLPathKey, refMe's NSURLIsRegularFileKey, refMe's NSURLIsDirectoryKey, refMe's NSURLContentTypeKey}
##オプション
set ocidOption to refMe's NSDirectoryEnumerationSkipsPackageDescendants
####ディレクトリのコンテツを収集(最下層まで)
set ocidEmuDict to (appFileManager's enumeratorAtURL:(ocidLivetypeDirURL) includingPropertiesForKeys:(ocidProperties) options:(ocidOption) errorHandler:(reference))
###戻り値をリストに格納
set ocidFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
set ocidEmuFileURLArray to ocidEmuDict's allObjects()
(ocidFilePathURLArray's setArray:ocidEmuFileURLArray)

####################################
###NSURLリストから特定のファイルのみの取得
####################################
###ここにFontファイルのURLだけ格納します
set ocidFontFilePathURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)

repeat with itemFilePathURLArray in ocidFilePathURLArray
  ###ファイル判定(ディレクトリを含まない)
  set listResult to (itemFilePathURLArray's getResourceValue:(reference) forKey:(refMe's NSURLIsRegularFileKey) |error|:(reference))
  ###リストからNSURLIsRegularFileKeyのBOOLを取り出し
  set boolIsRegularFileKey to item 2 of listResult
  ####ファイルのみを(ディレクトリやリンボリックリンクは含まない)
  if boolIsRegularFileKey is ocidTrue then
    ###コンテンツタイプを読み出し
    set listResult to (itemFilePathURLArray's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
    ###UTIを取得する
    set strUTItype to (item 2 of listResult)'s identifier as text
    ###UTI名にfontが含まれていればフォントファイル
    if strUTItype contains "font" then
      ###リストに追加
(ocidFontFilePathURLArray's addObject:itemFilePathURLArray)
    end if
  end if
end repeat

####################################
###デスクトップに移動先フォルダを作る
####################################
set ocidDesktopDirPathURLArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidDesktopDirPathURLArray's firstObject()
set ocidSaveDirPathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:"AdobeFontFile"
set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(missing value) |error|:(reference)
####################################
###ExifTool
####################################
tell application "Finder"
  set aliasPathToMe to path to me as alias
  set aliasContainerDirPath to container of aliasPathToMe as alias
  set aliasBinPath to (file "exiftool" of folder "bin" of folder aliasContainerDirPath) as alias
end tell
set strBinPath to (POSIX path of aliasBinPath) as text

####################################
###本処理
####################################

repeat with itemFontFilePathURLArray in ocidFontFilePathURLArray
  set strExtensionName to (itemFontFilePathURLArray's pathExtension) as text
  set strFontFilePath to itemFontFilePathURLArray's |path| as text
  #######################
  ####コマンド実行
  #######################
  set strCommandText to ("\"" & strBinPath & "\" -json -charset UTF8 -lang Ja \"" & strFontFilePath & "\"") as text
  set jsonFontsExif to (do shell script strCommandText) as text
  #######################
  ####JSONをDATAに
  #######################
  set coidJsonString to (refMe's NSString's stringWithString:(jsonFontsExif))
  set ocidJsonData to (coidJsonString's dataUsingEncoding:(refMe's NSUTF8StringEncoding))
  set listJsonData to (refMe's NSJSONSerialization's JSONObjectWithData:(ocidJsonData) options:(refMe's NSJSONReadingMutableContainers) |error|:(reference))
  set ocidJsonData to ((item 1 of listJsonData)'s objectAtIndex:0)
  #######################
  ####JSONをNSDictionary
  #######################
  set ocidJsonDict to (refMe's NSDictionary's alloc()'s initWithDictionary:(ocidJsonData))
  ###値を取得する
  #####Font名
  set strFontName to (ocidJsonDict's valueForKey:"FontName-ja") as text
  if strFontName is "missing value" then
    set strFontName to (ocidJsonDict's valueForKey:"FontName-en-US") as text
  end if
  if strFontName is "missing value" then
    set strFontName to (ocidJsonDict's valueForKey:"FontName") as text
  end if
  #####文字化けで ?が入る場合はPostScriptFontNameにする
  if strFontName contains "?" then
    set strFontName to (ocidJsonDict's valueForKey:"PostScriptFontName") as text
  end if
  if strFontName is "missing value" then
    set strFontName to (ocidJsonDict's valueForKey:"PostScriptFontName-en-US") as text
  end if
  ###ファイル名決めて
  set strFontFileName to (strFontName & "." & strExtensionName) as text
  ###コピー先のURLにしておく
  set ocidSaveFilePathURL to (ocidSaveDirPathURL's URLByAppendingPathComponent:strFontFileName)
  ###ファイルをコピー
  set boolDone to (appFileManager's copyItemAtURL:(itemFontFilePathURLArray) toURL:(ocidSaveFilePathURL) |error|:(reference))
  ###ラベルセット
  set listDone to (ocidSaveFilePathURL's setResourceValue:{"AdobeFonts"} forKey:(refMe's NSURLTagNamesKey) |error|:(reference))
  
  set aliasSaveFilePath to ocidSaveFilePathURL as alias
  
  tell application "Finder"
    tell file aliasSaveFilePath
      set comment to "Fontのコピーです\r契約の無い方の利用はできません\r"
      set label index to 0
    end tell
  end tell
  
end repeat

tell application "Finder"
  activate
  open (ocidSaveDirPathURL as alias)
end tell

return "処理終了"

|

« タグとラベルインデックス 両方削除する | トップページ | [bash]path to temporary items from user domain »

AppleScript Fonts」カテゴリの記事