模块  java.desktop
软件包  java.awt

Class Font

  • 实现的所有接口
    Serializable
    已知直接子类:
    FontUIResource

    public class Font
    extends Object
    implements Serializable
    Font类表示字体,用于以可见方式呈现文本。 字体提供将字符序列映射到字形序列以及在GraphicsComponent对象上呈现字形序列所需的信息。

    字符和字形

    字符是以抽象方式表示诸如字母,数字或标点符号之类的项的符号。 例如, 'g' ,LATIN SMALL LETTER G,是一个角色。

    字形是用于渲染字符或字符序列的形状。 在简单的书写系统中,例如拉丁语,通常一个字形代表一个字符。 但是,一般而言,字符和字形不具有一对一的对应关系。 例如,角色'¡¡拉丁小写字母A有急性,可用两个字形表示:一个用于'a',一个用于'''。 另一方面,双字符串“fi”可以用单个字形表示,即“fi”连字。 在复杂的书写系统中,例如阿拉伯语或南亚和东南亚书写系统,字符和字形之间的关系可能更复杂,并且涉及字形依赖的字形选择以及字形重新排序。 字体封装了渲染选定字符集所需的字形集合,以及将字符序列映射到相应字形序列所需的表格。

    物理和逻辑字体

    Java平台区分两种字体: 物理字体和逻辑字体。

    物理字体是包含字形数据和表格的实际字体库,使用字体技术(如TrueType或PostScript Type 1)从字符序列映射到字形序列。所有Java平台实现都必须支持TrueType字体。 对其他字体技术的支持取决于实现。 物理字体可以使用诸如Helvetica,Palatino,HonMincho或任何数量的其他字体名称之类的名称。 通常,每种物理字体仅支持一组有限的书写系统,例如,仅拉丁字符或仅支持日语和基本拉丁语。 可用物理字体集在配置之间有所不同。 需要特定字体的应用程序可以捆绑它们并使用createFont方法对它们进行实例化。

    逻辑字体是Java平台定义的五个字体系列,任何Java运行时环境都必须支持这些字体系列:Serif,SansSerif,Monospaced,Dialog和DialogInput。 这些逻辑字体不是实际的字体库。 而是由Java运行时环境将逻辑字体名称映射到物理字体。 映射是实现,通常依赖于语言环境,因此它们提供的外观和指标会有所不同。 通常,每个逻辑字体名称映射到多个物理字体以覆盖大范围的字符。

    对等AWT组件(例如LabelTextField )只能使用逻辑字体。

    为相对的优点和使用物理或逻辑字体的缺点的讨论,请参阅Physical and Logical FontsThe Java Tutorials文档。

    字体面和名称

    Font可以有很多面孔,例如重,中,斜,哥特和常规。 所有这些面孔都有类似的排版设计。

    您可以从Font对象获得三个不同的名称。 逻辑字体名称只是用于构造字体的名称。 字体名称或简称字体名称是特定字体的名称,如Helvetica Bold。 系列名称是字体系列的名称,用于确定多个面的排版设计,例如Helvetica。

    Font类表示来自主机系统的系统资源中存在的字体面集合的字体面的实例。 例如,Arial Bold和Courier Bold Italic是字体。 可以有几个与字体相关联的Font对象,每个对象的大小,样式,变换和字体特征都不同。

    由于平台限制(例如缺少用于实现逻辑字体的合适平台字体),字形可能不总是使用所请求的属性(例如,字体和样式)来呈现。

    GraphicsEnvironment类的getAllFonts方法返回系统中可用的所有字体面的数组。 这些字体面将返回为Font对象,大小为1,标识转换和默认字体功能。 这些基本字体可以被用来导出新Font经由变化的大小,样式,变换和字体特征的对象deriveFont在此类的方法。

    Font和TextAttribute

    Font支持大多数TextAttribute s。 这使得一些操作(例如渲染带下划线的文本)很方便,因为不必显式构造TextLayout对象。 可以通过使用MapTextAttribute值构造或派生属性来设置属性。

    某些TextAttributes的值不可序列化,因此尝试序列化具有此类值的Font实例将不会序列化它们。 这意味着从这样的流反序列化的Font将不会与包含非可序列化属性的原始Font相比较。 这应该很少引起问题,因为这些属性通常仅在特殊情况下使用,并且不太可能被序列化。

    • FOREGROUNDBACKGROUND使用Paint值。 子类Color是可序列化的,而GradientPaintTexturePaint则不是。
    • CHAR_REPLACEMENT使用GraphicAttribute值。 子类ShapeGraphicAttributeImageGraphicAttribute不可序列化。
    • INPUT_METHOD_HIGHLIGHT使用InputMethodHighlight值,这些值不可序列化。 InputMethodHighlight

    创建自定义子类PaintGraphicAttribute客户端可以使它们可序列化并避免此问题。 使用输入法高亮显示的客户端可以将这些属性转换为当前平台上该突出显示的特定于平台的属性,并将其设置为Font作为变通方法。

    基于Map的构造函数和deriveFont API忽略FONT属性,并且Font不保留它; 如果可能存在FONT属性,则应使用静态getFont(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>)方法。 有关更多信息,请参见TextAttribute.FONT

    多个属性将导致额外的渲染开销并可能调用布局。 如果Font具有此类属性,则hasLayoutAttributes()方法将返回true。

    注意:字体旋转可以导致文本基线旋转。 为了解释这种(罕见的)可能性,指定字体API以返回度量并在基线相对坐标中获取参数。 这将'x'坐标映射到沿基线前进(正x沿基线向前),'y'坐标沿'x'处基线垂直方向的距离(正y为顺时针90度)从基线矢量)。 特别重要的API被称为具有“基线相对坐标”。

    另请参见:
    Serialized Form
    • 字段详细信息

      • DIALOG

        public static final String DIALOG
        逻辑字体“Dialog”的规范系列名称的String常量。 在Font构造中,它可以提供名称的编译时验证。
        从以下版本开始:
        1.6
        另请参见:
        常数字段值
      • DIALOG_INPUT

        public static final String DIALOG_INPUT
        逻辑字体“DialogInput”的规范系列名称的String常量。 在Font构造中,它可以提供名称的编译时验证。
        从以下版本开始:
        1.6
        另请参见:
        常数字段值
      • SANS_SERIF

        public static final String SANS_SERIF
        逻辑字体“SansSerif”的规范系列名称的String常量。 在Font构造中,它可以提供名称的编译时验证。
        从以下版本开始:
        1.6
        另请参见:
        常数字段值
      • SERIF

        public static final String SERIF
        逻辑字体“Serif”的规范系列名称的String常量。 在Font构造中,它可以提供名称的编译时验证。
        从以下版本开始:
        1.6
        另请参见:
        常数字段值
      • MONOSPACED

        public static final String MONOSPACED
        逻辑字体“Monospaced”的规范系列名称的String常量。 在Font构造中,它可以提供名称的编译时验证。
        从以下版本开始:
        1.6
        另请参见:
        常数字段值
      • PLAIN

        public static final int PLAIN
        朴素的风格常数。
        另请参见:
        常数字段值
      • BOLD

        public static final int BOLD
        大胆的风格不变。 这可以与混合样式的其他样式常量(PLAIN除外)组合使用。
        另请参见:
        常数字段值
      • ITALIC

        public static final int ITALIC
        斜体样式常量。 这可以与混合样式的其他样式常量(PLAIN除外)组合使用。
        另请参见:
        常数字段值
      • ROMAN_BASELINE

        public static final int ROMAN_BASELINE
        布局文本时大多数罗马脚本中使用的基线。
        另请参见:
        常数字段值
      • CENTER_BASELINE

        public static final int CENTER_BASELINE
        布局文本时,在表意文字脚本中使用的基线,如中文,日文和韩文。
        另请参见:
        常数字段值
      • HANGING_BASELINE

        public static final int HANGING_BASELINE
        在布置文本时,梵文和类似脚本中使用的基线。
        另请参见:
        常数字段值
      • TRUETYPE_FONT

        public static final int TRUETYPE_FONT
        识别TRUETYPE类型的字体资源。 用于为createFont(int, java.io.InputStream)方法指定TrueType字体资源。 TrueType格式被扩展为OpenType格式,它增加了对带有Postscript轮廓的字体的支持,因此该标签引用了这些字体以及具有TrueType轮廓的字体。
        从以下版本开始:
        1.3
        另请参见:
        常数字段值
      • name

        protected String name
        传递给构造函数的这个 Font的逻辑名称。
        从以下版本开始:
        1.0
        另请参见:
        getName()
      • style

        protected int style
        这个Font的样式,传递给构造函数。 此款式可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。
        从以下版本开始:
        1.0
        另请参见:
        getStyle()
      • size

        protected int size
        此点的大小为 Font ,四舍五入为整数。
        从以下版本开始:
        1.0
        另请参见:
        getSize()
      • pointSize

        protected float pointSize
        Font的点大小在 float
        另请参见:
        getSize()getSize2D()
      • LAYOUT_LEFT_TO_RIGHT

        public static final int LAYOUT_LEFT_TO_RIGHT
        layoutGlyphVector的标志,指示由Bidi分析确定的文本是从左到右。
        另请参见:
        常数字段值
      • LAYOUT_RIGHT_TO_LEFT

        public static final int LAYOUT_RIGHT_TO_LEFT
        layoutGlyphVector的标志,指示Bidi分析确定的文本是从右到左。
        另请参见:
        常数字段值
      • LAYOUT_NO_START_CONTEXT

        public static final int LAYOUT_NO_START_CONTEXT
        layoutGlyphVector的标志,指示不应检查指示的开始之前的char数组中的文本。
        另请参见:
        常数字段值
      • LAYOUT_NO_LIMIT_CONTEXT

        public static final int LAYOUT_NO_LIMIT_CONTEXT
        layoutGlyphVector的标志,指示不应检查指定限制之后的char数组中的文本。
        另请参见:
        常数字段值
    • 构造方法详细信息

      • Font

        public Font​(String name,
                    int style,
                    int size)
        从指定的名称,样式和Font创建新的Font

        字体名称可以是字体名称或字体系列名称。 它与样式一起使用以查找适当的字体。 指定字体系列名称时,样式参数用于从族中选择最合适的面。 指定字体外观名称时,将合并面部样式和样式参数,以找到同一族中最佳匹配字体。 例如,如果使用样式Font.ITALIC指定了面部名称“Arial Bold”,则字体系统会在“Arial”系列中查找粗体和斜体的面,并且可以将字体实例与物理字体“Arial Bold Italic”相关联。 。 style参数与指定的face的样式合并,而不是添加或减去。 这意味着,指定粗体和粗体样式不会使字体双重加粗,并且指定粗体和普通样式不会使字体变亮。

        如果找不到所请求样式的面,则字体系统可以应用算法样式以实现期望的样式。 例如,如果请求了ITALIC ,但没有可用的斜体面,则可以通过算法方式对倾斜面上的字形进行倾斜(倾斜)。

        字体名称查找不区分大小写,使用美国语言环境的大小写折叠规则。

        如果name参数表示逻辑字体以外的其他内容,即被解释为物理字体或族,并且实现无法将其映射到物理字体或兼容替代,则字体系统会将Font实例映射到“对话”,例如, getFamily报告的家庭将是“对话”。

        参数
        name - 字体名称。 这可以是字体名称或字体系列名称,可以表示此GraphicsEnvironment的逻辑字体或物理字体。 逻辑字体的系列名称为:Dialog,DialogInput,Monospaced,Serif或SansSerif。 所有这些名称都存在预定义的字符串常量,例如, DIALOG 如果namenull ,新的逻辑字体名称 Font由返回getName()设置为名称为“默认”。
        style -为对风格恒定Font风格参数是一个整数位掩码可以是PLAIN ,或按位联盟BOLD和/或ITALIC (例如ITALICBOLD|ITALIC )。 如果style参数不符合预期的整数位掩码之一,则样式设置为PLAIN
        size - Font
        从以下版本开始:
        1.0
        另请参见:
        GraphicsEnvironment.getAllFonts()GraphicsEnvironment.getAvailableFontFamilyNames()
      • Font

        public Font​(Map<? extends AttributedCharacterIterator.Attribute,​?> attributes)
        创建具有指定属性的新Font 仅识别TextAttribute中定义的键。 此外,此构造函数无法识别FONT属性(请参阅getAvailableAttributes() )。 只有具有有效类型值的属性才会影响新的Font

        如果attributesnull ,则使用默认值初始化新的Font

        参数
        attributes - 要分配给新 Fontnull
        另请参见:
        TextAttribute
      • Font

        protected Font​(Font font)
        创建一个新的Font从指定font 此构造函数旨在供子类使用。
        参数
        font - 从中创建此 Font
        异常
        NullPointerException - 如果 font为空
        从以下版本开始:
        1.6
    • 方法详细信息

      • textRequiresLayout

        public static boolean textRequiresLayout​(char[] chars,
                                                 int start,
                                                 int end)
        如果指定文本的任何部分来自复杂脚本,则返回true,实现将需要调用布局处理以便在使用drawString(String,int,int)和其他文本呈现方法时正确呈现。 文本的测量可能同样需要相同的额外处理。 提供了startend索引,以便应用程序可以仅请求考虑的文本的子集。 检查的最后一个char索引是"end-1" ,即检查整个数组的请求将是
          Font.textRequiresLayout(chars, 0, chars.length); 
        应用程序可能会发现此信息对性能敏感的代码很有用。

        请注意,即使此方法返回false ,当与hasLayoutAttributes()返回true任何Font一起使用时,仍可以调用布局处理,因此需要查询特定字体的方法,以获得考虑此类字体的答案属性。

        参数
        chars - 文字。
        start - 要检查的第一个char的索引。
        end - 结束索引,独占。
        结果
        true如果指定的文本需要特殊布局。
        异常
        NullPointerException - 如果 chars为空。
        ArrayIndexOutOfBoundsException - 如果 start为负数或 end大于 chars数组的长度。
        从以下版本开始:
        9
      • getFont

        public static Font getFont​(Map<? extends AttributedCharacterIterator.Attribute,​?> attributes)
        返回适合于属性的Font 如果attributes包含FONT属性且其值为Font ,则它将与任何其余属性合并。 有关更多信息,请参见TextAttribute.FONT
        参数
        attributes - 要分配给新 Font的属性
        结果
        使用指定的属性创建的新 Font
        异常
        NullPointerException - 如果 attributes为空。
        从以下版本开始:
        1.2
        另请参见:
        TextAttribute
      • createFonts

        public static Font[] createFonts​(InputStream fontStream)
                                  throws FontFormatException,
                                         IOException
        返回从指定流解码的新数组Font 返回的Font[]将至少包含一个元素。

        createFont(int, InputStream)方法的此变体的明确目的是支持表示TrueType / OpenType字体集合的字体源,并能够返回该集合中的所有单个字体。 因此,如果数据源不包含至少一个TrueType / OpenType字体,则此方法将抛出FontFormatException 如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。

        条件“至少一个”允许流表示单个OpenType / TrueType字体。 也就是说,它不一定是一个集合。 返回数组的每个Font元素的点大小为1,样式为PLAIN 然后,可以将此基本字体与deriveFont中的deriveFont方法一起使用,以派生具有不同大小,样式,变换和字体功能的新对象Font

        此方法不会关闭InputStream

        要使每个Font可用于Font构造函数,必须通过调用registerFont(Font)GraphicsEnvironment注册。

        参数
        fontStream - 表示字体或字体集合的输入数据的 InputStream对象。
        结果
        一个新的 Font[]
        异常
        FontFormatException - 如果 fontStream数据不包含集合的任何元素所需的字体表,或者它根本不包含任何字体。
        IOException - 如果 fontStream无法完全读取。
        从以下版本开始:
        9
        另请参见:
        GraphicsEnvironment.registerFont(Font)
      • createFonts

        public static Font[] createFonts​(File fontFile)
                                  throws FontFormatException,
                                         IOException
        返回从指定文件解码的新数组Font 返回的Font[]将至少包含一个元素。

        createFont(int, File)方法的此变体的明确目的是支持表示TrueType / OpenType字体集合的字体源,并能够返回该集合中的所有单个字体。 因此,如果数据源不包含至少一个TrueType / OpenType字体,则此方法将抛出FontFormatException 如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。

        条件“至少一个”允许流表示单个OpenType / TrueType字体。 也就是说,它不一定是一个集合。 返回数组的每个Font元素的点大小为1,样式为PLAIN 然后,此基本字体可与deriveFont中的deriveFont方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font对象。

        要使每个Font可用于Font构造函数,必须通过调用registerFont(Font)GraphicsEnvironment注册。

        参数
        fontFile - 包含字体或字体集合的输入数据的 File对象。
        结果
        一个新的 Font[]
        异常
        FontFormatException - 如果 File不包含集合的任何元素所需的字体表,或者它根本不包含任何字体。
        IOException - 如果 fontFile无法读取。
        从以下版本开始:
        9
        另请参见:
        GraphicsEnvironment.registerFont(Font)
      • createFont

        public static Font createFont​(int fontFormat,
                                      InputStream fontStream)
                               throws FontFormatException,
                                      IOException
        使用指定的字体类型和输入数据返回新的Font 创建新的FontFont值为1,样式为PLAIN 然后,此基本字体可与deriveFont中的deriveFont方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font对象。 此方法不会关闭InputStream

        为了使Font提供给字体构造函数返回Font必须在登记GraphicsEnvironment拨打registerFont(Font)

        参数
        fontFormat -该类型Font ,这是TRUETYPE_FONT如果指定一个TrueType资源。 如果指定了Type 1资源,则为TYPE1_FONT
        fontStream - 表示字体输入数据的 InputStream对象。
        结果
        使用指定的字体类型创建的新 Font
        异常
        IllegalArgumentException - 如果 fontFormat不是 TRUETYPE_FONTTYPE1_FONT
        FontFormatException - 如果 fontStream数据不包含指定格式的必需字体表。
        IOException - 如果 fontStream无法完全读取。
        从以下版本开始:
        1.3
        另请参见:
        GraphicsEnvironment.registerFont(Font)
      • createFont

        public static Font createFont​(int fontFormat,
                                      File fontFile)
                               throws FontFormatException,
                                      IOException
        使用指定的字体类型和指定的字体文件返回新的Font 创建新的FontFont值为1,样式为PLAIN 然后,此基本字体可与deriveFont中的deriveFont方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font对象。
        参数
        fontFormat -该类型Font ,这是TRUETYPE_FONT如果指定或者一个TrueType资源TYPE1_FONT如果指定了类型1资源。 只要引用返回的字体或其派生字体,实现可以继续访问fontFile以检索字体数据。 因此,如果文件被更改或变得不可访问,则结果是不确定的。

        为了使Font提供给字体构造函数返回Font必须在登记GraphicsEnvironment拨打registerFont(Font)

        fontFile - 表示字体输入数据的 File对象。
        结果
        使用指定的字体类型创建的新 Font
        异常
        IllegalArgumentException - 如果 fontFormat不是 TRUETYPE_FONTTYPE1_FONT
        NullPointerException - 如果 fontFile为空。
        IOException - 如果 fontFile无法读取。
        FontFormatException - 如果 fontFile不包含指定格式的必需字体表。
        SecurityException - 如果执行代码没有从文件中读取的权限。
        从以下版本开始:
        1.5
        另请参见:
        GraphicsEnvironment.registerFont(Font)
      • getTransform

        public AffineTransform getTransform()
        返回与此Font关联的转换的副本。 此转换不一定是用于构造字体的转换。 如果字体具有算法上标或宽度调整,则将其合并到返回的AffineTransform

        通常,不会转换字体。 客户端通常应首先调用isTransformed() ,并且只有在isTransformed返回true时才调用此方法。

        结果
        一个AffineTransform对象表示此的变换属性Font对象。
      • getFamily

        public String getFamily()
        返回此Font的系列名称。

        字体的系列名称是特定于字体的。 两种字体如Helvetica Italic和Helvetica Bold具有相同的姓氏Helvetica ,而其字体名称为Helvetica BoldHelvetica Italic 可以使用GraphicsEnvironment.getAvailableFontFamilyNames()方法获得可用系列名称列表。

        使用getName获取字体的逻辑名称。 使用getFontName获取字体的字体名称。

        结果
        String是这个 Font的系列名称。
        从以下版本开始:
        1.1
        另请参见:
        getName()getFontName()
      • getFamily

        public String getFamily​(Locale l)
        返回此Font的系列名称,已针对指定的语言环境进行了本地化。

        字体的系列名称是特定于字体的。 两种字体如Helvetica Italic和Helvetica Bold具有相同的姓氏Helvetica ,而其字体名称为Helvetica BoldHelvetica Italic 可以使用GraphicsEnvironment.getAvailableFontFamilyNames()方法获得可用系列名称列表。

        使用getFontName获取字体的字体名称。

        参数
        l - 要获取其姓氏的语言环境
        结果
        String表示字体的系列名称,已针对指定的区域设置进行了本地化。
        从以下版本开始:
        1.2
        另请参见:
        getFontName()Locale
      • getPSName

        public String getPSName()
        返回此Font的postscript名称。 使用getFamily获取字体的系列名称。 使用getFontName获取字体的字体名称。
        结果
        String表示此 Font的postscript名称。
        从以下版本开始:
        1.2
      • getName

        public String getName()
        返回此Font的逻辑名称。 使用getFamily获取字体的系列名称。 使用getFontName获取字体的字体名称。
        结果
        String表示此 Font的逻辑名称。
        从以下版本开始:
        1.0
        另请参见:
        getFamily()getFontName()
      • getFontName

        public String getFontName()
        返回此Font的字体名称。 例如,Helvetica Bold可以作为字体名称返回。 使用getFamily获取字体的系列名称。 使用getName获取字体的逻辑名称。
        结果
        String表示此 Font的字体名称。
        从以下版本开始:
        1.2
        另请参见:
        getFamily()getName()
      • getFontName

        public String getFontName​(Locale l)
        返回Font的字体Font名称,已针对指定的区域设置进行了本地化。 例如,Helvetica Fett可以作为字体名称返回。 使用getFamily获取字体的系列名称。
        参数
        l - 要获取字体名称的语言环境
        结果
        表示字体 String名称的 String ,已针对指定的区域设置进行了本地化。
        另请参见:
        getFamily()Locale
      • getStyle

        public int getStyle()
        返回此Font的样式。 风格可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。
        结果
        这款 Font的风格
        从以下版本开始:
        1.0
        另请参见:
        isPlain()isBold()isItalic()
      • getSize

        public int getSize()
        返回此Font ,舍入为整数。 大多数用户都熟悉使用磅值来指定字体中字形的大小。 此点大小定义单个间隔文本文档中一行基线与后一行基线之间的度量。 点大小基于印刷点 ,大约1/72英寸。

        Java(tm)2D API采用以下约定:一个点相当于用户坐标中的一个单元。 当使用归一化变换将用户空间坐标转换为设备空间坐标时,72个用户空间单位在设备空间中等于1英寸。 在这种情况下,一个点是1/72英寸。

        结果
        这个 Font是1/72英寸单位。
        从以下版本开始:
        1.0
        另请参见:
        getSize2D()GraphicsConfiguration.getDefaultTransform()GraphicsConfiguration.getNormalizingTransform()
      • getSize2D

        public float getSize2D()
        float值返回此 Fontfloat值。
        结果
        Font的点大小为 float
        从以下版本开始:
        1.2
        另请参见:
        getSize()
      • isPlain

        public boolean isPlain()
        指示此 Font对象的样式是否为PLAIN。
        结果
        true如果这Font具有PLAIN风格; 否则为false
        从以下版本开始:
        1.0
        另请参见:
        getStyle()
      • isBold

        public boolean isBold()
        指示此 Font对象的样式是否为BOLD。
        结果
        trueFont对象的风格大胆 否则为false
        从以下版本开始:
        1.0
        另请参见:
        getStyle()
      • isItalic

        public boolean isItalic()
        指示此 Font对象的样式是否为ITALIC。
        结果
        trueFont对象的风格是ITALIC的话; 否则为false
        从以下版本开始:
        1.0
        另请参见:
        getStyle()
      • isTransformed

        public boolean isTransformed()
        指示除了Size属性之外,此 Font对象是否具有影响其大小的变换。
        结果
        true如果此Font对象具有非标识AffineTransform属性。 否则为false
        从以下版本开始:
        1.4
        另请参见:
        getTransform()
      • hasLayoutAttributes

        public boolean hasLayoutAttributes()
        如果此Font包含需要额外布局处理的属性,则返回true。
        结果
        如果字体具有布局属性,则为true
        从以下版本开始:
        1.6
      • getFont

        public static Font getFont​(String nm)
        从系统属性列表中返回Font对象。 nm被视为要获取的系统属性的名称。 然后,根据规范Font.decode(String)将此属性的String值解释为Font对象。如果未找到指定的属性,或者执行代码没有读取属性的权限,则返回null。
        参数
        nm - 财产名称
        结果
        属性名称描述的 Font对象,如果不存在此类属性,则为null。
        异常
        NullPointerException - 如果nm为null。
        从以下版本开始:
        1.2
        另请参见:
        decode(String)
      • decode

        public static Font decode​(String str)
        返回Font ,该str参数描述。 要确保此方法返回所需的Font,请使用以下方法之一格式化str参数
        • 字体名-风格的pointsize
        • 字体名-的pointsize
        • 字体名风格
        • 字体名
        • fontname style pointsize
        • fontname pointsize
        • fontname样式
        • 字体名
        在哪种风格四个不区分大小写的字符串之一: "PLAIN""BOLD""BOLDITALIC" ,或"ITALIC" ,和的pointsize是点大小的正十进制整数表示。 例如,如果您希望字体为Arial,粗体,点大小为18,则可以使用以下方法调用此方法:“Arial-BOLD-18”。 这相当于调用Font构造函数: new Font("Arial", Font.BOLD, 18); ,并且值被解释为该构造函数指定的值。

        有效的尾随十进制字段始终被解释为pointsize。 因此,不应在仅字体名表单中使用包含尾随小数值的fontname。

        如果样式名称字段不是有效样式字符串之一,则将其解释为字体名称的一部分,并使用默认样式。

        只有一个''或' - '可用于分隔输入中的字段。 标识的分隔符是最接近字符串末尾的分隔符,它将有效的pointsize或有效的样式名称与字符串的其余部分分开。 Null(空)pointsize和样式字段被视为有效字段,具有该字段的默认值。

        某些字体名称可能包含分隔符“'或” - “。 如果str没有形成3个组件,例如stylepointsize字段不存在于str ,并且fontname也包含确定为分隔符字符的字符,那么它们看起来像是fontname一部分的这些字符可能改为解释为分隔符,因此可能无法正确识别字体名称。

        默认大小为12,默认样式为PLAIN。 如果str未指定有效大小,则返回的Font的大小为12.如果str未指定有效样式,则返回的Font的样式为PLAIN。 如果未在str参数中指定有效的字体名称,则此方法将返回具有系列名称“Dialog”的字体。 要确定系统上可用的字体系列名称,请使用GraphicsEnvironment.getAvailableFontFamilyNames()方法。 如果strnull ,则返回新的Font ,其姓氏为“Dialog”,大小为12,PLAIN样式。

        参数
        str - 字体名称或 null
        结果
        Font对象 str描述,或一个新的默认 Font如果 strnull
        从以下版本开始:
        1.1
        另请参见:
        getFamily()
      • getFont

        public static Font getFont​(String nm,
                                   Font font)
        从系统属性列表中获取指定的Font getProperty方法System ,第一个参数被视为要获取的系统属性的名称。 然后,此属性的String值被解释为Font对象。

        属性值应为Font.decode(String)接受的格式之一。如果未找到指定的属性,或者执行代码没有读取属性的权限,则返回font参数。

        参数
        nm - 不区分大小写的属性名称
        font - 如果未定义属性 nm则返回默认值 Font
        结果
        Font价值 Font
        异常
        NullPointerException - 如果nm为null。
        另请参见:
        decode(String)
      • equals

        public boolean equals​(Object obj)
        将此 Font对象与指定的 Object
        重写:
        equalsObject
        参数
        obj - 比较 Object
        结果
        true如果对象相同或参数是描述与此对象相同的字体的Font对象; 否则为false
        从以下版本开始:
        1.0
        另请参见:
        Object.hashCode()HashMap
      • toString

        public String toString()
        将此 Font对象转换为 String表示形式。
        重写:
        toStringObject
        结果
        String表示此 Font对象。
        从以下版本开始:
        1.0
      • getNumGlyphs

        public int getNumGlyphs()
        返回此Font的字形数。 Font字形代码范围为0至getNumGlyphs() - 1。
        结果
        Font的字形数。
        从以下版本开始:
        1.2
      • getMissingGlyphCode

        public int getMissingGlyphCode()
        返回当此 Font没有指定unicode代码点的字形时使用的 Font
        结果
        这个Font的 Font
        从以下版本开始:
        1.2
      • getBaselineFor

        public byte getBaselineFor​(char c)
        返回适合显示此字符的基线。

        大字体可以支持不同的书写系统,每个系统可以使用不同的基线。 character参数决定了要使用的书写系统。 客户端不应假设所有字符都使用相同的基线。

        参数
        c - 用于标识书写系统的字符
        结果
        适合指定字符的基线。
        从以下版本开始:
        1.2
        另请参见:
        LineMetrics.getBaselineOffsets()ROMAN_BASELINECENTER_BASELINEHANGING_BASELINE
      • getAttributes

        public Map<TextAttribute,​?> getAttributes()
        返回此Font可用的字体属性的映射。 属性包括连字和字形替换之类的东西。
        结果
        这个 Font的属性map。
      • getAvailableAttributes

        public AttributedCharacterIterator.Attribute[] getAvailableAttributes()
        返回此Font支持的所有属性的键。 这些属性可用于派生其他字体。
        结果
        包含此 Font支持的所有属性的键的数组。
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(int style,
                               float size)
        通过复制此 Font对象并应用新的样式和大小来创建新的 Font对象。
        参数
        style - 新款 Font
        size - 新的 Font的大小
        结果
        一个新的 Font对象。
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(int style,
                               AffineTransform trans)
        通过复制此 Font对象并应用新样式和变换来创建新的 Font对象。
        参数
        style - 新款 Font
        trans - 与新的 AffineTransform相关联的 Font
        结果
        一个新的 Font对象。
        异常
        IllegalArgumentException - 如果 transnull
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(float size)
        通过复制当前的 Font对象并对其应用新大小来创建新的 Font对象。
        参数
        size - 新的 Font的大小。
        结果
        一个新的 Font对象。
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(AffineTransform trans)
        通过复制当前的 Font对象并对其应用新变换来创建新的 Font对象。
        参数
        trans - 与新的 AffineTransform相关联的 Font
        结果
        一个新的 Font对象。
        异常
        IllegalArgumentException - 如果 transnull
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(int style)
        通过复制当前的 Font对象并对其应用新样式来创建新的 Font对象。
        参数
        style - 新款 Font
        结果
        一个新的 Font对象。
        从以下版本开始:
        1.2
      • deriveFont

        public Font deriveFont​(Map<? extends AttributedCharacterIterator.Attribute,​?> attributes)
        通过复制当前的 Font对象并 Font应用一组新的字体属性来创建新的 Font对象。
        参数
        attributes - 为新 Font启用的属性 Font
        结果
        一个新的 Font对象。
        从以下版本开始:
        1.2
      • canDisplay

        public boolean canDisplay​(char c)
        检查此Font是否具有指定字符的字形。

        注意:此方法无法处理supplementary characters 要支持所有Unicode字符(包括增补字符),请使用canDisplay(int)方法或canDisplayUpTo方法。

        参数
        c - 需要字形的字符
        结果
        true如果这个Font有一个此字符的字形; 否则为false
        从以下版本开始:
        1.2
      • canDisplay

        public boolean canDisplay​(int codePoint)
        检查此 Font是否具有指定字符的字形。
        参数
        codePoint - 需要字形的字符(Unicode代码点)。
        结果
        true如果这个Font有一个字符的字形; 否则为false
        异常
        IllegalArgumentException - 如果代码点不是有效的Unicode代码点。
        从以下版本开始:
        1.5
        另请参见:
        Character.isValidCodePoint(int)
      • canDisplayUpTo

        public int canDisplayUpTo​(String str)
        指示此Font是否可以显示指定的String 对于具有Unicode编码的字符串,了解特定字体是否可以显示字符串非常重要。 此方法将偏移量返回到String str ,这是Font在不使用缺少的字形代码的情况下无法显示的第一个字符。 如果Font可以显示所有字符,则返回-1。
        参数
        str - 对于 String
        结果
        的偏移量str指向的第一个字符str ,这Font不能显示; -1如果Font可以显示所有字符str
        从以下版本开始:
        1.2
      • canDisplayUpTo

        public int canDisplayUpTo​(char[] text,
                                  int start,
                                  int limit)
        指示此是否Font可以显示在指定的字符text开始start ,并在结束limit 这种方法是一种方便的过载。
        参数
        text - 指定的 char值数组
        start - 指定的起始偏移量(在 char s内)到指定的 char数组值
        limit - 指定的结束偏移量(在 char )到指定的 char值数组中
        结果
        的偏移量text指向的第一个字符text ,这Font不能显示; -1如果Font可以显示所有字符text
        从以下版本开始:
        1.2
      • canDisplayUpTo

        public int canDisplayUpTo​(CharacterIterator iter,
                                  int start,
                                  int limit)
        指示此是否 Font可以显示由指定的文本 iter开始 start在结束 limit
        参数
        iter - CharacterIterator对象
        start - 指定的起始偏移量为指定的 CharacterIterator
        limit - 指定的结束偏移量到指定的 CharacterIterator
        结果
        偏移到iter ,指向此Font无法显示的iter中的第一个字符; -1如果Font可以显示所有字符iter
        从以下版本开始:
        1.2
      • getItalicAngle

        public float getItalicAngle()
        返回此Font的斜体角度。 斜体角度是插入符号的倒斜率,最符合此Font的姿势。
        结果
        这个 Font的ITALIC风格的 Font
        另请参见:
        TextAttribute.POSTURE
      • hasUniformLineMetrics

        public boolean hasUniformLineMetrics()
        检查此Font是否具有统一的线路指标。 逻辑Font可能是复合字体,这意味着它由不同的物理字体组成,以涵盖不同的代码范围。 这些字体中的每一种都可能有不同的LineMetrics 如果逻辑Font是单个字体,则指标将是统一的。
        结果
        trueFont拥有统一的Font指标; 否则为false
      • getLineMetrics

        public LineMetrics getLineMetrics​(String str,
                                          int beginIndex,
                                          int limit,
                                          FontRenderContext frc)
        返回使用指定参数创建的 LineMetrics对象。
        参数
        str - 指定的 String
        beginIndex - 初始偏移量为 str
        limit - 结束偏移量为 str
        frc - 指定的 FontRenderContext
        结果
        使用指定参数创建的 LineMetrics对象。
      • getLineMetrics

        public LineMetrics getLineMetrics​(char[] chars,
                                          int beginIndex,
                                          int limit,
                                          FontRenderContext frc)
        返回使用指定参数创建的 LineMetrics对象。
        参数
        chars - 一组字符
        beginIndex - 初始偏移量为 chars
        limit - 结束偏移量为 chars
        frc - 指定的 FontRenderContext
        结果
        使用指定参数创建的 LineMetrics对象。
      • getLineMetrics

        public LineMetrics getLineMetrics​(CharacterIterator ci,
                                          int beginIndex,
                                          int limit,
                                          FontRenderContext frc)
        返回使用指定参数创建的 LineMetrics对象。
        参数
        ci - 指定的 CharacterIterator
        beginIndex -初始偏移 ci
        limit - 结束偏移量为 ci
        frc - 指定的 FontRenderContext
        结果
        使用指定参数创建的 LineMetrics对象。
      • getStringBounds

        public Rectangle2D getStringBounds​(String str,
                                           FontRenderContext frc)
        返回指定的String中指定的FontRenderContext的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds方法TextLayout

        注意:返回的边界位于基线相对坐标中(请参阅class notes )。

        参数
        str - 指定的 String
        frc - 指定的 FontRenderContext
        结果
        a Rectangle2D ,它是指定的String中指定的FontRenderContext的边界框。
        从以下版本开始:
        1.2
        另请参见:
        FontRenderContextcreateGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
      • getStringBounds

        public Rectangle2D getStringBounds​(String str,
                                           int beginIndex,
                                           int limit,
                                           FontRenderContext frc)
        返回指定的String中指定的FontRenderContext的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获取包含所有文本的可视边界框,请使用getBounds方法TextLayout

        注意:返回的边界位于基线相对坐标中(请参阅class notes )。

        参数
        str - 指定的 String
        beginIndex - 初始偏移量为 str
        limit - 结束偏移量为 str
        frc - 指定的 FontRenderContext
        结果
        a Rectangle2D ,它是指定的 String中指定的 FontRenderContext的边界框。
        异常
        IndexOutOfBoundsException -如果 beginIndex小于零,或 limit比的长度大 str ,或 beginIndex大于 limit
        从以下版本开始:
        1.2
        另请参见:
        FontRenderContextcreateGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
      • getStringBounds

        public Rectangle2D getStringBounds​(char[] chars,
                                           int beginIndex,
                                           int limit,
                                           FontRenderContext frc)
        返回指定的FontRenderContext中指定字符数组的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds方法TextLayout

        注意:返回的边界位于基线相对坐标中(请参阅class notes )。

        参数
        chars - 一组字符
        beginIndex - 字符数组中的初始偏移量
        limit - 字符数组中的结束偏移量
        frc - 指定的 FontRenderContext
        结果
        a Rectangle2D ,它是指定的 FontRenderContext中指定字符数组的边界框。
        异常
        IndexOutOfBoundsException -如果 beginIndex小于零,或 limit比的长度大 chars ,或 beginIndex大于 limit
        从以下版本开始:
        1.2
        另请参见:
        FontRenderContextcreateGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
      • getStringBounds

        public Rectangle2D getStringBounds​(CharacterIterator ci,
                                           int beginIndex,
                                           int limit,
                                           FontRenderContext frc)
        返回指定索引的字符的逻辑边界CharacterIterator指定FontRenderContext 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds方法TextLayout

        注意:返回的边界位于基线相对坐标(参见class notes )。

        参数
        ci - 指定的 CharacterIterator
        beginIndex -初始偏移 ci
        limit - 结束偏移量在 ci
        frc - 指定的 FontRenderContext
        结果
        一个 Rectangle2D即在指定的索引的字符的边界框 CharacterIterator在指定 FontRenderContext
        异常
        IndexOutOfBoundsException -如果 beginIndex小于的起始索引 ci ,或 limit比的端指数大于 ci ,或 beginIndex大于 limit
        从以下版本开始:
        1.2
        另请参见:
        FontRenderContextcreateGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
      • getMaxCharBounds

        public Rectangle2D getMaxCharBounds​(FontRenderContext frc)
        返回具有指定的FontRenderContext定义的最大边界的字符的边界。

        注意:返回的边界位于基线相对坐标中(请参阅class notes )。

        参数
        frc - 指定的 FontRenderContext
        结果
        Rectangle2D ,它是具有最大边界的角色的边界框。
      • createGlyphVector

        public GlyphVector createGlyphVector​(FontRenderContext frc,
                                             String str)
        通过在此Font基于Unicode cmap将字符一对一地映射到字形来创建Font 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。
        参数
        frc - 指定的 FontRenderContext
        str - 指定的 String
        结果
        GlyphVector使用指定的创建 String和指定 FontRenderContext
      • createGlyphVector

        public GlyphVector createGlyphVector​(FontRenderContext frc,
                                             char[] chars)
        通过在此Font基于Unicode cmap将字符一对一地映射到字形来创建Font 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。
        参数
        frc - 指定的 FontRenderContext
        chars - 指定的字符数组
        结果
        GlyphVector与指定的字符数组和指定创建 FontRenderContext
      • createGlyphVector

        public GlyphVector createGlyphVector​(FontRenderContext frc,
                                             CharacterIterator ci)
        通过在Font中基于Unicode cmap将指定字符一对一地映射到字形来创建Font 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。
        参数
        frc - 指定的 FontRenderContext
        ci - 指定的 CharacterIterator
        结果
        GlyphVector使用指定的创建 CharacterIterator和指定 FontRenderContext
      • createGlyphVector

        public GlyphVector createGlyphVector​(FontRenderContext frc,
                                             int[] glyphCodes)
        通过在此Font基于Unicode cmap将字符一对一地映射到字形来创建Font 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。
        参数
        frc - 指定的 FontRenderContext
        glyphCodes - 指定的整数数组
        结果
        GlyphVector带有指定整数数组和指定创建 FontRenderContext
      • layoutGlyphVector

        public GlyphVector layoutGlyphVector​(FontRenderContext frc,
                                             char[] text,
                                             int start,
                                             int limit,
                                             int flags)
        返回一个新的GlyphVector对象,如果可能,执行文本的完整布局。 复杂文本需要完整布局,例如阿拉伯语或印地语。 对不同脚本的支持取决于字体和实现。

        布局需要双向分析,由Bidi执行,并且只应对具有统一方向的文本执行。 方向在flags参数中指示,使用LAYOUT_RIGHT_TO_LEFT指示从右到左(阿拉伯语和希伯来语)运行方向,或LAYOUT_LEFT_TO_RIGHT指示从左到右(英语)运行方向。

        此外,某些操作(例如阿拉伯语整形)需要上下文,因此开始和限制处的字符可以具有适当的形状。 有时,提供范围之外的缓冲区中的数据没有有效数据。 可以将值LAYOUT_NO_START_CONTEXT和LAYOUT_NO_LIMIT_CONTEXT添加到flags参数,以指示不应分别检查开始前或限制后的文本的上下文。

        flags参数的所有其他值都是保留的。

        参数
        frc - 指定的 FontRenderContext
        text - 要布局的文本
        start - 用于 GlyphVector的文本的 GlyphVector
        limit - 用于 GlyphVector的文本的限制
        flags - 如上所述的控制标志
        结果
        新的 GlyphVector表示开始和限制之间的文本,选择和定位字形以便最好地表示文本
        异常
        ArrayIndexOutOfBoundsException - 如果开始或限制超出范围
        从以下版本开始:
        1.4
        另请参见:
        BidiLAYOUT_LEFT_TO_RIGHTLAYOUT_RIGHT_TO_LEFTLAYOUT_NO_START_CONTEXTLAYOUT_NO_LIMIT_CONTEXT