# 文本

> 原文： [https://docs.oracle.com/javase/tutorial/2d/overview/text.html](https://docs.oracle.com/javase/tutorial/2d/overview/text.html)

Java 2D API 具有各种文本呈现功能，包括用于呈现字符串和用于设置字体属性和执行文本布局的整个类的方法。

如果您只想绘制静态文本字符串，最直接的方法是使用`drawString`方法直接通过`Graphics`类呈现它。要指定字体，请使用`Graphics`类的`setFont`方法。

如果要实现自己的文本编辑例程或需要比文本组件提供的对文本布局的更多控制，可以使用`java.awt.font`包中的 Java 2D 文本布局类。

## 字体

字体用于表示字符串中字符的形状称为 _ 字形 _。特定字符或字符组合可以表示为一个或多个字形。例如，_á_ 可能由两个字形表示，而连字 _fi_ 可能由单个字形表示。

_ 字体 _ 可以被认为是一组字形。单个字体可能有许多 _ 面 _，例如斜体和常规。字体中的所有面具有相似的印刷特征，并且可以被识别为相同 _ 族 _ 的成员。换句话说，具有特定样式的字形集合形成 _ 字体 _。字体面的集合形成 _ 字体系列 _。字体系列的集合形成了系统上可用的字体集。

使用 Java 2D API 时，可以使用`Font`实例指定字体。您可以通过调用静态方法`GraphicsEnvironment.getLocalGraphicsEnvironment`然后查询返回的`GraphicsEnvironment`来确定可用的字体。 `getAllFonts`方法返回一个数组，其中包含系统上所有可用字体的`Font`实例。 `getAvailableFontFamilyNames`方法返回可用字体系列的列表。

## 文字布局

在显示文本之前，必须对其进行布局，以便在适当的位置用适当的字形表示字符。以下是两个用于管理文本布局的 Java 2D 机制：

*   `TextLayout`类管理文本布局，突出显示和命中检测。 `TextLayout`提供的工具处理最常见的情况，包括混合字体，混合语言和双向文本的字符串。
*   您可以使用`Font`类创建自己的`GlyphVector`对象，然后通过`Graphics2D`类渲染每个`GlyphVector`对象。因此，您可以完全控制文本的形状和位置。

## 渲染文本提示

Java 2D API 使您可以使用 _ 渲染提示 _ 来控制形状和文本渲染的质量。渲染提示由`java.awt.RenderingHints`类封装。

应用于文本时，此功能用于抗锯齿（也称为平滑边缘）。例如，`KEY_TEXT_ANTIALIASING`提示使您可以与其他形状的抗锯齿分开控制文本的抗锯齿。要了解有关渲染提示的更多信息，请参阅[控制渲染质量](../advanced/quality.html)课程。