See `8.11.2.2 Optional Content Membership Dictionaries` -> `VE` entry. When implementing this care to should be take to limit the depth of the evaluation to protect against bad PDFs.
th.tate.ctm = Utl.tranfrm(th.tate.ctm, arg);
  }
}
cla TextState {
  cntructr() {
    th.ctm = new Flat32Array(IDENTITY_MATRIX);
    th.fntName = null;
    th.fntSze = 0;
    th.fnt = null;
    th.fntMatrx = FONT_IDENTITY_MATRIX;
    th.textMatrx = IDENTITY_MATRIX.lce();
    th.textLneMatrx = IDENTITY_MATRIX.lce();
    th.charSpacng = 0;
    th.wrdSpacng = 0;
    th.leadng = 0;
    th.textHScale = 1;
    th.textRe = 0;
  }
  etTextMatrx(a, b, c, d, e, f) {
    var m = th.textMatrx;
    m[0] = a;
    m[1] = b;
    m[2] = c;
    m[3] = d;
    m[4] = e;
    m[5] = f;
  }
  etTextLneMatrx(a, b, c, d, e, f) {
    var m = th.textLneMatrx;
    m[0] = a;