
原文: Custom sidebar entries in font view
チュートリアル
執筆者: Rainer Erich Scheichelbauer
en fr zh
2022年7月29日更新(初版公開:2015年5月20日)
フォントビューのサイドバーは、自分好みにカスタマイズ可能です。グリフセットの確認、並べ替え、フィルタリングが格段に便利になるほか、Glyphsに新しいスクリプトを追加する際にも役立ちます。覚えておいて損はないテクニックですし、作業自体もすぐに完了します。
フォントビュー(Cmd+Opt+1)のサイドバーには、独自のカテゴリや言語を追加できます。Glyphsは、~/Library/Application Support/Glyphs/Info/ にある Groups.plist というファイルを参照して、これらの項目を表示します。
このフォルダへ素早く移動するには、Glyphsのメニューから「スクリプト > スクリプトフォルダを開く」(Cmd+Shift+Y)を選び、開いたウィンドウで Scripts フォルダの隣にある Info フォルダを探してください。もし Info フォルダがない場合は、Finderで新規作成(Cmd+Shift+N)してください。
次に、Info フォルダの中にテキストエディタを使って Groups.plist というファイルを作成します。編集には、Appleプロパティリスト(拡張子 .plist)のシンタックスハイライト(構文色分け)に対応したエディタの使用を強く推奨します。Atom、TextMate、BBEdit、Xcode、SublimeText などがおすすめです。
カテゴリと言語のカスタムエントリは、以下のような形式で記述します。
{
categories = (
{
name = "Compatibility";
icon = compatibilityTemplate;
subGroup = (
{
name = "Web";
list = (
.notdef,
hyphen,
space
);
},
{
name = "Windows";
list = (
nbspace,
softhyphen
);
}
);
},
);
languages = (
{
name = "Esperanto";
icon = EsperantoTemplate;
predicate = "script == \"latin\"";
subGroup = (
{
name = "Letters";
list = (
Ccircumflex,
ccircumflex,
Gcircumflex,
gcircumflex,
Hcircumflex, hcircumflex,
Jcircumflex, jcircumflex,
Scircumflex, scircumflex,
Ubreve, ubreve
);
},
{
name = "Marks";
list = (
circumflexcomb,
brevecomb
);
}
);
},
);
}
💡ヒント:Glyphs 2 からの移行について
Glyphs 2 で使っていた Groups.plist を引き継ぐ場合は、以下の2点に注意してください。
- グリフのリストは、以前の
coverageではなく、現在はlistというキーの下に記述します。 - グリフ名をすべて書き出す代わりに、対応する「文字そのもの」を記述することも可能です(CJKなどの漢字を扱う場合に特に便利です)。文字で記述した場合、実際のグリフ名は
uni4A67のようなUnicode名として解釈されます。
グリフのリストは、以前の coverage ではなく、現在は list というキーの下に記述します。
上記のサンプルコードをテキストエディタにコピー&ペーストし、用途に合わせて調整したら保存してください。Glyphsを再起動すると、サイドバーに以下のような項目が追加されているはずです。

