public void set(EAttribute a, AttributeValues src) {
   if (a.att == null) {
     throw new InternalError("can't set derived attribute: " + a);
   }
   if (src == null || src == DEFAULT) {
     setDefault(a);
   } else {
     if ((src.defined & a.mask) != 0) {
       i_set(a, src);
       update(a);
     }
   }
 }
 public AttributeValues merge(AttributeValues src, int mask) {
   int m = mask & src.defined;
   for (EAttribute ea : EAttribute.atts) {
     if (m == 0) {
       break;
     }
     if ((m & ea.mask) != 0) {
       m &= ~ea.mask;
       i_set(ea, src);
       update(ea);
     }
   }
   return this;
 }
 public void set(EAttribute a, Object o) {
   if (a.att == null) {
     throw new InternalError("can't set derived attribute: " + a);
   }
   if (o != null) {
     try {
       i_set(a, o);
       update(a);
       return;
     } catch (Exception e) {
     }
   }
   setDefault(a);
 }
 public void setInputMethodUnderline(int f) {
   this.imUnderline = (byte) f;
   update(EINPUT_METHOD_UNDERLINE);
 }
 public void setInputMethodHighlight(InputMethodHighlight f) {
   this.imHighlight = f;
   update(EINPUT_METHOD_HIGHLIGHT);
 }
 public void setJustification(float f) {
   this.justification = f;
   update(EJUSTIFICATION);
 }
 public void setPosture(float f) {
   this.posture = f;
   update(EPOSTURE);
 }
 public void setTransform(AffineTransform f) {
   this.transform = (f == null || f.isIdentity()) ? DEFAULT.transform : new AffineTransform(f);
   updateDerivedTransforms();
   update(ETRANSFORM);
 }
 public void setLigatures(int f) {
   this.ligatures = (byte) f;
   update(ELIGATURES);
 }
 public void setKerning(int f) {
   this.kerning = (byte) f;
   update(EKERNING);
 }
 public void setBackground(Paint f) {
   this.background = f;
   update(EBACKGROUND);
 }
 public void setForeground(Paint f) {
   this.foreground = f;
   update(EFOREGROUND);
 }
 public void setCharReplacement(GraphicAttribute f) {
   this.charReplacement = f;
   update(ECHAR_REPLACEMENT);
 }
 public void setFont(Font f) {
   this.font = f;
   update(EFONT);
 }
 public void setSuperscript(int f) {
   this.superscript = (byte) f;
   update(ESUPERSCRIPT);
 }
 public void setTransform(TransformAttribute f) {
   this.transform = (f == null || f.isIdentity()) ? DEFAULT.transform : f.getTransform();
   updateDerivedTransforms();
   update(ETRANSFORM);
 }
 public void setSwapColors(boolean f) {
   this.swapColors = f;
   update(ESWAP_COLORS);
 }
 public void setNumericShaping(NumericShaper f) {
   this.numericShaping = f;
   update(ENUMERIC_SHAPING);
 }
 public void setUnderline(int f) {
   this.underline = (byte) f;
   update(EUNDERLINE);
 }
 public void setTracking(float f) {
   this.tracking = (byte) f;
   update(ETRACKING);
 }
 public void setFamily(String f) {
   this.family = f;
   update(EFAMILY);
 }
 public void setStrikethrough(boolean f) {
   this.strikethrough = f;
   update(ESTRIKETHROUGH);
 }
 public void setSize(float f) {
   this.size = f;
   update(ESIZE);
 }
 public void setRunDirection(int f) {
   this.runDirection = (byte) f;
   update(ERUN_DIRECTION);
 }
 public void setBidiEmbedding(int f) {
   this.bidiEmbedding = (byte) f;
   update(EBIDI_EMBEDDING);
 }
 public void setWeight(float f) {
   this.weight = f;
   update(EWEIGHT);
 }
 public void setWidth(float f) {
   this.width = f;
   update(EWIDTH);
 }