如何在mac应用程序中显示字体预览?

时间:2011-08-10 06:12:05

标签: objective-c cocoa macos

我必须显示字体的字体预览。为此,我只是从字体中复制了字符集,然后我显示为预览。这是我的编码。

     NSString *fontName=@"aFontName";

    CFStringRef CFFontName = (CFStringRef)fontName;
    CTFontRef fontRef = CTFontCreateWithName(CFFontName, 0.0,NULL);

    NSCharacterSet *characterset = (NSCharacterSet *) CTFontCopyCharacterSet (fontRef); 
    unichar idx;
    NSString *str=[[NSString alloc]init];
    for( idx = 0; idx < 65000; idx++ )
    {
        if ([characterset characterIsMember: idx])
        {
            if ( isprint(idx) ) {
                NSString *str2 = [NSString stringWithFormat:@"%c",idx];
                str=[str stringByAppendingString:str2];
            }
            else {
                NSString *str1 = [NSString stringWithFormat:@"%C",idx];
                str=[str stringByAppendingString:str1];
            }
        }


    }

然后最后在TextView中,我将 str 中的字符串显示为字体预览。但是 str 有很多不需要的字符(对于印地语语言字体,它也显示英文字符)。我认为这不是显示字体预览的正确方法。是否还有其他方法可以在Mac中显示字体预览,例如 FontBook 应用程序?

1 个答案:

答案 0 :(得分:2)

FontBook使用私有例程从字体中获取示例字符串。如果您的应用程序的私有例程正常,那么您可以简单地定义:

CFStringRef CTFontCopySampleString(CTFontRef font, int options);

并打电话:

NSString* sample = (NSString *) CTFontCopySampleString(fontRef, 0); 

并且您将获得与FontBook节目相同的字符串。