NSAttributedString的initWithHTML的默认DPI是多少?

时间:2014-07-28 14:02:22

标签: html cocoa nsattributedstring dpi

我使用NSAttributedString' s -initWithHTML:documentAttributes:方法从HTML-Code创建属性字符串。我尝试转换的HTML代码可能包含以毫米为单位指定的字体大小。生成的属性字符串包含以磅为单位的字体大小。 我想知道默认的DPI来缩放文本以匹配我的目标DPI。

在我的测试中,似乎该方法使用~96 DPI。

    NSString *html = @"<html><span style='font-size:10mm'>example</span></html>";
    NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding];

    NSAttributedString *string = [[NSAttributedString alloc] initWithHTML:data documentAttributes:nil];

    NSFont *font = [string attribute:NSFontAttributeName atIndex:0 effectiveRange:NULL];

    CGFloat pointSize = [font pointSize];

    CGFloat defaultDPI = pointSize / 10.0 * 25.4; // (1 mm == 25.4 inch)

    NSLog(@"default DPI: %f.", defaultDPI); // returns 96.520000

但是,我找不到这个号码的文档,我担心将来可能会有所改变。因此,我的问题是:

有没有更好的方法来获得默认的DPI?是否有可能在转型前指定DPI?

1 个答案:

答案 0 :(得分:0)

DPI因显示设备而异。显示器上的典型值为72dpi,浏览器中的典型值为96 dpi(或者至少它假装为96dpi,即使最终的显示设备不支持)。虽然使用Retina屏幕等,但Mac上的情况会有所不同。

如果您在浏览器中显示此内容,我会坚持使用标准的96dpi假设并信任font-size指令。