« [CSS]フォントの各名称とCSS【その1】 | トップページ | DebenuAerialist »

[CSS]フォントの各名称とCSS【その2】

その1は
https://force4u.cocolog-nifty.com/skywalker/2016/02/csscss-838a.html


繰り返しになりますが
CSSのフォント指定はあくまでも『ファミリ名』ですが
フォントを指定する場合に有効なのが

PostScript名
フル・フォント名
ファミリー名+ウェイト名
フォント・ファミリー名 を指定出来ると、各ブラウザで表示出来るわけです。

ポイントは
ローカライズ名ではなく英語で指定するのがセオリー

英語でフォントの各種名称を取得する場合
有効なのが
表示言語の一時変更での
フォントブックでの取得が簡単でしょう


Website_image00280211_165241


サンプルはヒラギノですので
スタイル部分がW3になっていますが
ウェイトを取得出来る事もあります。

それ以外の方法だと
mdls
スポットライトコマンドで取得出来ます。

/usr/bin/mdls -name com_apple_ats_names
/usr/bin/mdls -name com_apple_ats_name_full
/usr/bin/mdls -name com_apple_ats_name_fond
/usr/bin/mdls -name com_apple_ats_name_family
/usr/bin/mdls -name com_apple_ats_name_postscript
/usr/bin/mdls -name com_apple_ats_name_style

スクリプトにするとこんな感じ

Website_image00280211_172417_2

(*
com_apple_ats_name_family.scpt

Uniform Type Identifiers Reference
public.truetype-collection-fontを指定していますが
異なるファミリーが同封されている場合は
全てのファミリは取得出来ません。
フォントブックを英語モードに切り替えて利用する事をお勧めします

*)
-----ファインダー呼び出し
tell application "Finder"
activate
---ファイルを選択 TTF TTC OTF PS1のみ選べます Font Suitcase等は選べません
set objResult 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", "com.apple.truetype-datafork-suitcase-font", "com.adobe.postscript-lwfn​-font"} invisibles true ¬
with multiple selections allowed without showing package contents

end tell


set theLogFile to "" as text


----繰り返しのはじまり
repeat with objFiles in objResult
----ファインダー処理
tell application "Finder"
----取得したファイルのエリアスを取得
set theFileIAlias to objFiles as alias
----ファイル名を取得
set theFontName to (name of (info for objFiles) as list) as text
----フォントがあるディレクトリを取得
set theFileDir to (container of objFiles) 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_postscript \"" & 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

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
set theResultTextPostscript to my doReplace(theResultText, " ", "") as text


set theMdlsResult to "" as text
-----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

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
set theResultTextFamily to my doReplace(theResultText, " ", "") as text

set theMdlsResult to "" as text

-----mdlsのコマンドを実行して格納
set theMdlsResult to do shell script "/usr/bin/mdls -name com_apple_ats_name_full \"" & 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

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
set theResultTextFull to my doReplace(theResultText, " ", "") as text


-----mdlsのコマンドを実行して格納
set theMdlsResult to do shell script "/usr/bin/mdls -name com_apple_ats_name_style \"" & 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

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
set theResultTextStyle to my doReplace(theResultText, " ", "") as text



set theLogFile to theLogFile & "\r\rcom_apple_ats_name_postscript\r" & theResultTextPostscript & "\r\rcom_apple_ats_name_family\r" & theResultTextFamily & "\r\rcom_apple_ats_name_full\r" & theResultTextFull & "\r\rcom_apple_ats_name_style\r" & theResultTextStyle & "\r\r" as text

log theLogFile

end repeat



return theLogFile













---------文字の置き換えサブルーチン
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


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

その3に続く
https://force4u.cocolog-nifty.com/skywalker/2016/02/csscss3fontbook.html

|

« [CSS]フォントの各名称とCSS【その1】 | トップページ | DebenuAerialist »

AppleScript」カテゴリの記事

CSS」カテゴリの記事

Fonts」カテゴリの記事