Fontクラスの次の定数が、論理フォントの正規ファミリ名を表すために導入されました。
DIALOGDIALOG_INPUTSANS_SERIFSERIFMONOSPACEDFontRenderContextオブジェクトを作成し、アプリケーション経由でテキストを測定するには、FontMetricsクラスに追加された getFontRenderContext()メソッドを使用します。 GraphicsEnvironmentクラスの新しいregisterFont(Font font)メソッドが導入されました。このメソッドを使用すると、Font.createFont(int, java.io.InputStream)メソッドを使用して作成されたフォントを登録したり、Font.deriveFont(int, float)メソッドを使用して作成されたフォントから導出できます。 登録が成功すると、registerFontメソッドからtrueが返されます。 このメソッドからfalse valueが返された場合、それは、登録しようとしているフォントが、作成済みのフォントでないか、あるいはこのGraphicsEnvironmentオブジェクトにすでに登録されている非登録フォントと競合していることを意味します。 java.awt.font.FontRenderContextクラスの新しいコンストラクタが導入され、特定のアンチエイリアシング・レンダリング・ヒントまたは小数レンダリング・ヒントを使用してFontRenderContextオブジェクトが作成されました。 Java SE 6.0の新機能を反映するために、次のメソッドが追加されました。
isTransformed() - FontRenderContextオブジェクトが変換されたレンダリング・コンテキストでテキストを測定することを示す。getTransformType() - アフィン変換の整数タイプを取得する。getAntiAliasingHint() - FontRenderContextオブジェクトに適用可能なテキスト・アンチエイリアス処理レンダリング・モード・ヒントを取得する。getFractionalMetricsHint() - FontRenderContextオブジェクトに適用可能なテキスト部分メトリックス・レンダリング・モード・ヒントを取得する。getPixelBounds() - TextLayoutオブジェクトのピクセル境界を取得する。 このメソッドは、影響のあるピクセル境界を定義するRectangleオブジェクトを返します。 Graphicsオブジェクトにテキスト・レンダリング・ヒントを適用する機能が用意されています。 LCDディスプレイに最適化された新しいテキスト・アンチエイリアス処理メソッドが追加されました。 これらは一部のシステム上でデフォルトで有効化され、RenderingHintsクラス内で定義された対応するキーと値を使って制御できます。 TextLayoutクラスのgetOutline(AffineTransform)メソッドとともに、GraphicAttributeクラスの新しいgetOutlineメソッドを使えば、GraphicAttributeオブジェクトがレンダリングする領域を表すShapeオブジェクトを取得できます。 ShapeGraphicAttributeクラスのgetOutlineメソッドは、ShapeGraphicAttributeオブジェクトがレンダリングするリージョンのアウトラインを取得するために、GraphicsAttributeクラスの対応するメソッドをオーバーライドします。LayoutPathクラスは、ベースラインを基準にしたPoint2D位置とユーザー空間内のポイントとのマッピングを提供します。 このクラスの2つのメソッドは、双方向のマッピングを可能にします。つまり、ある位置からユーザー座標内のあるポイントへと、逆にユーザー座標内のあるポイントからある位置へです。 TextLayoutオブジェクトのレイアウト・パスを取得するために、getLayoutPath()メソッドがTextLayoutクラスに追加されました。TextAttributeクラスに新しい属性が導入されました。 KERNING属性を使えば、カーニング整数値を要求して文字の外観をより美しくできます。 KERNING_ON定数は、テキスト・レンダリング時にフォントによって指定されたカーニング・ペアに従ってグリフ間の間隔が調整されることを要求します。 LIGATURES属性の定数値LIGATURES_ONを使用すると、フォントによって指定されたオプションの合字を適用するように要求されます。 TRACKING属性は、グリフ間の間隔の粗密を制御するために使用されます。 たとえば、TRACKING_LOOSE定数を使用すると、各グリフ間に追加のスペースが割り当てられ、配分されます。 BufferStrategyクラスの新しいメソッドjava.awt.image.BufferStrategyクラスにdispose()メソッドが追加されました。 この新しいメソッドは、BufferStrategyオブジェクトによって消費されたシステム・リソースを解放します。 さらに、このメソッドは、関連付けられたComponentインスタンスからこのBufferStrategyオブジェクトを削除します。 AlphaCompositeクラスに次のメソッドが追加され、指定された合成規則またはalpha値を使用するAlphaCompositeオブジェクトを取得できるようになりました。
public AlphaComposite derive(int rule)public AlphaComposite derive(float alpha)この2つのメソッドを使えば、開発者はさまざまな合成効果のコーディングを行い、getInstanceメソッドのより複雑な使用を避けることができます。
Composite alpha0 = null, alpha1 = null;
alpha0 = AlphaComposite.SrcOver.derive(alpha);
alpha1 = AlphaComposite.SrcOver.derive(1-alpha)
MultipleGradientPaintクラスを継承したLinearGradientPaintクラスとRadialGradientPaintクラスは、特定のカラー・グラデーション・パターンを使ってShapeオブジェクトを塗りつぶします。 MultipleGradientPaint.CycleMethod列挙は、(CycleMethod.NO_CYCLE)、反射(CycleMethod.REFLECT)または繰返し(CycleMethod.REPEAT)ペイントを無効にして、外側のグラデーション境界のペイントを処理するために使用されます。
Point2D start = new Point2D.Float(0, 0);
Point2D end = new Point2D.Float(100, 100);
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.BLACK, Color.WHITE, Color.GRAY};
LinearGradientPaint p =
new LinearGradientPaint(start, end, dist, colors, CycleMethod.REFLECT);
AffineTransformクラスで次のメソッドが導入されました。public static AffineTransform getRotateInstance(double vecx, double vecy)public static AffineTransform getRotateInstance(double vecx, double vecy, double anchorx, double anchory)public static AffineTransform getQuadrantRotateInstance(int numquadrants)public static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)public void rotate(double vecx, double vecy)public void rotate(double vecx, double vecy, double anchorx, double anchory)public void quadrantRotate(int numquadrants)public void quadrantRotate(int numquadrants, double anchorx, double anchory)public void setToRotation(double vecx, double vecy)public void setToRotation(double vecx, double vecy, double anchorx, double anchorysetToQuadrantRotation(int numquadrants)メソッドを使えば、指定された数の四分円だけ回転できます。 その片方は、指定されたアンカー・ポイントを中心にして指定された数の四分円だけ座標を回転させる変換を返します。 AffineTransformクラスの新しいメソッドは逆変換機能を改善します。 Java SE 1.2で createInverseメソッドが導入され、これによって形状の座標を元の位置に変換していましたが、新しいinvert()メソッドを使えば、現在の変換をそれ自体の逆状態に設定できます。 GeneralPathクラス用の倍精度GeneralPathクラスの倍精度版が含まれていませんでした。 Path2DクラスはPathIteratorインタフェースで反復可能なパスを表しており、2つのサブクラスPath2D.FloatおよびPath2D.Doubleを持っています。 変更後の階層では、GeneralPathクラスはPath2D.Floatクラスのサブクラスになりました。 これらがいずれも単精度で使用できるのに対し、Path2D.Doubleクラスは倍精度に適用できます。 GeneralPathクラスではなくPath2D.Floatクラスを使用する理由の1つは、アプリケーションで単精度型と倍精度型の両方が採用されている場合の、コードの一貫性と明示性を高めることです。 hashCode()メソッドとequals()メソッドRectangle2DクラスにはhashCode()メソッドとequals()メソッドが含まれていましたが、RectangularShapeクラスのほかのサブクラスにはその同じ機能が含まれていませんでした。 JDK 6.0ではこのギャップを埋めるために、Arc2D、Ellipse2D、およびRoundRectangle2DクラスにhashCode()とequals()メソッドが追加されています。 PrinterJobクラスでの拡張機能PageFormatオブジェクトへの変換をより簡単に行うための簡易メソッドとして、getPageFormatメソッドがJDK 6.0に追加されました。3次および2次のベジェ曲線の描画用として、適応的前進差分が適用されるパイプラインが別個に開発されました。 このアプローチを使うと、ベジェ曲線の描画品質と描画速度が顕著に改善されます。
スキャン変換アルゴリズムの現在の実装のため、Microsoft Sans Serifフォントのグリフが破損しているように見えていました。 6282527バグの修正の一部として、スマート・ドロップアウト・メカニズムが追加されています。
あたかもコードが配列の末尾より後の領域にアクセスしたかのようにJavaヒープ内でメモリーが破壊された結果として、VMのクラッシュが発生していました。 この修正は、イメージの最初の部分が取得された時点でイメージ表現コードの寸法をチェックします。 寸法が一致しない場合には、内部バッファ内のイメージが作成し直されます。
ColorConvertOpインスタンスに指定されたソースとデスティネーションのColorSpaceが同じである場合にピクセル値が異なるColorConvertOpインスタンスに指定されたソースとデスティネーションのColorSpaceオブジェクトが同じであった場合に、色変換されたデスティネーションと元のソースとの間でピクセル値が異なっていました。 このバグを修正するために、sRGBプロファイルが更新され、高速トラックが作成されています(色変換は一切行われない)。
Truetypeヒントは、ピクセル・グリッドに関するグリフの方向が固定されるという前提で設計されました。 それが、回転、変形、拡大縮小などの複雑なアフィン変換がtruetypeヒントでサポートされなかった理由です。 その修正として、次のアプローチが実装されています。
PrintServiceオブジェクトの設定時に名前を指定しないとJVMがクラッシュするPrintServiceオブジェクトの設定時に名前を指定しなかった場合(getName()メソッドがnullを返す場合)、JVMがクラッシュしていました。 この問題の原因は、次のような特定ユーザーの実装でした。PrintServiceインタフェースのgetName()関数からnullが返され、このnull値がネイティブ関数setNativePrintServiceに渡されていました。
IndexColorModelイメージの印刷が失敗することがあるWindowsプラットフォームで、ビットマスク透明度を含むイメージの印刷が正しく行われないことがありました。 ビットマスク透明度を使用している場合に問題が存在していました。 印刷コードは、ビットマスク透明度を、元のイメージのより小さな複数のサブ・イメージとして処理していました。 この修正には、もっとも単純でリスクの少ない解決方法が含まれています。それは、常にイメージのコピーを作成することです。
Type1ヒントのサポートが欠けているJDK 6より前にJavaのフォント・ラスタライザがサポートしていたヒントは、Truetypeフォントに対するヒントだけでした。 しかし、SolarisおよびLinuxプラットフォームではType1フォントが一般的に使用されており、ヒントを使用しないType1フォントは通常、あまり自然には見えませんでした。 type1のヒントをサポートするために実装された機能は、次のとおりです。
Truetypeのヒントは、任意の変換のサポートを想定せずに設計されました。 この制限を克服するため、重要な変換が要求された場合には、「安全」な単位行列を使ってヒントを適用したあと、ヒント適用後の輪郭を変換します。 この問題は、4654540の修正の一部として解決されました。
イメージ変換用のコードは、イメージ処理ライブラリを使って処理を実行していました。 このアプローチでは、変換処理を行うたびに少なくとも1つの中間バッファを作成する必要がありました。 新しいコードでは、任意の内部処理形式の変換と任意の内部処理形式への合成を、1つの処理内で、スタックで割り当てられた最小の1行ピクセル・バッファのみを使って行えます。
Windows Vistaでは、DirectDrawによるハードウェア高速化は現時点ではデフォルトで無効になっていますが、これは、Vistaのデスクトップ・ウィンドウ・マネージャとの互換性に問題があるからです。
-Dsun.java2d.noddraw=falseプロパティを使えば、DirectDrawパイプラインの使用を再度有効にできます。 ただし、レンダリング・アーティファクトやパフォーマンスの問題のため、それはお薦めできません。 Direct3Dパイプラインも有効にするには、前述のフラグと-Dsun.java2d.d3d=trueを組み合わせて使用するようにしてください。