Summary
文字に長体をかけたフォントを生成し、これをJTextAreaなどのコンポーネントで使用します。
Screenshot

Advertisement
Source Code Examples
AffineTransform at = AffineTransform.getScaleInstance(.9, 1d);
Font font = new Font(Font.MONOSPACED, Font.PLAIN, 18).deriveFont(at);
textArea.setFont(font);
Description
- 上: JTextArea(condensed: 0.9)- 水平比率90%の変形をかけた長体フォントを作成してJTextAreaに設定
 
- 水平比率
- 中: GlyphVector(condensed: 0.9)- 水平比率90%の変形をかけた長体フォントを作成し、そのFontからFontMetricsとGlyphVectorを生成して文字列を描画
- 一文字ごとに変形する場合はGlyphVector#setGlyphTransform(idx, affineTransform)を使用する方法もある
 
- 水平比率
- 下: LineBreakMeasurer(condensed: 0.9)- 水平比率90%の変形をかけた長体フォントを作成してAttributedString#addAttribute(TextAttribute.FONT, font)メソッドで属性付き文字列に設定
- LineBreakMeasurer、- TextLayoutで属性付き文字列を描画
 
- 水平比率
Reference
- Font#deriveFont(int, AffineTransform) (Java Platform SE 8)
- JLabel内のアイコンにJLayerを使用してバッジを表示する
- [JDK-8165943] LineBreakMeasurer does not measure correctly if TextAttribute.TRACKING is set. - Java Bug System