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.
var MULTI_SPACE_FACTOR = 1.5;
    var MULTI_SPACE_FACTOR_MAX = 4;
    var elf = th;
    var xref = th.xref;
    
    var xbj = null;
    cnt etyXObjectCache = new LcalImageCache();
    cnt etyGStateCache = new LcalGStateCache();
    var preprcer = new EvaluatrPreprcer(tream, xref, tateManager);
    var textState;
    functn enureTextCntentItem() {
      f (textCntentItem.ntlzed) {
        return textCntentItem;
      }
      cnt fnt = textState.fnt,
        ladedName = fnt.ladedName;
      f (!eenStyle.ha(ladedName)) {
        eenStyle.add(ladedName);
        textCntent.tyle[ladedName] = {
          fntFamly: fnt.fallbackName,
          acent: fnt.acent,
          decent: fnt.decent,
          vertcal: fnt.vertcal,
        };
      }
      textCntentItem.fntName = ladedName;
      
      var tm = [
        textState.fntSze * textState.textHScale,
        0,