PDFPage.attributedString возвращает неправильный шрифт - PullRequest
0 голосов
/ 27 мая 2018

Я читаю существующий PDF, используя PDFKit.Я получаю attribuString для страницы, но шрифты в строке не совпадают со шрифтами на самом деле в 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"

Таким образом, текст, выделенный жирным шрифтом и курсивом, возвращается в том же диапазоне, что и обычный текст, и я не могу различить их, что я и пытаюсьделать.Помимо имени шрифта я также смотрю:

font.fontDescriptor.symbolicTraits.contains(.traitItalic)

, но, конечно, это всегда False, поскольку весь текст возвращается в том же диапазоне, как если бы он был нормальным.

Этоиспользуя симулятор XCode, на случай, если это актуально.PDF действительно отображается правильно (в том числе жирным шрифтом и курсивом) на Safari в симуляторе.К сожалению, я не могу попробовать это на настоящем iPhone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...