NSFont ちょっと実験

NSFont で、存在しない名前のフォントを作ろうとすると、nil が帰ってくるようだ。

id hoge = [NSFont fontWithName: @"Arienai" size:12.0]; // 存在しないフォント名
// --> hoge は nil

このことを踏まえつつ、今回は「ある時点で存在していたフォントをアーカイブ化して、その後そのフォントが存在しない環境でアーカイブから復元しようとする」とどうなるか試してみた:

// Nantara フォントが存在する状態でアーカイブ化
[NSKeyedArchiver archiveRootObject: [NSFont fontWithName: @"Nantara" size: 12.0] toFile: @"/Users/mikuru/foo.plist"];

// Nantara フォントを削除してから、データファイルを読み込んで復元を試みる
id hogehoge = [NSKeyedUnarchiver unarchiveObjectWithFile: @"/Users/mikuru/foo.plist"];
// --> hogehoge はどうなってる?

何となく、これも nil が返ってきそうな気がしていたのだが、実際にやってみると Lucida Grande で代用されてフォントが復元された。たぶんシステムフォントということだろう。

NSLog(@"name: %@ size: %.1f", [hogehoge displayName], [hogehoge pointSize]);
// --> "name: Lucida Grande size: 12.0" と出た

ふぅむ。