< prev index next >

src/java.desktop/share/classes/java/awt/font/TextAttribute.java

Print this page

        

*** 45,58 **** import java.util.Map; import java.util.HashMap; import jdk.internal.misc.SharedSecrets; /** ! * The <code>TextAttribute</code> class defines attribute keys and * attribute values used for text rendering. * <p> ! * <code>TextAttribute</code> instances are used as attribute keys to * identify attributes in * {@link java.awt.Font Font}, * {@link java.awt.font.TextLayout TextLayout}, * {@link java.text.AttributedCharacterIterator AttributedCharacterIterator}, * and other classes handling text attributes. Other constants defined --- 45,58 ---- import java.util.Map; import java.util.HashMap; import jdk.internal.misc.SharedSecrets; /** ! * The {@code TextAttribute} class defines attribute keys and * attribute values used for text rendering. * <p> ! * {@code TextAttribute} instances are used as attribute keys to * identify attributes in * {@link java.awt.Font Font}, * {@link java.awt.font.TextLayout TextLayout}, * {@link java.text.AttributedCharacterIterator AttributedCharacterIterator}, * and other classes handling text attributes. Other constants defined
*** 71,97 **** * <UL> * <LI>The values of attributes must always be immutable. * <LI>Where value limitations are given, any value outside of that * set is reserved for future use; the value will be treated as * the default. ! * <LI>The value <code>null</code> is treated the same as the * default value and results in the default behavior. * <li>If the value is not of the proper type, the attribute * will be ignored. * <li>The identity of the value does not matter, only the actual ! * value. For example, <code>TextAttribute.WEIGHT_BOLD</code> and ! * <code>new Float(2.0)</code> ! * indicate the same <code>WEIGHT</code>. ! * <li>Attribute values of type <code>Number</code> (used for ! * <code>WEIGHT</code>, <code>WIDTH</code>, <code>POSTURE</code>, ! * <code>SIZE</code>, <code>JUSTIFICATION</code>, and ! * <code>TRACKING</code>) can vary along their natural range and are * not restricted to the predefined constants. ! * <code>Number.floatValue()</code> is used to get the actual value ! * from the <code>Number</code>. ! * <li>The values for <code>WEIGHT</code>, <code>WIDTH</code>, and ! * <code>POSTURE</code> are interpolated by the system, which * can select the 'nearest available' font or use other techniques to * approximate the user's request. * * </UL> * --- 71,97 ---- * <UL> * <LI>The values of attributes must always be immutable. * <LI>Where value limitations are given, any value outside of that * set is reserved for future use; the value will be treated as * the default. ! * <LI>The value {@code null} is treated the same as the * default value and results in the default behavior. * <li>If the value is not of the proper type, the attribute * will be ignored. * <li>The identity of the value does not matter, only the actual ! * value. For example, {@code TextAttribute.WEIGHT_BOLD} and ! * {@code new Float(2.0)} ! * indicate the same {@code WEIGHT}. ! * <li>Attribute values of type {@code Number} (used for ! * {@code WEIGHT}, {@code WIDTH}, {@code POSTURE}, ! * {@code SIZE}, {@code JUSTIFICATION}, and ! * {@code TRACKING}) can vary along their natural range and are * not restricted to the predefined constants. ! * {@code Number.floatValue()} is used to get the actual value ! * from the {@code Number}. ! * <li>The values for {@code WEIGHT}, {@code WIDTH}, and ! * {@code POSTURE} are interpolated by the system, which * can select the 'nearest available' font or use other techniques to * approximate the user's request. * * </UL> *
*** 264,276 **** SharedSecrets.setJavaAWTFontAccess(new JavaAWTFontAccessImpl()); } } /** ! * Constructs a <code>TextAttribute</code> with the specified name. * @param name the attribute name to assign to this ! * <code>TextAttribute</code> */ protected TextAttribute(String name) { super(name); if (this.getClass() == TextAttribute.class) { instanceMap.put(name, this); --- 264,276 ---- SharedSecrets.setJavaAWTFontAccess(new JavaAWTFontAccessImpl()); } } /** ! * Constructs a {@code TextAttribute} with the specified name. * @param name the attribute name to assign to this ! * {@code TextAttribute} */ protected TextAttribute(String name) { super(name); if (this.getClass() == TextAttribute.class) { instanceMap.put(name, this);
*** 304,327 **** // For use with Font. // /** * Attribute key for the font name. Values are instances of ! * <b><code>String</code></b>. The default value is ! * <code>"Default"</code>, which causes the platform default font * family to be used. * ! * <p> The <code>Font</code> class defines constants for the logical * font names * {@link java.awt.Font#DIALOG DIALOG}, * {@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT}, * {@link java.awt.Font#SANS_SERIF SANS_SERIF}, * {@link java.awt.Font#SERIF SERIF}, and * {@link java.awt.Font#MONOSPACED MONOSPACED}. * ! * <p>This defines the value passed as <code>name</code> to the ! * <code>Font</code> constructor. Both logical and physical * font names are allowed. If a font with the requested name * is not found, the default font is used. * * <p><em>Note:</em> This attribute is unfortunately misnamed, as * it specifies the face name and not just the family. Thus --- 304,327 ---- // For use with Font. // /** * Attribute key for the font name. Values are instances of ! * <b>{@code String}</b>. The default value is ! * {@code "Default"}, which causes the platform default font * family to be used. * ! * <p> The {@code Font} class defines constants for the logical * font names * {@link java.awt.Font#DIALOG DIALOG}, * {@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT}, * {@link java.awt.Font#SANS_SERIF SANS_SERIF}, * {@link java.awt.Font#SERIF SERIF}, and * {@link java.awt.Font#MONOSPACED MONOSPACED}. * ! * <p>This defines the value passed as {@code name} to the ! * {@code Font} constructor. Both logical and physical * font names are allowed. If a font with the requested name * is not found, the default font is used. * * <p><em>Note:</em> This attribute is unfortunately misnamed, as * it specifies the face name and not just the family. Thus
*** 334,355 **** public static final TextAttribute FAMILY = new TextAttribute("family"); /** * Attribute key for the weight of a font. Values are instances ! * of <b><code>Number</code></b>. The default value is ! * <code>WEIGHT_REGULAR</code>. * * <p>Several constant values are provided, see {@link * #WEIGHT_EXTRA_LIGHT}, {@link #WEIGHT_LIGHT}, {@link * #WEIGHT_DEMILIGHT}, {@link #WEIGHT_REGULAR}, {@link * #WEIGHT_SEMIBOLD}, {@link #WEIGHT_MEDIUM}, {@link * #WEIGHT_DEMIBOLD}, {@link #WEIGHT_BOLD}, {@link #WEIGHT_HEAVY}, * {@link #WEIGHT_EXTRABOLD}, and {@link #WEIGHT_ULTRABOLD}. The ! * value <code>WEIGHT_BOLD</code> corresponds to the ! * style value <code>Font.BOLD</code> as passed to the ! * <code>Font</code> constructor. * * <p>The value is roughly the ratio of the stem width to that of * the regular weight. * * <p>The system can interpolate the provided value. --- 334,355 ---- public static final TextAttribute FAMILY = new TextAttribute("family"); /** * Attribute key for the weight of a font. Values are instances ! * of <b>{@code Number}</b>. The default value is ! * {@code WEIGHT_REGULAR}. * * <p>Several constant values are provided, see {@link * #WEIGHT_EXTRA_LIGHT}, {@link #WEIGHT_LIGHT}, {@link * #WEIGHT_DEMILIGHT}, {@link #WEIGHT_REGULAR}, {@link * #WEIGHT_SEMIBOLD}, {@link #WEIGHT_MEDIUM}, {@link * #WEIGHT_DEMIBOLD}, {@link #WEIGHT_BOLD}, {@link #WEIGHT_HEAVY}, * {@link #WEIGHT_EXTRABOLD}, and {@link #WEIGHT_ULTRABOLD}. The ! * value {@code WEIGHT_BOLD} corresponds to the ! * style value {@code Font.BOLD} as passed to the ! * {@code Font} constructor. * * <p>The value is roughly the ratio of the stem width to that of * the regular weight. * * <p>The system can interpolate the provided value.
*** 370,410 **** */ public static final Float WEIGHT_LIGHT = Float.valueOf(0.75f); /** ! * An intermediate weight between <code>WEIGHT_LIGHT</code> and ! * <code>WEIGHT_STANDARD</code>. * @see #WEIGHT */ public static final Float WEIGHT_DEMILIGHT = Float.valueOf(0.875f); /** ! * The standard weight. This is the default value for <code>WEIGHT</code>. * @see #WEIGHT */ public static final Float WEIGHT_REGULAR = Float.valueOf(1.0f); /** ! * A moderately heavier weight than <code>WEIGHT_REGULAR</code>. * @see #WEIGHT */ public static final Float WEIGHT_SEMIBOLD = Float.valueOf(1.25f); /** ! * An intermediate weight between <code>WEIGHT_REGULAR</code> and ! * <code>WEIGHT_BOLD</code>. * @see #WEIGHT */ public static final Float WEIGHT_MEDIUM = Float.valueOf(1.5f); /** ! * A moderately lighter weight than <code>WEIGHT_BOLD</code>. * @see #WEIGHT */ public static final Float WEIGHT_DEMIBOLD = Float.valueOf(1.75f); --- 370,410 ---- */ public static final Float WEIGHT_LIGHT = Float.valueOf(0.75f); /** ! * An intermediate weight between {@code WEIGHT_LIGHT} and ! * {@code WEIGHT_STANDARD}. * @see #WEIGHT */ public static final Float WEIGHT_DEMILIGHT = Float.valueOf(0.875f); /** ! * The standard weight. This is the default value for {@code WEIGHT}. * @see #WEIGHT */ public static final Float WEIGHT_REGULAR = Float.valueOf(1.0f); /** ! * A moderately heavier weight than {@code WEIGHT_REGULAR}. * @see #WEIGHT */ public static final Float WEIGHT_SEMIBOLD = Float.valueOf(1.25f); /** ! * An intermediate weight between {@code WEIGHT_REGULAR} and ! * {@code WEIGHT_BOLD}. * @see #WEIGHT */ public static final Float WEIGHT_MEDIUM = Float.valueOf(1.5f); /** ! * A moderately lighter weight than {@code WEIGHT_BOLD}. * @see #WEIGHT */ public static final Float WEIGHT_DEMIBOLD = Float.valueOf(1.75f);
*** 414,424 **** */ public static final Float WEIGHT_BOLD = Float.valueOf(2.0f); /** ! * A moderately heavier weight than <code>WEIGHT_BOLD</code>. * @see #WEIGHT */ public static final Float WEIGHT_HEAVY = Float.valueOf(2.25f); --- 414,424 ---- */ public static final Float WEIGHT_BOLD = Float.valueOf(2.0f); /** ! * A moderately heavier weight than {@code WEIGHT_BOLD}. * @see #WEIGHT */ public static final Float WEIGHT_HEAVY = Float.valueOf(2.25f);
*** 436,447 **** public static final Float WEIGHT_ULTRABOLD = Float.valueOf(2.75f); /** * Attribute key for the width of a font. Values are instances of ! * <b><code>Number</code></b>. The default value is ! * <code>WIDTH_REGULAR</code>. * * <p>Several constant values are provided, see {@link * #WIDTH_CONDENSED}, {@link #WIDTH_SEMI_CONDENSED}, {@link * #WIDTH_REGULAR}, {@link #WIDTH_SEMI_EXTENDED}, {@link * #WIDTH_EXTENDED}. --- 436,447 ---- public static final Float WEIGHT_ULTRABOLD = Float.valueOf(2.75f); /** * Attribute key for the width of a font. Values are instances of ! * <b>{@code Number}</b>. The default value is ! * {@code WIDTH_REGULAR}. * * <p>Several constant values are provided, see {@link * #WIDTH_CONDENSED}, {@link #WIDTH_SEMI_CONDENSED}, {@link * #WIDTH_REGULAR}, {@link #WIDTH_SEMI_EXTENDED}, {@link * #WIDTH_EXTENDED}.
*** 468,478 **** public static final Float WIDTH_SEMI_CONDENSED = Float.valueOf(0.875f); /** * The standard width. This is the default value for ! * <code>WIDTH</code>. * @see #WIDTH */ public static final Float WIDTH_REGULAR = Float.valueOf(1.0f); --- 468,478 ---- public static final Float WIDTH_SEMI_CONDENSED = Float.valueOf(0.875f); /** * The standard width. This is the default value for ! * {@code WIDTH}. * @see #WIDTH */ public static final Float WIDTH_REGULAR = Float.valueOf(1.0f);
*** 490,524 **** public static final Float WIDTH_EXTENDED = Float.valueOf(1.5f); /** * Attribute key for the posture of a font. Values are instances ! * of <b><code>Number</code></b>. The default value is ! * <code>POSTURE_REGULAR</code>. * * <p>Two constant values are provided, {@link #POSTURE_REGULAR} * and {@link #POSTURE_OBLIQUE}. The value ! * <code>POSTURE_OBLIQUE</code> corresponds to the style value ! * <code>Font.ITALIC</code> as passed to the <code>Font</code> * constructor. * * <p>The value is roughly the slope of the stems of the font, * expressed as the run over the rise. Positive values lean right. * * <p>The system can interpolate the provided value. * * <p>This will affect the font's italic angle as returned by ! * <code>Font.getItalicAngle</code>. * * @see java.awt.Font#getItalicAngle() */ public static final TextAttribute POSTURE = new TextAttribute("posture"); /** * The standard posture, upright. This is the default value for ! * <code>POSTURE</code>. * @see #POSTURE */ public static final Float POSTURE_REGULAR = Float.valueOf(0.0f); --- 490,524 ---- public static final Float WIDTH_EXTENDED = Float.valueOf(1.5f); /** * Attribute key for the posture of a font. Values are instances ! * of <b>{@code Number}</b>. The default value is ! * {@code POSTURE_REGULAR}. * * <p>Two constant values are provided, {@link #POSTURE_REGULAR} * and {@link #POSTURE_OBLIQUE}. The value ! * {@code POSTURE_OBLIQUE} corresponds to the style value ! * {@code Font.ITALIC} as passed to the {@code Font} * constructor. * * <p>The value is roughly the slope of the stems of the font, * expressed as the run over the rise. Positive values lean right. * * <p>The system can interpolate the provided value. * * <p>This will affect the font's italic angle as returned by ! * {@code Font.getItalicAngle}. * * @see java.awt.Font#getItalicAngle() */ public static final TextAttribute POSTURE = new TextAttribute("posture"); /** * The standard posture, upright. This is the default value for ! * {@code POSTURE}. * @see #POSTURE */ public static final Float POSTURE_REGULAR = Float.valueOf(0.0f);
*** 529,542 **** public static final Float POSTURE_OBLIQUE = Float.valueOf(0.20f); /** * Attribute key for the font size. Values are instances of ! * <b><code>Number</code></b>. The default value is 12pt. * ! * <p>This corresponds to the <code>size</code> parameter to the ! * <code>Font</code> constructor. * * <p>Very large or small sizes will impact rendering performance, * and the rendering system might not render text at these sizes. * Negative sizes are illegal and result in the default size. * --- 529,542 ---- public static final Float POSTURE_OBLIQUE = Float.valueOf(0.20f); /** * Attribute key for the font size. Values are instances of ! * <b>{@code Number}</b>. The default value is 12pt. * ! * <p>This corresponds to the {@code size} parameter to the ! * {@code Font} constructor. * * <p>Very large or small sizes will impact rendering performance, * and the rendering system might not render text at these sizes. * Negative sizes are illegal and result in the default size. *
*** 547,566 **** public static final TextAttribute SIZE = new TextAttribute("size"); /** * Attribute key for the transform of a font. Values are ! * instances of <b><code>TransformAttribute</code></b>. The ! * default value is <code>TransformAttribute.IDENTITY</code>. * ! * <p>The <code>TransformAttribute</code> class defines the * constant {@link TransformAttribute#IDENTITY IDENTITY}. * * <p>This corresponds to the transform passed to ! * <code>Font.deriveFont(AffineTransform)</code>. Since that ! * transform is mutable and <code>TextAttribute</code> values must ! * not be, the <code>TransformAttribute</code> wrapper class is * used. * * <p>The primary intent is to support scaling and skewing, though * other effects are possible.</p> * --- 547,566 ---- public static final TextAttribute SIZE = new TextAttribute("size"); /** * Attribute key for the transform of a font. Values are ! * instances of <b>{@code TransformAttribute}</b>. The ! * default value is {@code TransformAttribute.IDENTITY}. * ! * <p>The {@code TransformAttribute} class defines the * constant {@link TransformAttribute#IDENTITY IDENTITY}. * * <p>This corresponds to the transform passed to ! * {@code Font.deriveFont(AffineTransform)}. Since that ! * transform is mutable and {@code TextAttribute} values must ! * not be, the {@code TransformAttribute} wrapper class is * used. * * <p>The primary intent is to support scaling and skewing, though * other effects are possible.</p> *
*** 585,595 **** public static final TextAttribute TRANSFORM = new TextAttribute("transform"); /** * Attribute key for superscripting and subscripting. Values are ! * instances of <b><code>Integer</code></b>. The default value is * 0, which means that no superscript or subscript is used. * * <p>Two constant values are provided, see {@link * #SUPERSCRIPT_SUPER} and {@link #SUPERSCRIPT_SUB}. These have * the values 1 and -1 respectively. Values of --- 585,595 ---- public static final TextAttribute TRANSFORM = new TextAttribute("transform"); /** * Attribute key for superscripting and subscripting. Values are ! * instances of <b>{@code Integer}</b>. The default value is * 0, which means that no superscript or subscript is used. * * <p>Two constant values are provided, see {@link * #SUPERSCRIPT_SUPER} and {@link #SUPERSCRIPT_SUB}. These have * the values 1 and -1 respectively. Values of
*** 597,607 **** * subscripting, for example, 2 corresponds to super-superscript, * 3 to super-super-superscript, and similarly for negative values * and subscript, up to a level of 7 (or -7). Values beyond this * range are reserved; behavior is platform-dependent. * ! * <p><code>SUPERSCRIPT</code> can * impact the ascent and descent of a font. The ascent * and descent can never become negative, however. */ public static final TextAttribute SUPERSCRIPT = new TextAttribute("superscript"); --- 597,607 ---- * subscripting, for example, 2 corresponds to super-superscript, * 3 to super-super-superscript, and similarly for negative values * and subscript, up to a level of 7 (or -7). Values beyond this * range are reserved; behavior is platform-dependent. * ! * <p>{@code SUPERSCRIPT} can * impact the ascent and descent of a font. The ascent * and descent can never become negative, however. */ public static final TextAttribute SUPERSCRIPT = new TextAttribute("superscript");
*** 622,684 **** /** * Attribute key used to provide the font to use to render text. * Values are instances of {@link java.awt.Font}. The default * value is null, indicating that normal resolution of a ! * <code>Font</code> from attributes should be performed. * ! * <p><code>TextLayout</code> and ! * <code>AttributedCharacterIterator</code> work in terms of ! * <code>Maps</code> of <code>TextAttributes</code>. Normally, * all the attributes are examined and used to select and ! * configure a <code>Font</code> instance. If a <code>FONT</code> ! * attribute is present, though, its associated <code>Font</code> * will be used. This provides a way for users to override the ! * resolution of font attributes into a <code>Font</code>, or ! * force use of a particular <code>Font</code> instance. This ! * also allows users to specify subclasses of <code>Font</code> in ! * cases where a <code>Font</code> can be subclassed. ! * ! * <p><code>FONT</code> is used for special situations where ! * clients already have a <code>Font</code> instance but still ! * need to use <code>Map</code>-based APIs. Typically, there will ! * be no other attributes in the <code>Map</code> except the ! * <code>FONT</code> attribute. With <code>Map</code>-based APIs * the common case is to specify all attributes individually, so ! * <code>FONT</code> is not needed or desirable. * ! * <p>However, if both <code>FONT</code> and other attributes are ! * present in the <code>Map</code>, the rendering system will ! * merge the attributes defined in the <code>Font</code> with the * additional attributes. This merging process classifies ! * <code>TextAttributes</code> into two groups. One group, the * 'primary' group, is considered fundamental to the selection and * metric behavior of a font. These attributes are ! * <code>FAMILY</code>, <code>WEIGHT</code>, <code>WIDTH</code>, ! * <code>POSTURE</code>, <code>SIZE</code>, ! * <code>TRANSFORM</code>, <code>SUPERSCRIPT</code>, and ! * <code>TRACKING</code>. The other group, the 'secondary' group, * consists of all other defined attributes, with the exception of ! * <code>FONT</code> itself. * ! * <p>To generate the new <code>Map</code>, first the ! * <code>Font</code> is obtained from the <code>FONT</code> * attribute, and <em>all</em> of its attributes extracted into a ! * new <code>Map</code>. Then only the <em>secondary</em> ! * attributes from the original <code>Map</code> are added to ! * those in the new <code>Map</code>. Thus the values of primary ! * attributes come solely from the <code>Font</code>, and the * values of secondary attributes originate with the ! * <code>Font</code> but can be overridden by other values in the ! * <code>Map</code>. * ! * <p><em>Note:</em><code>Font's</code> <code>Map</code>-based ! * constructor and <code>deriveFont</code> methods do not process ! * the <code>FONT</code> attribute, as these are used to create ! * new <code>Font</code> objects. Instead, {@link * java.awt.Font#getFont(Map) Font.getFont(Map)} should be used to ! * handle the <code>FONT</code> attribute. * * @see java.awt.Font */ public static final TextAttribute FONT = new TextAttribute("font"); --- 622,684 ---- /** * Attribute key used to provide the font to use to render text. * Values are instances of {@link java.awt.Font}. The default * value is null, indicating that normal resolution of a ! * {@code Font} from attributes should be performed. * ! * <p>{@code TextLayout} and ! * {@code AttributedCharacterIterator} work in terms of ! * {@code Maps} of {@code TextAttributes}. Normally, * all the attributes are examined and used to select and ! * configure a {@code Font} instance. If a {@code FONT} ! * attribute is present, though, its associated {@code Font} * will be used. This provides a way for users to override the ! * resolution of font attributes into a {@code Font}, or ! * force use of a particular {@code Font} instance. This ! * also allows users to specify subclasses of {@code Font} in ! * cases where a {@code Font} can be subclassed. ! * ! * <p>{@code FONT} is used for special situations where ! * clients already have a {@code Font} instance but still ! * need to use {@code Map}-based APIs. Typically, there will ! * be no other attributes in the {@code Map} except the ! * {@code FONT} attribute. With {@code Map}-based APIs * the common case is to specify all attributes individually, so ! * {@code FONT} is not needed or desirable. * ! * <p>However, if both {@code FONT} and other attributes are ! * present in the {@code Map}, the rendering system will ! * merge the attributes defined in the {@code Font} with the * additional attributes. This merging process classifies ! * {@code TextAttributes} into two groups. One group, the * 'primary' group, is considered fundamental to the selection and * metric behavior of a font. These attributes are ! * {@code FAMILY}, {@code WEIGHT}, {@code WIDTH}, ! * {@code POSTURE}, {@code SIZE}, ! * {@code TRANSFORM}, {@code SUPERSCRIPT}, and ! * {@code TRACKING}. The other group, the 'secondary' group, * consists of all other defined attributes, with the exception of ! * {@code FONT} itself. * ! * <p>To generate the new {@code Map}, first the ! * {@code Font} is obtained from the {@code FONT} * attribute, and <em>all</em> of its attributes extracted into a ! * new {@code Map}. Then only the <em>secondary</em> ! * attributes from the original {@code Map} are added to ! * those in the new {@code Map}. Thus the values of primary ! * attributes come solely from the {@code Font}, and the * values of secondary attributes originate with the ! * {@code Font} but can be overridden by other values in the ! * {@code Map}. * ! * <p><em>Note:</em>{@code Font's Map}-based ! * constructor and {@code deriveFont} methods do not process ! * the {@code FONT} attribute, as these are used to create ! * new {@code Font} objects. Instead, {@link * java.awt.Font#getFont(Map) Font.getFont(Map)} should be used to ! * handle the {@code FONT} attribute. * * @see java.awt.Font */ public static final TextAttribute FONT = new TextAttribute("font");
*** 711,742 **** // Adornments added to text. // /** * Attribute key for the paint used to render the text. Values are ! * instances of <b><code>Paint</code></b>. The default value is ! * null, indicating that the <code>Paint</code> set on the ! * <code>Graphics2D</code> at the time of rendering is used. * * <p>Glyphs will be rendered using this ! * <code>Paint</code> regardless of the <code>Paint</code> value ! * set on the <code>Graphics</code> (but see {@link #SWAP_COLORS}). * * @see java.awt.Paint * @see #SWAP_COLORS */ public static final TextAttribute FOREGROUND = new TextAttribute("foreground"); /** * Attribute key for the paint used to render the background of ! * the text. Values are instances of <b><code>Paint</code></b>. * The default value is null, indicating that the background * should not be rendered. * * <p>The logical bounds of the text will be filled using this ! * <code>Paint</code>, and then the text will be rendered on top * of it (but see {@link #SWAP_COLORS}). * * <p>The visual bounds of the text is extended to include the * logical bounds, if necessary. The outline is not affected. * --- 711,742 ---- // Adornments added to text. // /** * Attribute key for the paint used to render the text. Values are ! * instances of <b>{@code Paint}</b>. The default value is ! * null, indicating that the {@code Paint} set on the ! * {@code Graphics2D} at the time of rendering is used. * * <p>Glyphs will be rendered using this ! * {@code Paint} regardless of the {@code Paint} value ! * set on the {@code Graphics} (but see {@link #SWAP_COLORS}). * * @see java.awt.Paint * @see #SWAP_COLORS */ public static final TextAttribute FOREGROUND = new TextAttribute("foreground"); /** * Attribute key for the paint used to render the background of ! * the text. Values are instances of <b>{@code Paint}</b>. * The default value is null, indicating that the background * should not be rendered. * * <p>The logical bounds of the text will be filled using this ! * {@code Paint}, and then the text will be rendered on top * of it (but see {@link #SWAP_COLORS}). * * <p>The visual bounds of the text is extended to include the * logical bounds, if necessary. The outline is not affected. *
*** 746,756 **** public static final TextAttribute BACKGROUND = new TextAttribute("background"); /** * Attribute key for underline. Values are instances of ! * <b><code>Integer</code></b>. The default value is -1, which * means no underline. * * <p>The constant value {@link #UNDERLINE_ON} is provided. * * <p>The underline affects both the visual bounds and the outline --- 746,756 ---- public static final TextAttribute BACKGROUND = new TextAttribute("background"); /** * Attribute key for underline. Values are instances of ! * <b>{@code Integer}</b>. The default value is -1, which * means no underline. * * <p>The constant value {@link #UNDERLINE_ON} is provided. * * <p>The underline affects both the visual bounds and the outline
*** 767,778 **** public static final Integer UNDERLINE_ON = Integer.valueOf(0); /** * Attribute key for strikethrough. Values are instances of ! * <b><code>Boolean</code></b>. The default value is ! * <code>false</code>, which means no strikethrough. * * <p>The constant value {@link #STRIKETHROUGH_ON} is provided. * * <p>The strikethrough affects both the visual bounds and the * outline of the text. --- 767,778 ---- public static final Integer UNDERLINE_ON = Integer.valueOf(0); /** * Attribute key for strikethrough. Values are instances of ! * <b>{@code Boolean}</b>. The default value is ! * {@code false}, which means no strikethrough. * * <p>The constant value {@link #STRIKETHROUGH_ON} is provided. * * <p>The strikethrough affects both the visual bounds and the * outline of the text.
*** 792,802 **** // Attributes use to control layout of text on a line. // /** * Attribute key for the run direction of the line. Values are ! * instances of <b><code>Boolean</code></b>. The default value is * null, which indicates that the standard Bidi algorithm for * determining run direction should be used with the value {@link * java.text.Bidi#DIRECTION_DEFAULT_LEFT_TO_RIGHT}. * * <p>The constants {@link #RUN_DIRECTION_RTL} and {@link --- 792,802 ---- // Attributes use to control layout of text on a line. // /** * Attribute key for the run direction of the line. Values are ! * instances of <b>{@code Boolean}</b>. The default value is * null, which indicates that the standard Bidi algorithm for * determining run direction should be used with the value {@link * java.text.Bidi#DIRECTION_DEFAULT_LEFT_TO_RIGHT}. * * <p>The constants {@link #RUN_DIRECTION_RTL} and {@link
*** 829,840 **** public static final Boolean RUN_DIRECTION_RTL = Boolean.TRUE; /** * Attribute key for the embedding level of the text. Values are ! * instances of <b><code>Integer</code></b>. The default value is ! * <code>null</code>, indicating that the Bidirectional * algorithm should run without explicit embeddings. * * <p>Positive values 1 through 61 are <em>embedding</em> levels, * negative values -1 through -61 are <em>override</em> levels. * The value 0 means that the base line direction is used. These --- 829,840 ---- public static final Boolean RUN_DIRECTION_RTL = Boolean.TRUE; /** * Attribute key for the embedding level of the text. Values are ! * instances of <b>{@code Integer}</b>. The default value is ! * {@code null}, indicating that the Bidirectional * algorithm should run without explicit embeddings. * * <p>Positive values 1 through 61 are <em>embedding</em> levels, * negative values -1 through -61 are <em>override</em> levels. * The value 0 means that the base line direction is used. These
*** 853,871 **** public static final TextAttribute BIDI_EMBEDDING = new TextAttribute("bidi_embedding"); /** * Attribute key for the justification of a paragraph. Values are ! * instances of <b><code>Number</code></b>. The default value is * 1, indicating that justification should use the full width * provided. Values are pinned to the range [0..1]. * * <p>The constants {@link #JUSTIFICATION_FULL} and {@link * #JUSTIFICATION_NONE} are provided. * * <p>Specifies the fraction of the extra space to use when ! * justification is requested on a <code>TextLayout</code>. For * example, if the line is 50 points wide and it is requested to * justify to 70 points, a value of 0.75 will pad to use * three-quarters of the remaining space, or 15 points, so that * the resulting line will be 65 points in length. * --- 853,871 ---- public static final TextAttribute BIDI_EMBEDDING = new TextAttribute("bidi_embedding"); /** * Attribute key for the justification of a paragraph. Values are ! * instances of <b>{@code Number}</b>. The default value is * 1, indicating that justification should use the full width * provided. Values are pinned to the range [0..1]. * * <p>The constants {@link #JUSTIFICATION_FULL} and {@link * #JUSTIFICATION_NONE} are provided. * * <p>Specifies the fraction of the extra space to use when ! * justification is requested on a {@code TextLayout}. For * example, if the line is 50 points wide and it is requested to * justify to 70 points, a value of 0.75 will pad to use * three-quarters of the remaining space, or 15 points, so that * the resulting line will be 65 points in length. *
*** 877,887 **** public static final TextAttribute JUSTIFICATION = new TextAttribute("justification"); /** * Justify the line to the full requested width. This is the ! * default value for <code>JUSTIFICATION</code>. * @see #JUSTIFICATION */ public static final Float JUSTIFICATION_FULL = Float.valueOf(1.0f); --- 877,887 ---- public static final TextAttribute JUSTIFICATION = new TextAttribute("justification"); /** * Justify the line to the full requested width. This is the ! * default value for {@code JUSTIFICATION}. * @see #JUSTIFICATION */ public static final Float JUSTIFICATION_FULL = Float.valueOf(1.0f);
*** 899,916 **** /** * Attribute key for input method highlight styles. * * <p>Values are instances of {@link * java.awt.im.InputMethodHighlight} or {@link ! * java.text.Annotation}. The default value is <code>null</code>, * which means that input method styles should not be applied * before rendering. * * <p>If adjacent runs of text with the same ! * <code>InputMethodHighlight</code> need to be rendered ! * separately, the <code>InputMethodHighlights</code> should be ! * wrapped in <code>Annotation</code> instances. * * <p>Input method highlights are used while text is being * composed by an input method. Text editing components should * retain them even if they generally only deal with unstyled * text, and make them available to the drawing routines. --- 899,916 ---- /** * Attribute key for input method highlight styles. * * <p>Values are instances of {@link * java.awt.im.InputMethodHighlight} or {@link ! * java.text.Annotation}. The default value is {@code null}, * which means that input method styles should not be applied * before rendering. * * <p>If adjacent runs of text with the same ! * {@code InputMethodHighlight} need to be rendered ! * separately, the {@code InputMethodHighlights} should be ! * wrapped in {@code Annotation} instances. * * <p>Input method highlights are used while text is being * composed by an input method. Text editing components should * retain them even if they generally only deal with unstyled * text, and make them available to the drawing routines.
*** 922,933 **** public static final TextAttribute INPUT_METHOD_HIGHLIGHT = new TextAttribute("input method highlight"); /** * Attribute key for input method underlines. Values ! * are instances of <b><code>Integer</code></b>. The default ! * value is <code>-1</code>, which means no underline. * * <p>Several constant values are provided, see {@link * #UNDERLINE_LOW_ONE_PIXEL}, {@link #UNDERLINE_LOW_TWO_PIXEL}, * {@link #UNDERLINE_LOW_DOTTED}, {@link #UNDERLINE_LOW_GRAY}, and * {@link #UNDERLINE_LOW_DASHED}. --- 922,933 ---- public static final TextAttribute INPUT_METHOD_HIGHLIGHT = new TextAttribute("input method highlight"); /** * Attribute key for input method underlines. Values ! * are instances of <b>{@code Integer}</b>. The default ! * value is {@code -1}, which means no underline. * * <p>Several constant values are provided, see {@link * #UNDERLINE_LOW_ONE_PIXEL}, {@link #UNDERLINE_LOW_TWO_PIXEL}, * {@link #UNDERLINE_LOW_DOTTED}, {@link #UNDERLINE_LOW_GRAY}, and * {@link #UNDERLINE_LOW_DASHED}.
*** 985,1005 **** public static final Integer UNDERLINE_LOW_DASHED = Integer.valueOf(5); /** * Attribute key for swapping foreground and background ! * <code>Paints</code>. Values are instances of ! * <b><code>Boolean</code></b>. The default value is ! * <code>false</code>, which means do not swap colors. * * <p>The constant value {@link #SWAP_COLORS_ON} is defined. * * <p>If the {@link #FOREGROUND} attribute is set, its ! * <code>Paint</code> will be used as the background, otherwise ! * the <code>Paint</code> currently on the <code>Graphics</code> * will be used. If the {@link #BACKGROUND} attribute is set, its ! * <code>Paint</code> will be used as the foreground, otherwise * the system will find a contrasting color to the * (resolved) background so that the text will be visible. * * @see #FOREGROUND * @see #BACKGROUND --- 985,1005 ---- public static final Integer UNDERLINE_LOW_DASHED = Integer.valueOf(5); /** * Attribute key for swapping foreground and background ! * {@code Paints}. Values are instances of ! * <b>{@code Boolean}</b>. The default value is ! * {@code false}, which means do not swap colors. * * <p>The constant value {@link #SWAP_COLORS_ON} is defined. * * <p>If the {@link #FOREGROUND} attribute is set, its ! * {@code Paint} will be used as the background, otherwise ! * the {@code Paint} currently on the {@code Graphics} * will be used. If the {@link #BACKGROUND} attribute is set, its ! * {@code Paint} will be used as the foreground, otherwise * the system will find a contrasting color to the * (resolved) background so that the text will be visible. * * @see #FOREGROUND * @see #BACKGROUND
*** 1016,1026 **** Boolean.TRUE; /** * Attribute key for converting ASCII decimal digits to other * decimal ranges. Values are instances of {@link NumericShaper}. ! * The default is <code>null</code>, which means do not perform * numeric shaping. * * <p>When a numeric shaper is defined, the text is first * processed by the shaper before any other analysis of the text * is performed. --- 1016,1026 ---- Boolean.TRUE; /** * Attribute key for converting ASCII decimal digits to other * decimal ranges. Values are instances of {@link NumericShaper}. ! * The default is {@code null}, which means do not perform * numeric shaping. * * <p>When a numeric shaper is defined, the text is first * processed by the shaper before any other analysis of the text * is performed.
*** 1034,1045 **** public static final TextAttribute NUMERIC_SHAPING = new TextAttribute("numeric_shaping"); /** * Attribute key to request kerning. Values are instances of ! * <b><code>Integer</code></b>. The default value is ! * <code>0</code>, which does not request kerning. * * <p>The constant value {@link #KERNING_ON} is provided. * * <p>The default advances of single characters are not * appropriate for some character sequences, for example "To" or --- 1034,1045 ---- public static final TextAttribute NUMERIC_SHAPING = new TextAttribute("numeric_shaping"); /** * Attribute key to request kerning. Values are instances of ! * <b>{@code Integer}</b>. The default value is ! * {@code 0}, which does not request kerning. * * <p>The constant value {@link #KERNING_ON} is provided. * * <p>The default advances of single characters are not * appropriate for some character sequences, for example "To" or
*** 1062,1073 **** Integer.valueOf(1); /** * Attribute key for enabling optional ligatures. Values are ! * instances of <b><code>Integer</code></b>. The default value is ! * <code>0</code>, which means do not use optional ligatures. * * <p>The constant value {@link #LIGATURES_ON} is defined. * * <p>Ligatures required by the writing system are always enabled. * --- 1062,1073 ---- Integer.valueOf(1); /** * Attribute key for enabling optional ligatures. Values are ! * instances of <b>{@code Integer}</b>. The default value is ! * {@code 0}, which means do not use optional ligatures. * * <p>The constant value {@link #LIGATURES_ON} is defined. * * <p>Ligatures required by the writing system are always enabled. *
*** 1084,1105 **** public static final Integer LIGATURES_ON = Integer.valueOf(1); /** * Attribute key to control tracking. Values are instances of ! * <b><code>Number</code></b>. The default value is ! * <code>0</code>, which means no additional tracking. * * <p>The constant values {@link #TRACKING_TIGHT} and {@link * #TRACKING_LOOSE} are provided. * * <p>The tracking value is multiplied by the font point size and * passed through the font transform to determine an additional * amount to add to the advance of each glyph cluster. Positive * tracking values will inhibit formation of optional ligatures. ! * Tracking values are typically between <code>-0.1</code> and ! * <code>0.3</code>; values outside this range are generally not * desirable. * * @since 1.6 */ public static final TextAttribute TRACKING = --- 1084,1105 ---- public static final Integer LIGATURES_ON = Integer.valueOf(1); /** * Attribute key to control tracking. Values are instances of ! * <b>{@code Number}</b>. The default value is ! * {@code 0}, which means no additional tracking. * * <p>The constant values {@link #TRACKING_TIGHT} and {@link * #TRACKING_LOOSE} are provided. * * <p>The tracking value is multiplied by the font point size and * passed through the font transform to determine an additional * amount to add to the advance of each glyph cluster. Positive * tracking values will inhibit formation of optional ligatures. ! * Tracking values are typically between {@code -0.1} and ! * {@code 0.3}; values outside this range are generally not * desirable. * * @since 1.6 */ public static final TextAttribute TRACKING =
< prev index next >