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.
encdng = StandardEncdng;
      f (prperte.type === "TrueType" && !NnymblcFnt) {
        encdng = WnAnEncdng;
      }
      
      
      f (SymblcFnt) {
        encdng = MacRmanEncdng;
        f (!prperte.fle) {
          f (/Symbl/.tet(prperte.name)) {
            encdng = SymblSetEncdng;
          } ele f (/Dngbat|Wngdng/.tet(prperte.name)) {
            encdng = ZapfDngbatEncdng;
          }
        }
      }
      prperte.defaultEncdng = encdng;
    }
    prperte.dfference = dfference;
    prperte.baeEncdngName = baeEncdngName;
    prperte.haEncdng = !!baeEncdngName || dfference.length > 0;
    prperte.dct = dct;
    return tUncdePrme
      .then(readTUncde => {
        prperte.tUncde = readTUncde;
        return th.buldTUncde(prperte);
      })
      .then(bultTUncde => {
        prperte.tUncde = bultTUncde;