# java.awt.font

***

**1. Getting Font Information**

```java
Font font = new Font("Arial", Font.PLAIN, 12);
System.out.println("Font name: " + font.getName());
System.out.println("Font style: " + font.getStyle());
System.out.println("Font size: " + font.getSize());
```

**2. Creating a Font with Attributes**

```java
Map<TextAttribute, ?> attrs = new HashMap<>();
attrs.put(TextAttribute.FAMILY, "Arial");
attrs.put(TextAttribute.SIZE, 12.0f);
attrs.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
Font font = new Font(attrs);
```

**3. Getting Font Metrics**

```java
FontMetrics metrics = font.getFontMetrics();
System.out.println("Ascent: " + metrics.getAscent());
System.out.println("Descent: " + metrics.getDescent());
System.out.println("Leading: " + metrics.getLeading());
```

**4. Calculating Text Width**

```java
String text = "Hello, world!";
FontMetrics metrics = font.getFontMetrics();
int width = metrics.stringWidth(text);
```

**5. Drawing Text**

```java
Graphics2D g = new Graphics2D();
g.setFont(font);
g.drawString(text, 10, 20);
```

**6. Using a TextLayout**

```java
TextLayout layout = new TextLayout(text, font, RenderingHints.KEY_ANTIALIASING);
layout.draw(g, 10, 20);
```

**7. Creating a GlyphVector**

```java
GlyphVector glyphVector = font.createGlyphVector(fontRenderContext, text);
```

**8. Getting Glyph Information**

```java
int numGlyphs = glyphVector.getNumGlyphs();
for (int i = 0; i < numGlyphs; i++) {
    Glyph glyph = glyphVector.getGlyph(i);
    System.out.println(glyph.getPixelBounds());
}
```

**9. Shaping Text**

```java
FontRenderContext renderContext = new FontRenderContext(null, false, false);
TextAttribute attribute = TextAttribute.LIGATURES;
Map<TextAttribute, ?> attrs = new HashMap<>();
attrs.put(attribute, TextAttribute.LIGATURE_COMMON);
AffineTransform transform = new AffineTransform();
Font shapedFont = font.deriveFont(attrs).deriveFont(transform);
String shapedText = shapedFont.layoutGlyphVector(renderContext, glyphVector, 0, false, 0.0f).getGlyphPainter(0).getLayout().getText();
```

**10. Measuring Text Width with Glyphs**

```java
float width = 0;
for (Glyph glyph : glyphVector.getGlyphs()) {
    width += glyph.getAdvance();
}
```

**11. Transforming Text**

```java
AffineTransform transform = new AffineTransform();
transform.translate(10, 20);
transform.rotate(Math.toRadians(45));
TextLayout layout = new TextLayout(text, font, transform, RenderingHints.KEY_ANTIALIASING);
```

**12. Wrapping Text**

```java
TextLayout layout = new TextLayout(text, font, RenderingHints.KEY_ANTIALIASING);
layout.setParagraphStyle(new ParagraphStyle(alignment, 12f));
```

**13. Getting Font Family**

```java
String familyName = font.getFamily();
```

**14. Getting Font Style**

```java
int style = font.getStyle();
```

**15. Getting Font Size**

```java
float size = font.getSize();
```

**16. Getting Font Metrics**

```java
FontMetrics metrics = g.getFontMetrics(font);
```

**17. Getting Text Width**

```java
int width = metrics.stringWidth(text);
```

**18. Getting Text Height**

```java
int height = metrics.getHeight();
```

**19. Drawing Text**

```java
g.drawString(text, 10, 20);
```

**20. Drawing Text with Antialiasing**

```java
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
```

**21. Creating a Font**

```java
Font font = new Font("Arial", Font.PLAIN, 12);
```

**22. Creating a Font with Different Style**

```java
Font font = new Font("Arial", Font.BOLD, 12);
```

**23. Creating a Font with Different Size**

```java
Font font = new Font("Arial", Font.PLAIN, 18);
```

**24. Getting Available Fonts**

```java
String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
```

**25. Checking if a Font is Available**

```java
boolean isAvailable = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames().contains("Arial");
```

**26. Setting Font in a JLabel**

```java
JLabel label = new JLabel("Hello, world!");
label.setFont(new Font("Arial", Font.PLAIN, 12));
```

**27. Setting Font in a JTextField**

```java
JTextField textField = new JTextField();
textField.setFont(new Font("Arial", Font.PLAIN, 12));
```

**28. Setting Font in a JButton**

```java
JButton button = new JButton("Click me!");
button.setFont(new Font("Arial", Font.BOLD, 12));
```

**29. Setting Font in a JPanel**

```java
JPanel panel = new JPanel();
panel.setFont(new Font("Arial", Font.PLAIN, 12));
```

**30. Setting Font in a JFrame**

```java
JFrame frame = new JFrame();
frame.setFont(new Font("Arial", Font.PLAIN, 12));

```