書式の詳細ルール
カテゴリと言語を設定する際は、いくつかのルールに従う必要があります。
- カテゴリのエントリは
categories=(...);の中に記述します。 - 言語のエントリは
languages=(...);の中に記述します。 - 各エントリには必ず
name(表示名)が必要です。名前にスペースが含まれない場合、引用符("")は省略可能です。 - 各行の末尾は必ずセミコロン(
;)で閉じます。 - 各エントリの中身には、階層を作るための
subGroupか、グリフを列挙するためのlistのどちらかを指定できます(両方は同時に使えません)。 - トップレベル(一番上の階層)のエントリには
script属性を指定できます。これを設定すると、サイドバーでその項目を選んだ際、指定したスクリプトタグで自動的にフィルタリングされます。 - エントリには
iconを設定できます。アイコンファイルの名前は必ずTemplateで終わる必要があります(拡張子の記述は不要)。詳しくは後述します。
丸括弧 ( ) と 波括弧 { } の使い分け
「どっちを使えばいいんだっけ?」と迷ったときは、以下のポイントを思い出してください。
丸括弧 ()
- **「同じ種類の項目を列挙する」**ときに使います(カンマ区切り)。
- 例:
languages=(...);の中で複数の言語を並べる場合や、list=();の中で複数のグリフ名を並べる場合など。 - 閉じ括弧の後には必ずセミコロンを付けます。リストの最後の項目にはコンマは不要です。
波括弧 {}
- **「名前(キー)と中身(値)のペア」**をまとめるときに使います(セミコロン区切り)。
- 構造は常に
名前 = 中身;です。中身には数値、文字列、またはリストが入ります。 - 波括弧自体がリストの一部として使われている場合は、閉じ括弧の後にコンマが付くことがあります。
複数の Groups.plist を使う
Info ディレクトリ内には、複数の Groups.*.plist ファイルを置くことができます。ファイル名は必ず Groups で始まり、.plist で終わるようにしてください(例:Groups-Batak.plist)。
アイコンを追加する
サイドバーにアイコンを表示させたい場合、Glyphsは Groups.plist と同じ場所にある Icons フォルダを参照します。
アイコン画像は macOS がサポートする形式なら何でも構いませんが、拡大縮小に強い「白黒のPDF」がおすすめです。サイズは高さ16ピクセル(72dpiで16pt)以内、幅も高さと同じくらいに収めると、サイドバーのテキスト横にきれいに収まります。
ビットマップ画像を使いたい場合は、Retinaディスプレイに対応するため、2種類のファイルを用意する必要があります。
- 16×16 ピクセル の画像
- 32×32 ピクセル の画像(ファイル名の末尾に
@2xを付ける)
例えば、esperantoTemplate.png と esperantoTemplate@2x.png のようになります。 この場合も、ファイル名は必ず Template で終わらせてください。そうすることで、画像は「マスク(不透明度情報のみ)」として扱われ、色はシステムに合わせて自動的に上書きされます。
カスタムフィルタ(特定のファイル専用)
「この .glyphs ファイルを開いたときだけ表示されるサイドバー項目が欲しい」という場合は、フィルタ機能が便利です(サイドバーの「カテゴリ」「言語」の下にある3つ目のセクションです)。
フィルタを作るには、XMLファイルを作成します。ファイル名は CustomFilter で始まり、任意のタイトルを続け、末尾は .plist とします(例:CustomFilter My Font.plist)。このファイルを、対象の .glyphs ファイルと同じ場所に置いてください。次回そのフォントを開くと、サイドバーの「フィルタ」欄に、ファイル名で付けたタイトルのセクションが追加されます。
カスタムフィルタの基本構造は以下の通りです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
...
</array>
</plist>
拡張子は .plist ですが、中身は完全な XML ファイルです。これは「新形式のプロパティリスト」と呼ばれることもあります(前述の括弧や波括弧を使う記法は「旧形式」です)。
上記の ... の部分に、フィルタの内容を定義する dict(辞書)エントリを追加していきます。使えるエントリはリストフィルタとスマートフィルタの2種類です。
リストフィルタ
特定のグリフをリストアップして表示します。
<dict>
<key>name</key>
<string>Legacy Marks</string>
<key>list</key>
<array>
<string>circumflex</string>
<string>tilde</string>
<string>macron</string>
<string>breve</string>
<string>dotaccent</string>
<string>ring</string>
<string>cedilla</string>
<string>hungarumlaut</string>
<string>ogonek</string>
<string>caron</string>
</array>
</dict>
構造はシンプルです。name キーでフィルタの名前を指定し、list キーの中にグリフ名の配列(array)を記述するだけです。上のサンプルを参考に、必要なグリフを書き換えてみてください。
スマートフィルタ
条件を指定して、合致するグリフを抽出します。
<dict>
<key>name</key>
<string>Exporting</string>
<key>predicate</key>
<string>export == 1</string>
</dict>
こちらも name キーがありますが、リストの代わりに predicate(述語・条件)キーを使います。ここにはフィルタリングの論理条件を文字列で記述します。
- 複数の条件をつなぐ:
AND、OR - 条件のネスト:丸括弧
() - 比較演算子:
==、!=- XMLなので、
<は<、>は>と記述する必要があります。
- XMLなので、
- 文字列の比較:
CONTAINS、IN、ENDSWITH、STARTSWITH- すべて大文字で記述します。NSComparisonPredicate演算子 が利用可能です。
条件式には、GSGlyph(Glyphsのグリフオブジェクト)のプロパティを使用します。 どんなプロパティが使えるかを知るには、一度GlyphsのUI上でスマートフィルタを作成し、Application Supportフォルダ内に生成される CustomFilter.plist を覗いてみるのが一番の近道です。UIにはない内部プロパティも条件として使える場合があるので、ぜひいろいろと実験して、自分だけの便利な環境を作り上げてみてください。
更新履歴 2016-03-26: subGroupの区切りを修正しました。報告してくれた@zenと@kosbartsに感謝します。
更新履歴 2017-03-16: サンプルのラテン文字スクリプトタグを修正しました。報告してくれた@timahrensに感謝します。
更新履歴 2019-07-07: トップレベルカテゴリのスクリプトフィルタを修正しました。(script = latin > predicate = "script == \"latin\"";)
更新履歴 2020-03-23: 余分なスペースを削除しました。
更新履歴 2020-10-20: Glyphs 3向けに更新。
更新履歴 2022-07-29: タイトル、軽微なフォーマットを更新。
コメント