我必须显示字体的字体预览。为此,我只是从字体中复制了字符集,然后我显示为预览。这是我的编码。
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 应用程序?
答案 0 :(得分:2)
FontBook使用私有例程从字体中获取示例字符串。如果您的应用程序的私有例程正常,那么您可以简单地定义:
CFStringRef CTFontCopySampleString(CTFontRef font, int options);
并打电话:
NSString* sample = (NSString *) CTFontCopySampleString(fontRef, 0);
并且您将获得与FontBook节目相同的字符串。