# 字体概念

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

本节向您介绍 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 类，它支持详细的字体信息的规范和复杂的排版功能的使用。

[`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象表示系统中可用字体面集合的字体实例。常见字体面的示例包括 Helvetica Bold 和 Courier Bold Italic。三个名称与 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象关联：其逻辑名称，姓氏和字体名称：

*   [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象的 _ 逻辑名称 _ 是映射到物理字体的名称，该字体是系统上可用的特定字体之一。在 Java 中指定 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 时，请使用 _ 字体名称 _ 而不是逻辑名称。您可以通过调用 [`getName`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html#getName--) 方法从`Font`获取逻辑名称。要获取映射到系统上可用特定字体的逻辑名称列表，请调用 [java.awt.GraphicsEnvironment.getAvailableFontFamilyNames](https://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsEnvironment.html#getAvailableFontFamilyNames--) 方法。

    有关详细信息，请参阅 [**物理和逻辑字体**](fonts.html) 。

*   [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象的 _ 系列名称 _ 是字体系列的名称，用于确定跨多个面的排版设计，例如 Helvetica。通过 [`getFamily`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html#getFamily--) 方法检索系列名称。

*   [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象的 _ 字体名称 _ 是指系统上安装的实际字体。这是指定字体时应使用的名称。它通常被称为 _ 字体名称 _。通过调用 [`getFontName`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html#getFontName--) 检索字体名称。要确定系统上可用的字体，请调用 [`java.awt.GraphicsEnvironment.getAllFonts`](https://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsEnvironment.html#getAllFonts--) 方法。

您可以通过 [`getAttributes`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html#getAttributes--) 方法访问 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 的相关信息。 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象的属性包括其名称，大小，变换和字体功能，如重量和姿势。

[`LineMetrics`](https://docs.oracle.com/javase/8/docs/api/java/awt/font/LineMetrics.html) 对象封装与 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 相关的测量信息，例如其上升，下降和前导：

*   _Ascent_ 是从基线到上升线的距离。此距离表示大写字母的典型高度，但某些字符可能会延伸到上升线之上。
*   _ 下降 _ 是从基线到下降线的距离。大多数字符的最低点将落在下降范围内，但某些字符可能会延伸到下降线以下。
*   _ 前导 _ 是从下行线底部到下一行顶部的建议距离。

下图显示了上升线，基线和下降线的位置：

![Position of the ascender line, baseline, and descender line](img/0870761c3d2a1ff14da56b839d66d259.jpg)

此信息用于沿一条线正确定位字符，以及相对于彼此定位线。您可以通过 [`getAscent`](https://docs.oracle.com/javase/8/docs/api/java/awt/font/LineMetrics.html#getAscent--) ， [`getDescent`](https://docs.oracle.com/javase/8/docs/api/java/awt/font/LineMetrics.html#getDescent--) 和 [`getLeading`](https://docs.oracle.com/javase/8/docs/api/java/awt/font/LineMetrics.html#getLeading--) 方法访问这些线路指标。您还可以通过`LineMetrics`类访问有关 [`Font`](https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) 对象的高度，基线以及下划线和删除线特征的信息。