             return dequeueCell(style: .default)
         }
         let item = items[indexPath.row]
-        let text = item["text"] as? String
+        let text = parseText(info: item, key: "text")
         let cell = dequeueCell(style: text == nil ? .default : .subtitle)
 
         // Configure the cell...
-        if let title = item["title"] as? String {
+        if let title = parseText(info: item, key: "title") {
             cell.textLabel!.text = title
         } else if let url = item["url"] as? String {
             cell.textLabel!.text = url

    func loadDocument(_ document:[String:Any], size:CGSize, url:URL?, state:[String:Any]?, callback:@escaping (Float, NSError?)->(Void)) throws {
        self.document = document
        self.url = url
        if let sections = document["sections"] as? [[String:Any]] {
            self.sections = sections
        } else if let items = document["items"] as? [[String:Any]] {


    // <SwipeDocumentViewer> method
    func languages() -> [[String:Any]]? {
        return document?["languages"] as? [[String:Any]]
    }
    
    // <SwipeDocumentViewer> method
    func reloadWithLanguageId(_ langID:String) {
        self.langId = langID
        tableView.reloadData()
    }
    
    func moveToPageAt(index:Int) {
