code: public Font difference(Font font) {
  		if (font == null) return this;
  		// size
  		float dSize = font.size;
  		if (dSize == UNDEFINED) {
  			dSize = this.size;
  		}
  		// style
  		int dStyle = UNDEFINED;
  		int style1 = this.style;
  		int style2 = font.getStyle();
  		if (style1 != UNDEFINED || style2 != UNDEFINED) {
  			if (style1 == UNDEFINED)
  				style1 = 0;
  			if (style2 == UNDEFINED)
  				style2 = 0;
  			dStyle = style1 | style2;
  		}
  		// color
  		Color dColor = font.color;
  		if (dColor == null) {
  			dColor = this.color;
  		}
  		// family
  		if (font.baseFont != null) {
  			return new Font(font.baseFont, dSize, dStyle, dColor);
  		}
  		if (font.getFamily() != UNDEFINED) {
  			return new Font(font.family, dSize, dStyle, dColor);
  		}
  		if (this.baseFont != null) {
  			if (dStyle == style1) {
  				return new Font(this.baseFont, dSize, dStyle, dColor);
  			} else {
  				return FontFactory.getFont(this.getFamilyname(), dSize, dStyle,
  						dColor);
  			}
  		}
  		return new Font(this.family, dSize, dStyle, dColor);
  	}
docs: Replaces the attributes that are equal to <VAR>null</VAR> with the
  attributes of a given font.
  
  @param font
  the font of a bigger element class
  @return a <CODE>Font</CODE>