我正在使用PDFKit阅读现有PDF。我为一个页面获得了一个attributionString,但是字符串中的字体与PDF中实际的字体不匹配:
PDF中的字体(根据几个不同的应用程序)是:
CourierFinalDraft (TypeType Roman) Embedded Subset
CourierFinalDraft-Bold (TrueType Roman) Embedded Subset
CourierFinalDraft-Italic (TrueType Roman) Embedded Subset
获取字体的我的Swift代码是:
guard let page = pdf.page(at: pageNo) else { return }
guard let content = page.attributedString else { return }
content.enumerateAttributes(in: range, options:[]) {(dict: [String:Any], range: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
let font = dict[NSFontAttributeName] as! UIFont
}
所有文本都在一个范围内返回。返回的字体具有以下内容:
font-family: "Times New Roman"
font-name: "TimesNewRomanPSMT"
所以Bold和Italic文本返回的范围与普通文本相同,我无法区分它们,这就是我想要做的。除了我也看到的字体名称:
font.fontDescriptor.symbolicTraits.contains(.traitItalic)
但当然这总是假的,因为所有文本都返回到与正常相同的范围内。
这是使用XCode模拟器,如果相关的话。 PDF可以在模拟器中的Safari上正确呈现(包括粗体和斜体)。不幸的是,我无法在真正的iPhone上试用它。