« PackageMaker.app | トップページ | [MDLS]mdlsでフォントファミリー名を取得する »

[SourceHanSans]源ノ角ゴシック その3

こちらLINKのつづき

フォント名 フォントファミリー名の
ローカライズ(各国語版)についてはこちらで書きましたが

これがマタ面倒の始まり
こちらLINKでもチロッと書きましたが
AppleScripts等でフォントをイジル場合
どうしても
一回はFontBookでアクティブにしないと…

OSX10.6.8のmdlsでフォントファミリーを取得すると
以下のようになる

Website_image00261230_212027

mdlsで取得するローカライズ名は
"\U6e90\U30ce\U89d2\U30b3\U3099\U30b7\U30c3\U30af JP Regular"
このように「\U」でエスケープされていますが
デコードすると
源ノ角ゴシック JP Regular 『Regular』!!
ファミリー名に「ウェイト」が付いてしまいます。

もちろん
Website_image00261230_212421

ファミリー名には「ウェイト」は含みません
10.6.8のバグかいなぁ?


フォント・ファミリー名を取得して
フォントファミリーの名称でフォルダを作成して
その中にフォントを入れる てなスクリプト

(*
com_apple_ats_name_family.scpt 20141230

mdls スポットライトのメタデータ呼び出しコマンドから
フォントファミリーネームを取得して
フォントファミリー名のフォルダーを作成して
その中にフォント入れます

フォントファミリー名の不具合の説明はこちら

*)

tell application "Finder"
-----ファインダー呼び出し
activate
---ファイルを選択 TTF TTC OTF のみ選べます PS1等は選べません
set theFile to ¬
choose file default location (path to fonts folder from user domain) ¬
of type ¬
{"public.truetype-ttf-font", "public.truetype-collection-font", "public.opentype-font"} invisibles true ¬
without showing package contents
----取得したファイルのエリアスを取得
set theFileIAlias to theFile as alias
----ファイル名を取得
set theFontName to (name of theFileIAlias) as text
----フォントがあるディレクトリを取得
set theFileDir to (container of theFile) as text
----UNIXパスにしておきます
set theUnixFilePath to (POSIX path of theFileIAlias) as text
end tell


-----mdlsのコマンドを実行して格納
set theMdlsResult to do shell script "/usr/bin/mdls -name com_apple_ats_name_family \"" & theUnixFilePath & "\""
-----区切り文字を改行に設定
set AppleScript's text item delimiters to {"\r"}
-----改行毎のリストとして格納
set theResultList to (every text item of theMdlsResult) as list
-----区切り文字を戻す
set AppleScript's text item delimiters to {""}
-----何行あるか?(データ件数)を数える
set numListLine to (count of theResultList) as number

-----データ件数3件の場合ローカライズ名が無いと判断
if numListLine is 3 then
set theLineData to (item 2 of theResultList) as text
set theResultText to my doReplace(theLineData, "\t", "") as text
set theResultText to my doReplace(theResultText, "\"", "") as text
set theResultText to my doReplace(theResultText, " ", "") as text

-----データ件数4件の場合ローカライズ名があると判断
else if numListLine is 4 then
set theLineData to (item 3 of theResultList) as text
set theResultText to my doReplace(theLineData, "\t", "") as text
set theResultText to my doReplace(theResultText, "\"", "") as text
set theResultText to my doReplace(theResultText, " ", "") as text

else

end if
---------- JavaScript escapes を変換するために大文字のUを小文字に その後で4桁コードをCharacterEntityに変換
set theResultText to my doReplace(theResultText, "\\U", "\\u") as text
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{4})/\", \"&#x$1;\", \"" & theResultText & "\");'" as text
set theResultText to (do shell script thePregReplace) as text
----------その後でシングルバイトの2桁コードをCharacterEntityに変換
set thePregReplace to "php -r 'echo preg_replace(\"/\\\\\\u([0-9abcdef]{2})/\", \"&#x$1;\", \"" & theResultText & "\");'" as text
set theResultText to (do shell script thePregReplace) as text
----------デコード本処理 CharacterEntity をテキストに変換する
set theMbConvertEncoding to "php -r 'echo mb_convert_encoding(\"" & theResultText & "\", \"UTF-8\", \" HTML-ENTITIES \");'" as text
set theResultText to (do shell script theMbConvertEncoding) as text

tell application "Finder"
try
-----取得したフォントファミリー名でフォルダーを作る
make new folder at (theFileDir) with properties ¬
{name:theResultText ¬
, owner privileges:read write ¬
, group privileges:read write ¬
, everyones privileges:read write ¬
, comment:theFontName ¬
, description:theFontName ¬
}
end try
end tell


tell application "Finder"
try
-----フォルダーの中にフォントファイルを入れる
move (theFile) to alias (theFileDir & theResultText & ":")
end try

end tell



---------文字の置き換えサブルーチン
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace


「com_apple_ats_name_family.scpt.rtf」をダウンロード


「com_apple_ats_name_family.scpt.zip」をダウンロード


|

« PackageMaker.app | トップページ | [MDLS]mdlsでフォントファミリー名を取得する »

Fonts」カテゴリの記事