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" と出た
ふぅむ。