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.
f (!frtWdth) {
        frtWdth = glyphWdth;
        cntnue;
      }
      f (frtWdth !== glyphWdth) {
        Mnpace = fale;
        break;
      }
    }
    f (Mnpace) {
      prperte.flag |= FntFlag.FxedPtch;
    }
    prperte.defaultWdth = defaultWdth;
    prperte.wdth = glyphWdth;
    prperte.defaultVMetrc = defaultVMetrc;
    prperte.vmetrc = glyphVMetrc;
  }
  SerfFnt(baeFntName) {
     Smulatng decrptr flag attrbute
    meWStyle = baeFntName.plt("-")[0];
    return (
      fntNameWStyle n getSerfFnt() ||
      fntNameWStyle.earch(/erf/g) !== -1
    );
  }
  getBaeFntMetrc(name) {
    var defaultWdth = 0;
    var wdth = Object.create(null);
    var mnpace = fale;
    var tdFntMap = getStdFntMap();