【发布时间】:2014-01-26 09:27:33
【问题描述】:
我有一个 UITextView,我在其中管理一个 NSAttributedString,最初是通过键盘正常输入的。我将属性字符串保存为 HTML,看起来不错。 当我再次加载它并将其从 HTML 转换回属性字符串时,字体大小似乎发生了变化。
例如,加载时的 HTML 如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica; color: #000000; -webkit-text- stroke: #000000}
span.s1 {font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 21.00pt; font-kerning: none}
</style>
</head>
<body>
<p class="p1"><span class="s1">There is some text as usual lots of text</span></p>
</body>
</html>
我转换它并使用以下代码检查属性:
// convert to attributed string
NSError *err;
NSAttributedString *as = [[NSAttributedString alloc] initWithData:data3
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil
error:&err] ;
NSMutableAttributedString *res = [as mutableCopy];
[res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *oldFont = (UIFont *)value;
NSLog(@"On Loading: Font size %f, in range from %d length %d", oldFont.pointSize, range.location, range.length);
}
}];
输出显示字体大小从21增加到28:
On Loading: Font size 28.000000, in range from 0 length 40
On Loading: Font size 21.000000, in range from 40 length 1
基本上,每次我加载字符串时,字体大小都会增加。我需要将它存储为 HTML 而不是 NSData,因为它也将被其他平台使用。
有人知道为什么会这样吗?
【问题讨论】:
标签: html fonts ios7 nsattributedstring