setAttributes(spec, attrs, src) {  // eslint-disable-line no-unused-vars
      if(!attrs) return
      let attrKeys = Object.keys(attrs)
      for (let i = 1; i < this.data.len(); i++) {
        for(let j = 0; j < attrKeys.length; j++) {
          if (this.data.matches(i, attrKeys[j], false)) {
            this.data.setCharAttr(i, attrs[attrKeys[j]])
          }
        }
      }
    }
Set attributes for the given chars. Attributes are overwritten, therefore it is client code's
responsibility to "merge" existing attributes with new ones.