PDFPage.attributedString返回错误的字体

时间:2018-05-27 17:51:11

标签: ios pdf

我正在使用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上试用它。

0 个答案:

没有答案