< prev index next >

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

Print this page




  79  *   will be ignored.
  80  *   <li>The identity of the value does not matter, only the actual
  81  *   value.  For example, {@code TextAttribute.WEIGHT_BOLD} and
  82  *   {@code Float.valueOf(2.0f)}
  83  *   indicate the same {@code WEIGHT}.
  84  *   <li>Attribute values of type {@code Number} (used for
  85  *   {@code WEIGHT}, {@code WIDTH}, {@code POSTURE},
  86  *   {@code SIZE}, {@code JUSTIFICATION}, and
  87  *   {@code TRACKING}) can vary along their natural range and are
  88  *   not restricted to the predefined constants.
  89  *   {@code Number.floatValue()} is used to get the actual value
  90  *   from the {@code Number}.
  91  *   <li>The values for {@code WEIGHT}, {@code WIDTH}, and
  92  *   {@code POSTURE} are interpolated by the system, which
  93  *   can select the 'nearest available' font or use other techniques to
  94  *   approximate the user's request.
  95  *
  96  * </UL>
  97  *
  98  * <h4>Summary of attributes</h4>
  99  * <table style="float:center;width:95%" border="0" cellspacing="0" cellpadding="2"
 100  *     summary="Key, value type, principal constants, and default value
 101  *     behavior of all TextAttributes">
 102  * <tr style="background-color:#ccccff">

 103  * <th valign="TOP" style="text-align:center">Key</th>
 104  * <th valign="TOP" style="text-align:center">Value Type</th>
 105  * <th valign="TOP" style="text-align:center">Principal Constants</th>
 106  * <th valign="TOP" style="text-align:center">Default Value</th>
 107  * </tr>


 108  * <tr>
 109  * <td valign="TOP">{@link #FAMILY}</td>
 110  * <td valign="TOP">String</td>
 111  * <td valign="TOP">See Font {@link java.awt.Font#DIALOG DIALOG},
 112  * {@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT},<br> {@link java.awt.Font#SERIF SERIF},
 113  * {@link java.awt.Font#SANS_SERIF SANS_SERIF}, and {@link java.awt.Font#MONOSPACED MONOSPACED}.
 114  * </td>
 115  * <td valign="TOP">"Default" (use platform default)</td>
 116  * </tr>
 117  * <tr style="background-color:#eeeeff">
 118  * <td valign="TOP">{@link #WEIGHT}</td>
 119  * <td valign="TOP">Number</td>
 120  * <td valign="TOP">WEIGHT_REGULAR, WEIGHT_BOLD</td>
 121  * <td valign="TOP">WEIGHT_REGULAR</td>
 122  * </tr>
 123  * <tr>
 124  * <td valign="TOP">{@link #WIDTH}</td>
 125  * <td valign="TOP">Number</td>
 126  * <td valign="TOP">WIDTH_CONDENSED, WIDTH_REGULAR,<br>WIDTH_EXTENDED</td>
 127  * <td valign="TOP">WIDTH_REGULAR</td>
 128  * </tr>
 129  * <tr style="background-color:#eeeeff">
 130  * <td valign="TOP">{@link #POSTURE}</td>
 131  * <td valign="TOP">Number</td>
 132  * <td valign="TOP">POSTURE_REGULAR, POSTURE_OBLIQUE</td>
 133  * <td valign="TOP">POSTURE_REGULAR</td>
 134  * </tr>
 135  * <tr>
 136  * <td valign="TOP">{@link #SIZE}</td>
 137  * <td valign="TOP">Number</td>
 138  * <td valign="TOP">none</td>
 139  * <td valign="TOP">12.0</td>
 140  * </tr>
 141  * <tr style="background-color:#eeeeff">
 142  * <td valign="TOP">{@link #TRANSFORM}</td>
 143  * <td valign="TOP">{@link TransformAttribute}</td>
 144  * <td valign="TOP">See TransformAttribute {@link TransformAttribute#IDENTITY IDENTITY}</td>
 145  * <td valign="TOP">TransformAttribute.IDENTITY</td>
 146  * </tr>
 147  * <tr>
 148  * <td valign="TOP">{@link #SUPERSCRIPT}</td>
 149  * <td valign="TOP">Integer</td>
 150  * <td valign="TOP">SUPERSCRIPT_SUPER, SUPERSCRIPT_SUB</td>
 151  * <td valign="TOP">0 (use the standard glyphs and metrics)</td>
 152  * </tr>
 153  * <tr style="background-color:#eeeeff">
 154  * <td valign="TOP">{@link #FONT}</td>
 155  * <td valign="TOP">{@link java.awt.Font}</td>
 156  * <td valign="TOP">none</td>
 157  * <td valign="TOP">null (do not override font resolution)</td>
 158  * </tr>
 159  * <tr>
 160  * <td valign="TOP">{@link #CHAR_REPLACEMENT}</td>
 161  * <td valign="TOP">{@link GraphicAttribute}</td>
 162  * <td valign="TOP">none</td>
 163  * <td valign="TOP">null (draw text using font glyphs)</td>
 164  * </tr>
 165  * <tr style="background-color:#eeeeff">
 166  * <td valign="TOP">{@link #FOREGROUND}</td>
 167  * <td valign="TOP">{@link java.awt.Paint}</td>
 168  * <td valign="TOP">none</td>
 169  * <td valign="TOP">null (use current graphics paint)</td>
 170  * </tr>
 171  * <tr>
 172  * <td valign="TOP">{@link #BACKGROUND}</td>
 173  * <td valign="TOP">{@link java.awt.Paint}</td>
 174  * <td valign="TOP">none</td>
 175  * <td valign="TOP">null (do not render background)</td>
 176  * </tr>
 177  * <tr style="background-color:#eeeeff">
 178  * <td valign="TOP">{@link #UNDERLINE}</td>
 179  * <td valign="TOP">Integer</td>
 180  * <td valign="TOP">UNDERLINE_ON</td>
 181  * <td valign="TOP">-1 (do not render underline)</td>
 182  * </tr>
 183  * <tr>
 184  * <td valign="TOP">{@link #STRIKETHROUGH}</td>
 185  * <td valign="TOP">Boolean</td>
 186  * <td valign="TOP">STRIKETHROUGH_ON</td>
 187  * <td valign="TOP">false (do not render strikethrough)</td>
 188  * </tr>
 189  * <tr style="background-color:#eeeeff">
 190  * <td valign="TOP">{@link #RUN_DIRECTION}</td>
 191  * <td valign="TOP">Boolean</td>
 192  * <td valign="TOP">RUN_DIRECTION_LTR<br>RUN_DIRECTION_RTL</td>
 193  * <td valign="TOP">null (use {@link java.text.Bidi} standard default)</td>
 194  * </tr>
 195  * <tr>
 196  * <td valign="TOP">{@link #BIDI_EMBEDDING}</td>
 197  * <td valign="TOP">Integer</td>
 198  * <td valign="TOP">none</td>
 199  * <td valign="TOP">0 (use base line direction)</td>
 200  * </tr>
 201  * <tr style="background-color:#eeeeff">
 202  * <td valign="TOP">{@link #JUSTIFICATION}</td>
 203  * <td valign="TOP">Number</td>
 204  * <td valign="TOP">JUSTIFICATION_FULL</td>
 205  * <td valign="TOP">JUSTIFICATION_FULL</td>
 206  * </tr>
 207  * <tr>
 208  * <td valign="TOP">{@link #INPUT_METHOD_HIGHLIGHT}</td>
 209  * <td valign="TOP">{@link java.awt.im.InputMethodHighlight},<br>{@link java.text.Annotation}</td>
 210  * <td valign="TOP">(see class)</td>
 211  * <td valign="TOP">null (do not apply input highlighting)</td>
 212  * </tr>
 213  * <tr style="background-color:#eeeeff">
 214  * <td valign="TOP">{@link #INPUT_METHOD_UNDERLINE}</td>
 215  * <td valign="TOP">Integer</td>
 216  * <td valign="TOP">UNDERLINE_LOW_ONE_PIXEL,<br>UNDERLINE_LOW_TWO_PIXEL</td>
 217  * <td valign="TOP">-1 (do not render underline)</td>
 218  * </tr>
 219  * <tr>
 220  * <td valign="TOP">{@link #SWAP_COLORS}</td>
 221  * <td valign="TOP">Boolean</td>
 222  * <td valign="TOP">SWAP_COLORS_ON</td>
 223  * <td valign="TOP">false (do not swap colors)</td>
 224  * </tr>
 225  * <tr style="background-color:#eeeeff">
 226  * <td valign="TOP">{@link #NUMERIC_SHAPING}</td>
 227  * <td valign="TOP">{@link java.awt.font.NumericShaper}</td>
 228  * <td valign="TOP">none</td>
 229  * <td valign="TOP">null (do not shape digits)</td>
 230  * </tr>
 231  * <tr>
 232  * <td valign="TOP">{@link #KERNING}</td>
 233  * <td valign="TOP">Integer</td>
 234  * <td valign="TOP">KERNING_ON</td>
 235  * <td valign="TOP">0 (do not request kerning)</td>
 236  * </tr>
 237  * <tr style="background-color:#eeeeff">
 238  * <td valign="TOP">{@link #LIGATURES}</td>
 239  * <td valign="TOP">Integer</td>
 240  * <td valign="TOP">LIGATURES_ON</td>
 241  * <td valign="TOP">0 (do not form optional ligatures)</td>
 242  * </tr>
 243  * <tr>
 244  * <td valign="TOP">{@link #TRACKING}</td>
 245  * <td valign="TOP">Number</td>
 246  * <td valign="TOP">TRACKING_LOOSE, TRACKING_TIGHT</td>
 247  * <td valign="TOP">0 (do not add tracking)</td>
 248  * </tr>

 249  * </table>
 250  *
 251  * @see java.awt.Font
 252  * @see java.awt.font.TextLayout
 253  * @see java.text.AttributedCharacterIterator
 254  */
 255 public final class TextAttribute extends Attribute {
 256 
 257     // table of all instances in this class, used by readResolve
 258     private static final Map<String, TextAttribute>
 259             instanceMap = new HashMap<String, TextAttribute>(29);
 260 
 261     // For access from java.text.Bidi
 262     static {
 263         if (SharedSecrets.getJavaAWTFontAccess() == null) {
 264             SharedSecrets.setJavaAWTFontAccess(new JavaAWTFontAccessImpl());
 265         }
 266     }
 267 
 268     /**




  79  *   will be ignored.
  80  *   <li>The identity of the value does not matter, only the actual
  81  *   value.  For example, {@code TextAttribute.WEIGHT_BOLD} and
  82  *   {@code Float.valueOf(2.0f)}
  83  *   indicate the same {@code WEIGHT}.
  84  *   <li>Attribute values of type {@code Number} (used for
  85  *   {@code WEIGHT}, {@code WIDTH}, {@code POSTURE},
  86  *   {@code SIZE}, {@code JUSTIFICATION}, and
  87  *   {@code TRACKING}) can vary along their natural range and are
  88  *   not restricted to the predefined constants.
  89  *   {@code Number.floatValue()} is used to get the actual value
  90  *   from the {@code Number}.
  91  *   <li>The values for {@code WEIGHT}, {@code WIDTH}, and
  92  *   {@code POSTURE} are interpolated by the system, which
  93  *   can select the 'nearest available' font or use other techniques to
  94  *   approximate the user's request.
  95  *
  96  * </UL>
  97  *
  98  * <h4>Summary of attributes</h4>
  99  * <table style="float:center;width:95%" class="striped">
 100  * <caption>Key, value type, principal constants, and
 101  * default value behavior of all TextAttributes</caption>
 102  * <thead>
 103  * <tr>
 104  * <th valign="TOP" style="text-align:center">Key</th>
 105  * <th valign="TOP" style="text-align:center">Value Type</th>
 106  * <th valign="TOP" style="text-align:center">Principal Constants</th>
 107  * <th valign="TOP" style="text-align:center">Default Value</th>
 108  * </tr>
 109  * </thead>
 110  * <tbody>
 111  * <tr>
 112  * <td valign="TOP">{@link #FAMILY}</td>
 113  * <td valign="TOP">String</td>
 114  * <td valign="TOP">See Font {@link java.awt.Font#DIALOG DIALOG},
 115  * {@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT},<br> {@link java.awt.Font#SERIF SERIF},
 116  * {@link java.awt.Font#SANS_SERIF SANS_SERIF}, and {@link java.awt.Font#MONOSPACED MONOSPACED}.
 117  * </td>
 118  * <td valign="TOP">"Default" (use platform default)</td>
 119  * </tr>
 120  * <tr>
 121  * <td valign="TOP">{@link #WEIGHT}</td>
 122  * <td valign="TOP">Number</td>
 123  * <td valign="TOP">WEIGHT_REGULAR, WEIGHT_BOLD</td>
 124  * <td valign="TOP">WEIGHT_REGULAR</td>
 125  * </tr>
 126  * <tr>
 127  * <td valign="TOP">{@link #WIDTH}</td>
 128  * <td valign="TOP">Number</td>
 129  * <td valign="TOP">WIDTH_CONDENSED, WIDTH_REGULAR,<br>WIDTH_EXTENDED</td>
 130  * <td valign="TOP">WIDTH_REGULAR</td>
 131  * </tr>
 132  * <tr>
 133  * <td valign="TOP">{@link #POSTURE}</td>
 134  * <td valign="TOP">Number</td>
 135  * <td valign="TOP">POSTURE_REGULAR, POSTURE_OBLIQUE</td>
 136  * <td valign="TOP">POSTURE_REGULAR</td>
 137  * </tr>
 138  * <tr>
 139  * <td valign="TOP">{@link #SIZE}</td>
 140  * <td valign="TOP">Number</td>
 141  * <td valign="TOP">none</td>
 142  * <td valign="TOP">12.0</td>
 143  * </tr>
 144  * <tr>
 145  * <td valign="TOP">{@link #TRANSFORM}</td>
 146  * <td valign="TOP">{@link TransformAttribute}</td>
 147  * <td valign="TOP">See TransformAttribute {@link TransformAttribute#IDENTITY IDENTITY}</td>
 148  * <td valign="TOP">TransformAttribute.IDENTITY</td>
 149  * </tr>
 150  * <tr>
 151  * <td valign="TOP">{@link #SUPERSCRIPT}</td>
 152  * <td valign="TOP">Integer</td>
 153  * <td valign="TOP">SUPERSCRIPT_SUPER, SUPERSCRIPT_SUB</td>
 154  * <td valign="TOP">0 (use the standard glyphs and metrics)</td>
 155  * </tr>
 156  * <tr>
 157  * <td valign="TOP">{@link #FONT}</td>
 158  * <td valign="TOP">{@link java.awt.Font}</td>
 159  * <td valign="TOP">none</td>
 160  * <td valign="TOP">null (do not override font resolution)</td>
 161  * </tr>
 162  * <tr>
 163  * <td valign="TOP">{@link #CHAR_REPLACEMENT}</td>
 164  * <td valign="TOP">{@link GraphicAttribute}</td>
 165  * <td valign="TOP">none</td>
 166  * <td valign="TOP">null (draw text using font glyphs)</td>
 167  * </tr>
 168  * <tr>
 169  * <td valign="TOP">{@link #FOREGROUND}</td>
 170  * <td valign="TOP">{@link java.awt.Paint}</td>
 171  * <td valign="TOP">none</td>
 172  * <td valign="TOP">null (use current graphics paint)</td>
 173  * </tr>
 174  * <tr>
 175  * <td valign="TOP">{@link #BACKGROUND}</td>
 176  * <td valign="TOP">{@link java.awt.Paint}</td>
 177  * <td valign="TOP">none</td>
 178  * <td valign="TOP">null (do not render background)</td>
 179  * </tr>
 180  * <tr>
 181  * <td valign="TOP">{@link #UNDERLINE}</td>
 182  * <td valign="TOP">Integer</td>
 183  * <td valign="TOP">UNDERLINE_ON</td>
 184  * <td valign="TOP">-1 (do not render underline)</td>
 185  * </tr>
 186  * <tr>
 187  * <td valign="TOP">{@link #STRIKETHROUGH}</td>
 188  * <td valign="TOP">Boolean</td>
 189  * <td valign="TOP">STRIKETHROUGH_ON</td>
 190  * <td valign="TOP">false (do not render strikethrough)</td>
 191  * </tr>
 192  * <tr>
 193  * <td valign="TOP">{@link #RUN_DIRECTION}</td>
 194  * <td valign="TOP">Boolean</td>
 195  * <td valign="TOP">RUN_DIRECTION_LTR<br>RUN_DIRECTION_RTL</td>
 196  * <td valign="TOP">null (use {@link java.text.Bidi} standard default)</td>
 197  * </tr>
 198  * <tr>
 199  * <td valign="TOP">{@link #BIDI_EMBEDDING}</td>
 200  * <td valign="TOP">Integer</td>
 201  * <td valign="TOP">none</td>
 202  * <td valign="TOP">0 (use base line direction)</td>
 203  * </tr>
 204  * <tr>
 205  * <td valign="TOP">{@link #JUSTIFICATION}</td>
 206  * <td valign="TOP">Number</td>
 207  * <td valign="TOP">JUSTIFICATION_FULL</td>
 208  * <td valign="TOP">JUSTIFICATION_FULL</td>
 209  * </tr>
 210  * <tr>
 211  * <td valign="TOP">{@link #INPUT_METHOD_HIGHLIGHT}</td>
 212  * <td valign="TOP">{@link java.awt.im.InputMethodHighlight},<br>{@link java.text.Annotation}</td>
 213  * <td valign="TOP">(see class)</td>
 214  * <td valign="TOP">null (do not apply input highlighting)</td>
 215  * </tr>
 216  * <tr>
 217  * <td valign="TOP">{@link #INPUT_METHOD_UNDERLINE}</td>
 218  * <td valign="TOP">Integer</td>
 219  * <td valign="TOP">UNDERLINE_LOW_ONE_PIXEL,<br>UNDERLINE_LOW_TWO_PIXEL</td>
 220  * <td valign="TOP">-1 (do not render underline)</td>
 221  * </tr>
 222  * <tr>
 223  * <td valign="TOP">{@link #SWAP_COLORS}</td>
 224  * <td valign="TOP">Boolean</td>
 225  * <td valign="TOP">SWAP_COLORS_ON</td>
 226  * <td valign="TOP">false (do not swap colors)</td>
 227  * </tr>
 228  * <tr>
 229  * <td valign="TOP">{@link #NUMERIC_SHAPING}</td>
 230  * <td valign="TOP">{@link java.awt.font.NumericShaper}</td>
 231  * <td valign="TOP">none</td>
 232  * <td valign="TOP">null (do not shape digits)</td>
 233  * </tr>
 234  * <tr>
 235  * <td valign="TOP">{@link #KERNING}</td>
 236  * <td valign="TOP">Integer</td>
 237  * <td valign="TOP">KERNING_ON</td>
 238  * <td valign="TOP">0 (do not request kerning)</td>
 239  * </tr>
 240  * <tr>
 241  * <td valign="TOP">{@link #LIGATURES}</td>
 242  * <td valign="TOP">Integer</td>
 243  * <td valign="TOP">LIGATURES_ON</td>
 244  * <td valign="TOP">0 (do not form optional ligatures)</td>
 245  * </tr>
 246  * <tr>
 247  * <td valign="TOP">{@link #TRACKING}</td>
 248  * <td valign="TOP">Number</td>
 249  * <td valign="TOP">TRACKING_LOOSE, TRACKING_TIGHT</td>
 250  * <td valign="TOP">0 (do not add tracking)</td>
 251  * </tr>
 252  * </tbody>
 253  * </table>
 254  *
 255  * @see java.awt.Font
 256  * @see java.awt.font.TextLayout
 257  * @see java.text.AttributedCharacterIterator
 258  */
 259 public final class TextAttribute extends Attribute {
 260 
 261     // table of all instances in this class, used by readResolve
 262     private static final Map<String, TextAttribute>
 263             instanceMap = new HashMap<String, TextAttribute>(29);
 264 
 265     // For access from java.text.Bidi
 266     static {
 267         if (SharedSecrets.getJavaAWTFontAccess() == null) {
 268             SharedSecrets.setJavaAWTFontAccess(new JavaAWTFontAccessImpl());
 269         }
 270     }
 271 
 272     /**


< prev index next >