---
title: 'Inselraus: Neue TrueType-Fonts in AWT/Swing nutzen'
url: 'https://tutego.de/blog/javainsel/2013/12/inselraus-neue-truetype-fonts-in-awtswing-nutzen'
markdown: 'https://tutego.de/blog/javainsel/2013/12/inselraus-neue-truetype-fonts-in-awtswing-nutzen.md'
date: '2013-12-01'
description: 'Die auf allen Systemen vordefinierten Standardzeichensätze sind etwas dürftig, obwohl die Font-Klasse selbst jeden installierten Zeichensatz einlesen kann. Da ein Java-Programm aber nicht von der Existenz eines bestimmten Zeichensatzes ausgehen kann, ist es praktisch, einen Zeichensatz mit der Inst…'
taxonomy:
  category:
    - Allgemein
---

# Inselraus: Neue TrueType-Fonts in AWT/Swing nutzen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselraus: Neue TrueType-Fonts in AWT/Swing nutzen

01.12.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Die auf allen Systemen vordefinierten Standardzeichensätze sind etwas dürftig, obwohl die Font-Klasse selbst jeden installierten Zeichensatz einlesen kann. Da ein Java-Programm aber nicht von der Existenz eines bestimmten Zeichensatzes ausgehen kann, ist es praktisch, einen Zeichensatz mit der Installation auszuliefern und dann diesen zu laden; das kann die Font-Klasse mit der statischen Methode `createFont(…)` sein. Aus einem Eingabestrom liest die Methode den TrueType-Zeichensatz und erstellt das entsprechende Font-Objekt, Bsp.:

Font font = Font.`createFont`( Font.TRUETYPE\_FONT,

```java
 getClass().getResourceAsStream( "/NASALIZA.TTF") );
```

Das erste Argument ist immer Font.TRUETYPE\_FONT. Das zweite Argument bestimmt den Eingabestrom zur Binärdatei mit den Zeichensatzinformationen. Die Daten werden ausgelesen und zu einem Font-Objekt verarbeitet.

Waren die Beschreibungsinformationen in der Datei ungültig, so erzeugt die Font-Klasse eine `FontFormatException`(„Unable to create font – bad font data“). Dateifehler fallen nicht darunter und werden extra über eine `IOException` angezeigt. Der Datenstrom wird anschließend nicht wieder geschlossen.

An dieser Stelle verwundert es vielleicht, dass die Arbeitsweise der statischen Methode `createFont(…)` der des Konstruktors ähnlich sein müsste, aber der Parameterliste die Attribute fehlen. Das liegt daran, dass die Methode automatisch einen Zeichensatz der Größe 1 im Stil Font.PLAIN erzeugt. Um einen größeren Zeichensatz zu erzeugen, müssen wir ein zweites Font-Objekt anlegen, was am einfachsten mit der Methode `deriveFont(…)` geschieht.

class `java.awt.Font`implements Serializable

- `static Font createFont(int fontFormat, InputStream fontStream)`throws FontFormatException, IOException Liefert ein neues Zeichensatzobjekt in der Größe von einem Punkt und mit keinem besonderen Stil.

Soll nicht direkt der Font verwendet werden, sondern soll der Zeichensatz unter seinem Namen in den Namensraum gelegt werden, sodass er später auch über den Font-Konstruktor gefunden werden kann, lässt er sich mit `registerFont(Font)` anmelden. Das sieht etwa so aus:

```java
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont( font );
```

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Node.js bei PayPal, Java geht](https://tutego.de/blog/javainsel/2013/12/node-js-bei-paypal-java-geht.md)
- Next: [Inselraus: Swing/AWT-Bilder im Speicher erzeugen](https://tutego.de/blog/javainsel/2013/12/inselraus-swingawt-bilder-im-speicher-erzeugen.md)
