/*
 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package javax.swing.text;

import java.awt.Color;
import java.awt.Component;
import java.awt.Toolkit;
import javax.swing.Icon;

A collection of well known or common attribute keys and methods to apply to an AttributeSet or MutableAttributeSet to get/set the properties in a typesafe manner.

The paragraph attributes form the definition of a paragraph to be rendered. All sizes are specified in points (such as found in postscript), a device independent measure.

Author: Timothy Prinzing
/** * <p> * A collection of <em>well known</em> or common attribute keys * and methods to apply to an AttributeSet or MutableAttributeSet * to get/set the properties in a typesafe manner. * <p> * The paragraph attributes form the definition of a paragraph to be rendered. * All sizes are specified in points (such as found in postscript), a * device independent measure. * </p> * <p style="text-align:center"><img src="doc-files/paragraph.gif" * alt="Diagram shows SpaceAbove, FirstLineIndent, LeftIndent, RightIndent, * and SpaceBelow a paragraph."></p> * * @author Timothy Prinzing */
public class StyleConstants {
Name of elements used to represent components.
/** * Name of elements used to represent components. */
public static final String ComponentElementName = "component";
Name of elements used to represent icons.
/** * Name of elements used to represent icons. */
public static final String IconElementName = "icon";
Attribute name used to name the collection of attributes.
/** * Attribute name used to name the collection of * attributes. */
public static final Object NameAttribute = new StyleConstants("name");
Attribute name used to identify the resolving parent set of attributes, if one is defined.
/** * Attribute name used to identify the resolving parent * set of attributes, if one is defined. */
public static final Object ResolveAttribute = new StyleConstants("resolver");
Attribute used to identify the model for embedded objects that have a model view separation.
/** * Attribute used to identify the model for embedded * objects that have a model view separation. */
public static final Object ModelAttribute = new StyleConstants("model");
Returns the string representation.
Returns:the string
/** * Returns the string representation. * * @return the string */
public String toString() { return representation; } // ---- character constants -----------------------------------
Bidirectional level of a character as assigned by the Unicode bidi algorithm.
/** * Bidirectional level of a character as assigned by the Unicode bidi * algorithm. */
public static final Object BidiLevel = new CharacterConstants("bidiLevel");
Name of the font family.
/** * Name of the font family. */
public static final Object FontFamily = new FontConstants("family");
Name of the font family.
Since:1.5
/** * Name of the font family. * * @since 1.5 */
public static final Object Family = FontFamily;
Name of the font size.
/** * Name of the font size. */
public static final Object FontSize = new FontConstants("size");
Name of the font size.
Since:1.5
/** * Name of the font size. * * @since 1.5 */
public static final Object Size = FontSize;
Name of the bold attribute.
/** * Name of the bold attribute. */
public static final Object Bold = new FontConstants("bold");
Name of the italic attribute.
/** * Name of the italic attribute. */
public static final Object Italic = new FontConstants("italic");
Name of the underline attribute.
/** * Name of the underline attribute. */
public static final Object Underline = new CharacterConstants("underline");
Name of the Strikethrough attribute.
/** * Name of the Strikethrough attribute. */
public static final Object StrikeThrough = new CharacterConstants("strikethrough");
Name of the Superscript attribute.
/** * Name of the Superscript attribute. */
public static final Object Superscript = new CharacterConstants("superscript");
Name of the Subscript attribute.
/** * Name of the Subscript attribute. */
public static final Object Subscript = new CharacterConstants("subscript");
Name of the foreground color attribute.
/** * Name of the foreground color attribute. */
public static final Object Foreground = new ColorConstants("foreground");
Name of the background color attribute.
/** * Name of the background color attribute. */
public static final Object Background = new ColorConstants("background");
Name of the component attribute.
/** * Name of the component attribute. */
public static final Object ComponentAttribute = new CharacterConstants("component");
Name of the icon attribute.
/** * Name of the icon attribute. */
public static final Object IconAttribute = new CharacterConstants("icon");
Name of the input method composed text attribute. The value of this attribute is an instance of AttributedString which represents the composed text.
/** * Name of the input method composed text attribute. The value of * this attribute is an instance of AttributedString which represents * the composed text. */
public static final Object ComposedTextAttribute = new StyleConstants("composed text");
The amount of space to indent the first line of the paragraph. This value may be negative to offset in the reverse direction. The type is Float and specifies the size of the space in points.
/** * The amount of space to indent the first * line of the paragraph. This value may be negative * to offset in the reverse direction. The type * is Float and specifies the size of the space * in points. */
public static final Object FirstLineIndent = new ParagraphConstants("FirstLineIndent");
The amount to indent the left side of the paragraph. Type is float and specifies the size in points.
/** * The amount to indent the left side * of the paragraph. * Type is float and specifies the size in points. */
public static final Object LeftIndent = new ParagraphConstants("LeftIndent");
The amount to indent the right side of the paragraph. Type is float and specifies the size in points.
/** * The amount to indent the right side * of the paragraph. * Type is float and specifies the size in points. */
public static final Object RightIndent = new ParagraphConstants("RightIndent");
The amount of space between lines of the paragraph. Type is float and specifies the size as a factor of the line height
/** * The amount of space between lines * of the paragraph. * Type is float and specifies the size as a factor of the line height */
public static final Object LineSpacing = new ParagraphConstants("LineSpacing");
The amount of space above the paragraph. Type is float and specifies the size in points.
/** * The amount of space above the paragraph. * Type is float and specifies the size in points. */
public static final Object SpaceAbove = new ParagraphConstants("SpaceAbove");
The amount of space below the paragraph. Type is float and specifies the size in points.
/** * The amount of space below the paragraph. * Type is float and specifies the size in points. */
public static final Object SpaceBelow = new ParagraphConstants("SpaceBelow");
Alignment for the paragraph. The type is Integer. Valid values are:
  • ALIGN_LEFT
  • ALIGN_RIGHT
  • ALIGN_CENTER
  • ALIGN_JUSTIFED
/** * Alignment for the paragraph. The type is * Integer. Valid values are: * <ul> * <li>ALIGN_LEFT * <li>ALIGN_RIGHT * <li>ALIGN_CENTER * <li>ALIGN_JUSTIFED * </ul> * */
public static final Object Alignment = new ParagraphConstants("Alignment");
TabSet for the paragraph, type is a TabSet containing TabStops.
/** * TabSet for the paragraph, type is a TabSet containing * TabStops. */
public static final Object TabSet = new ParagraphConstants("TabSet");
Orientation for a paragraph.
/** * Orientation for a paragraph. */
public static final Object Orientation = new ParagraphConstants("Orientation");
A possible value for paragraph alignment. This specifies that the text is aligned to the left indent and extra whitespace should be placed on the right.
/** * A possible value for paragraph alignment. This * specifies that the text is aligned to the left * indent and extra whitespace should be placed on * the right. */
public static final int ALIGN_LEFT = 0;
A possible value for paragraph alignment. This specifies that the text is aligned to the center and extra whitespace should be placed equally on the left and right.
/** * A possible value for paragraph alignment. This * specifies that the text is aligned to the center * and extra whitespace should be placed equally on * the left and right. */
public static final int ALIGN_CENTER = 1;
A possible value for paragraph alignment. This specifies that the text is aligned to the right indent and extra whitespace should be placed on the left.
/** * A possible value for paragraph alignment. This * specifies that the text is aligned to the right * indent and extra whitespace should be placed on * the left. */
public static final int ALIGN_RIGHT = 2;
A possible value for paragraph alignment. This specifies that extra whitespace should be spread out through the rows of the paragraph with the text lined up with the left and right indent except on the last line which should be aligned to the left.
/** * A possible value for paragraph alignment. This * specifies that extra whitespace should be spread * out through the rows of the paragraph with the * text lined up with the left and right indent * except on the last line which should be aligned * to the left. */
public static final int ALIGN_JUSTIFIED = 3; // --- character attribute accessors ---------------------------
Gets the BidiLevel setting.
Params:
  • a – the attribute set
Returns:the value
/** * Gets the BidiLevel setting. * * @param a the attribute set * @return the value */
public static int getBidiLevel(AttributeSet a) { Integer o = (Integer) a.getAttribute(BidiLevel); if (o != null) { return o.intValue(); } return 0; // Level 0 is base level (non-embedded) left-to-right }
Sets the BidiLevel.
Params:
  • a – the attribute set
  • o – the bidi level value
/** * Sets the BidiLevel. * * @param a the attribute set * @param o the bidi level value */
public static void setBidiLevel(MutableAttributeSet a, int o) { a.addAttribute(BidiLevel, Integer.valueOf(o)); }
Gets the component setting from the attribute list.
Params:
  • a – the attribute set
Returns:the component, null if none
/** * Gets the component setting from the attribute list. * * @param a the attribute set * @return the component, null if none */
public static Component getComponent(AttributeSet a) { return (Component) a.getAttribute(ComponentAttribute); }
Sets the component attribute.
Params:
  • a – the attribute set
  • c – the component
/** * Sets the component attribute. * * @param a the attribute set * @param c the component */
public static void setComponent(MutableAttributeSet a, Component c) { a.addAttribute(AbstractDocument.ElementNameAttribute, ComponentElementName); a.addAttribute(ComponentAttribute, c); }
Gets the icon setting from the attribute list.
Params:
  • a – the attribute set
Returns:the icon, null if none
/** * Gets the icon setting from the attribute list. * * @param a the attribute set * @return the icon, null if none */
public static Icon getIcon(AttributeSet a) { return (Icon) a.getAttribute(IconAttribute); }
Sets the icon attribute.
Params:
  • a – the attribute set
  • c – the icon
/** * Sets the icon attribute. * * @param a the attribute set * @param c the icon */
public static void setIcon(MutableAttributeSet a, Icon c) { a.addAttribute(AbstractDocument.ElementNameAttribute, IconElementName); a.addAttribute(IconAttribute, c); }
Gets the font family setting from the attribute list.
Params:
  • a – the attribute set
Returns:the font family, "Monospaced" as the default
/** * Gets the font family setting from the attribute list. * * @param a the attribute set * @return the font family, "Monospaced" as the default */
public static String getFontFamily(AttributeSet a) { String family = (String) a.getAttribute(FontFamily); if (family == null) { family = "Monospaced"; } return family; }
Sets the font attribute.
Params:
  • a – the attribute set
  • fam – the font
/** * Sets the font attribute. * * @param a the attribute set * @param fam the font */
public static void setFontFamily(MutableAttributeSet a, String fam) { a.addAttribute(FontFamily, fam); }
Gets the font size setting from the attribute list.
Params:
  • a – the attribute set
Returns:the font size, 12 as the default
/** * Gets the font size setting from the attribute list. * * @param a the attribute set * @return the font size, 12 as the default */
public static int getFontSize(AttributeSet a) { Integer size = (Integer) a.getAttribute(FontSize); if (size != null) { return size.intValue(); } return 12; }
Sets the font size attribute.
Params:
  • a – the attribute set
  • s – the font size
/** * Sets the font size attribute. * * @param a the attribute set * @param s the font size */
public static void setFontSize(MutableAttributeSet a, int s) { a.addAttribute(FontSize, Integer.valueOf(s)); }
Checks whether the bold attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the bold attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isBold(AttributeSet a) { Boolean bold = (Boolean) a.getAttribute(Bold); if (bold != null) { return bold.booleanValue(); } return false; }
Sets the bold attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the bold attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setBold(MutableAttributeSet a, boolean b) { a.addAttribute(Bold, Boolean.valueOf(b)); }
Checks whether the italic attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the italic attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isItalic(AttributeSet a) { Boolean italic = (Boolean) a.getAttribute(Italic); if (italic != null) { return italic.booleanValue(); } return false; }
Sets the italic attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the italic attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setItalic(MutableAttributeSet a, boolean b) { a.addAttribute(Italic, Boolean.valueOf(b)); }
Checks whether the underline attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the underline attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isUnderline(AttributeSet a) { Boolean underline = (Boolean) a.getAttribute(Underline); if (underline != null) { return underline.booleanValue(); } return false; }
Checks whether the strikethrough attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the strikethrough attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isStrikeThrough(AttributeSet a) { Boolean strike = (Boolean) a.getAttribute(StrikeThrough); if (strike != null) { return strike.booleanValue(); } return false; }
Checks whether the superscript attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the superscript attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isSuperscript(AttributeSet a) { Boolean superscript = (Boolean) a.getAttribute(Superscript); if (superscript != null) { return superscript.booleanValue(); } return false; }
Checks whether the subscript attribute is set.
Params:
  • a – the attribute set
Returns:true if set else false
/** * Checks whether the subscript attribute is set. * * @param a the attribute set * @return true if set else false */
public static boolean isSubscript(AttributeSet a) { Boolean subscript = (Boolean) a.getAttribute(Subscript); if (subscript != null) { return subscript.booleanValue(); } return false; }
Sets the underline attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the underline attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setUnderline(MutableAttributeSet a, boolean b) { a.addAttribute(Underline, Boolean.valueOf(b)); }
Sets the strikethrough attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the strikethrough attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setStrikeThrough(MutableAttributeSet a, boolean b) { a.addAttribute(StrikeThrough, Boolean.valueOf(b)); }
Sets the superscript attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the superscript attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setSuperscript(MutableAttributeSet a, boolean b) { a.addAttribute(Superscript, Boolean.valueOf(b)); }
Sets the subscript attribute.
Params:
  • a – the attribute set
  • b – specifies true/false for setting the attribute
/** * Sets the subscript attribute. * * @param a the attribute set * @param b specifies true/false for setting the attribute */
public static void setSubscript(MutableAttributeSet a, boolean b) { a.addAttribute(Subscript, Boolean.valueOf(b)); }
Gets the foreground color setting from the attribute list.
Params:
  • a – the attribute set
Returns:the color, Color.black as the default
/** * Gets the foreground color setting from the attribute list. * * @param a the attribute set * @return the color, Color.black as the default */
public static Color getForeground(AttributeSet a) { Color fg = (Color) a.getAttribute(Foreground); if (fg == null) { fg = Color.black; } return fg; }
Sets the foreground color.
Params:
  • a – the attribute set
  • fg – the color
/** * Sets the foreground color. * * @param a the attribute set * @param fg the color */
public static void setForeground(MutableAttributeSet a, Color fg) { a.addAttribute(Foreground, fg); }
Gets the background color setting from the attribute list.
Params:
  • a – the attribute set
Returns:the color, Color.black as the default
/** * Gets the background color setting from the attribute list. * * @param a the attribute set * @return the color, Color.black as the default */
public static Color getBackground(AttributeSet a) { Color fg = (Color) a.getAttribute(Background); if (fg == null) { fg = Color.black; } return fg; }
Sets the background color.
Params:
  • a – the attribute set
  • fg – the color
/** * Sets the background color. * * @param a the attribute set * @param fg the color */
public static void setBackground(MutableAttributeSet a, Color fg) { a.addAttribute(Background, fg); } // --- paragraph attribute accessors ----------------------------
Gets the first line indent setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the first line indent setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getFirstLineIndent(AttributeSet a) { Float indent = (Float) a.getAttribute(FirstLineIndent); if (indent != null) { return indent.floatValue(); } return 0; }
Sets the first line indent.
Params:
  • a – the attribute set
  • i – the value
/** * Sets the first line indent. * * @param a the attribute set * @param i the value */
public static void setFirstLineIndent(MutableAttributeSet a, float i) { a.addAttribute(FirstLineIndent, Float.valueOf(i)); }
Gets the right indent setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the right indent setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getRightIndent(AttributeSet a) { Float indent = (Float) a.getAttribute(RightIndent); if (indent != null) { return indent.floatValue(); } return 0; }
Sets right indent.
Params:
  • a – the attribute set
  • i – the value
/** * Sets right indent. * * @param a the attribute set * @param i the value */
public static void setRightIndent(MutableAttributeSet a, float i) { a.addAttribute(RightIndent, Float.valueOf(i)); }
Gets the left indent setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the left indent setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getLeftIndent(AttributeSet a) { Float indent = (Float) a.getAttribute(LeftIndent); if (indent != null) { return indent.floatValue(); } return 0; }
Sets left indent.
Params:
  • a – the attribute set
  • i – the value
/** * Sets left indent. * * @param a the attribute set * @param i the value */
public static void setLeftIndent(MutableAttributeSet a, float i) { a.addAttribute(LeftIndent, Float.valueOf(i)); }
Gets the line spacing setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the line spacing setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getLineSpacing(AttributeSet a) { Float space = (Float) a.getAttribute(LineSpacing); if (space != null) { return space.floatValue(); } return 0; }
Sets line spacing.
Params:
  • a – the attribute set
  • i – the value
/** * Sets line spacing. * * @param a the attribute set * @param i the value */
public static void setLineSpacing(MutableAttributeSet a, float i) { a.addAttribute(LineSpacing, Float.valueOf(i)); }
Gets the space above setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the space above setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getSpaceAbove(AttributeSet a) { Float space = (Float) a.getAttribute(SpaceAbove); if (space != null) { return space.floatValue(); } return 0; }
Sets space above.
Params:
  • a – the attribute set
  • i – the value
/** * Sets space above. * * @param a the attribute set * @param i the value */
public static void setSpaceAbove(MutableAttributeSet a, float i) { a.addAttribute(SpaceAbove, Float.valueOf(i)); }
Gets the space below setting.
Params:
  • a – the attribute set
Returns:the value, 0 if not set
/** * Gets the space below setting. * * @param a the attribute set * @return the value, 0 if not set */
public static float getSpaceBelow(AttributeSet a) { Float space = (Float) a.getAttribute(SpaceBelow); if (space != null) { return space.floatValue(); } return 0; }
Sets space below.
Params:
  • a – the attribute set
  • i – the value
/** * Sets space below. * * @param a the attribute set * @param i the value */
public static void setSpaceBelow(MutableAttributeSet a, float i) { a.addAttribute(SpaceBelow, Float.valueOf(i)); }
Gets the alignment setting.
Params:
  • a – the attribute set
Returns:the value StyleConstants.ALIGN_LEFT if not set
/** * Gets the alignment setting. * * @param a the attribute set * @return the value <code>StyleConstants.ALIGN_LEFT</code> if not set */
public static int getAlignment(AttributeSet a) { Integer align = (Integer) a.getAttribute(Alignment); if (align != null) { return align.intValue(); } return ALIGN_LEFT; }
Sets alignment.
Params:
  • a – the attribute set
  • align – the alignment value
/** * Sets alignment. * * @param a the attribute set * @param align the alignment value */
public static void setAlignment(MutableAttributeSet a, int align) { a.addAttribute(Alignment, Integer.valueOf(align)); }
Gets the TabSet.
Params:
  • a – the attribute set
Returns:the TabSet
/** * Gets the TabSet. * * @param a the attribute set * @return the <code>TabSet</code> */
public static TabSet getTabSet(AttributeSet a) { TabSet tabs = (TabSet)a.getAttribute(TabSet); // PENDING: should this return a default? return tabs; }
Sets the TabSet.
Params:
  • a – the attribute set.
  • tabs – the TabSet
/** * Sets the TabSet. * * @param a the attribute set. * @param tabs the TabSet */
public static void setTabSet(MutableAttributeSet a, TabSet tabs) { a.addAttribute(TabSet, tabs); } // --- privates --------------------------------------------- static Object[] keys = { NameAttribute, ResolveAttribute, BidiLevel, FontFamily, FontSize, Bold, Italic, Underline, StrikeThrough, Superscript, Subscript, Foreground, Background, ComponentAttribute, IconAttribute, FirstLineIndent, LeftIndent, RightIndent, LineSpacing, SpaceAbove, SpaceBelow, Alignment, TabSet, Orientation, ModelAttribute, ComposedTextAttribute }; StyleConstants(String representation) { this.representation = representation; } private String representation;
This is a typesafe enumeration of the well-known attributes that contribute to a paragraph style. These are aliased by the outer class for general presentation.
/** * This is a typesafe enumeration of the <em>well-known</em> * attributes that contribute to a paragraph style. These are * aliased by the outer class for general presentation. */
public static class ParagraphConstants extends StyleConstants implements AttributeSet.ParagraphAttribute { private ParagraphConstants(String representation) { super(representation); } }
This is a typesafe enumeration of the well-known attributes that contribute to a character style. These are aliased by the outer class for general presentation.
/** * This is a typesafe enumeration of the <em>well-known</em> * attributes that contribute to a character style. These are * aliased by the outer class for general presentation. */
public static class CharacterConstants extends StyleConstants implements AttributeSet.CharacterAttribute { private CharacterConstants(String representation) { super(representation); } }
This is a typesafe enumeration of the well-known attributes that contribute to a color. These are aliased by the outer class for general presentation.
/** * This is a typesafe enumeration of the <em>well-known</em> * attributes that contribute to a color. These are aliased * by the outer class for general presentation. */
public static class ColorConstants extends StyleConstants implements AttributeSet.ColorAttribute, AttributeSet.CharacterAttribute { private ColorConstants(String representation) { super(representation); } }
This is a typesafe enumeration of the well-known attributes that contribute to a font. These are aliased by the outer class for general presentation.
/** * This is a typesafe enumeration of the <em>well-known</em> * attributes that contribute to a font. These are aliased * by the outer class for general presentation. */
public static class FontConstants extends StyleConstants implements AttributeSet.FontAttribute, AttributeSet.CharacterAttribute { private FontConstants(String representation) { super(representation); } } }