精华内容
下载资源
问答
  • java Font

    千次阅读 2016-09-12 14:52:23
    原文章地址:http://www.apihome.cn/api/java/Font.html ... java.awt.Font 所有已实现的接口: Serializable 直接已知子类: FontUIResource public class Fontextends Objectimplements S



    java.awt
    类 Font

    java.lang.Object
      java.awt.Font
    
    所有已实现的接口:
    Serializable
    直接已知子类:
    FontUIResource

    public class Font
    extends Objectimplements Serializable

    Font 类表示字体,可以使用它以可见方式呈现文本。字体提供将字符 序列映射到字形 序列所需要的信息,以便在 Graphics 对象和 Component 对象上呈现字形序列。

    字符和字形

    字符 是表示项的符号(如字母、数字或具有抽象意义的标点)。例如,'g'G 的拉丁小写字母)是一个字符。

    字形 是用来呈现字符或字符序列的一种形状。在简单的书写系统(如拉丁文)中,通常一个字形就表示一个字符。但在一般情况下,字符和字形并没有一对一的对应关系。例如,字符 'á' A 的带重音符号的拉丁小写字母 可以由两个字形表示:一个是 'a',一个是 '´'。另一方面,两字符的字符串 "fi" 可以由单个字形 "fi" 连字表示。在复杂的书写系统(如阿拉伯语或南亚和东南亚语言)中,字符与字形之间的关系可能更复杂,涉及到依赖于上下文的字形选择以及字形重排序。字体封装了呈现所选择的字符集所需的字形集,还封装了将字符序列映射到相应的字形序列所需的表。

    物理字体和逻辑字体

    Java Platform 可以区分两种字体:物理 字体和逻辑 字体。

    物理 字体是实际的字体库,包含字形数据和表,这些数据和表使用字体技术(如 TrueType 或 PostScript Type 1)将字符序列映射到字形序列。Java Platform 的所有实现都支持 TrueType 字体;对其他字体技术的支持是与实现相关的。物理字体可以使用字体名称,如 Helvetica、Palatino、HonMincho 或任意数量的其他字体名称。通常,每种物理字体只支持有限的书写系统集合,例如,只支持拉丁文字符,或者只支持日文和基本拉丁文。可用的物理字体集合随配置的不同而有所不同。要求特定字体的应用程序可以使用 createFont 方法来捆绑这些字体,并对其进行实例化。

    逻辑 字体是由必须受所有 Java 运行时环境支持的 Java 平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput。这些逻辑字体不是实际的字体库。此外,由 Java 运行时环境将逻辑字体名称映射到物理字体。映射关系与实现和通常语言环境相关,因此它们提供的外观和规格各不相同。通常,为了覆盖庞大的字符范围,每种逻辑字体名称都映射到几种物理字体。

    同级的 AWT 组件(如 Label 和 TextField)只可以使用逻辑字体。

    有关使用物理字体或逻辑字体的相对优势和劣势的讨论,请参阅 Internationalization FAQ 文档。

    字体外观和名称

    Font 可以有多个外观,如 heavy、medium、oblique、gothic 和 regular。所有这些外观都有相似的排字设计。

    可以从 Font 对象获得三种不同的名称。逻辑字体名称 只是用来构造字体的名称。字体外观名称,或外观名称 是特定字体外观的名称,如 Helvetica Bold。系列名称 是字体系列的名称,用来确定多种外观(如 Helvetica)的排字设计。

    Font 类表示字体外观集合中字体外观的实例,字体外观集合位于主机系统的系统资源中。例如,Arial Bold 和 Courier Bold Italic 是字体外观。有几个 Font 对象与字体外观相关,每个对象在大小、样式、变换和字体特征上都有所不同。

    GraphicsEnvironment 类的 getAllFonts 方法返回系统中所有可用字体外观组成的数组。这些字体外观被作为 Font 对象返回,对象的大小为 1,具有恒等变换和默认字体特征。这些基本字体可以用来派生新的 Font 对象,使之具有变化的大小、样式、变换和字体特征,这些可以通过此类中的 deriveFont 方法实现。

    Font 和 TextAttribute

    Font 支持大多数 TextAttribute。这使得一些操作(如呈现带下划线的文本)变得更方便,因为没必要再显式构造一个 TextLayout 对象。通过使用 TextAttribute 值的 Map 来构造或派生属性,可以在 Font 上设置属性。

    一些 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 属性可能存在,则应该使用 static getFont(java.util.Map) 方法。有关更多信息,请参阅 TextAttribute.FONT。

    一些属性会带来额外的呈现开销,并且可能调用布局。如果某一 Font 具有这样的属性,那么 hasLayoutAttributes 方法将返回 true。

    注:字体旋转可能导致文本基线也跟着旋转。为了应对这种(很少见的)可能性,可以指定字体 API 返回字体规格,并使参数“位于相对于基线的坐标中”。这将 'x' 坐标映射到沿基线的某段距离处(正 x 表示沿基线的正方向),将 'y' 坐标映射到位于 'x' 坐标的基线垂直方向的某段距离处(正 y 表示从基线向量顺时针旋转 90 度)。用于实现这些的 API 特别重要,它们被调出,就像具有“相对于基线的坐标”一样。

    另请参见:
    序列化表格

    字段摘要
    static int BOLD
              粗体样式常量。
    static int CENTER_BASELINE
              布置文本时,在表意文字的脚本(如中文、日文和韩文)中使用的基线。
    static String DIALOG
              逻辑字体 "Dialog" 的规范系列名称的 String 常量。
    static String DIALOG_INPUT
              逻辑字体 "DialogInput" 的规范系列名称的 String 常量。
    static int HANGING_BASELINE
              布置文本时,在 Devanigiri 和类似脚本中使用的基线。
    static int ITALIC
              斜体样式常量。
    static int LAYOUT_LEFT_TO_RIGHT
              layoutGlyphVector 的标志,指示文本是从左到右的,这由 Bidi 分析确定。
    static int LAYOUT_NO_LIMIT_CONTEXT
              layoutGlyphVector 的标志,指示不应该检查指定 limit 之后的 char 数组中的文本。
    static int LAYOUT_NO_START_CONTEXT
              layoutGlyphVector 的标志,指示不应该检查指定 start 之前的 char 数组中的文本。
    static int LAYOUT_RIGHT_TO_LEFT
              layoutGlyphVector 的标志,指示文本是从右到左的,这由 Bidi 分析确定。
    static String MONOSPACED
              逻辑字体 "Monospaced" 的规范系列名称的 String 常量。
    protected  String name
              Font 的逻辑名称,它被传递到构造方法中。
    static int PLAIN
              普通样式常量。
    protected  float pointSize
              以 float 形式表示的 Font 的磅值大小。
    static int ROMAN_BASELINE
              布置文本时,在大多数 Roman 脚本中使用的基线。
    static String SANS_SERIF
              逻辑字体 "SansSerif" 的规范系列名称的 String 常量。
    static String SERIF
              逻辑字体 "Serif" 的规范系列名称的 String 常量。
    protected  int size
              Font 的磅值大小,舍入为整数。
    protected  int style
              Font 的样式,它被传递到构造方法中。
    static int TRUETYPE_FONT
              标识 TRUETYPE 类型的字体资源。
    static int TYPE1_FONT
              标识 TYPE1 类型的字体资源。
     
    构造方法摘要
    protected Font(Font font)
              根据指定 font 创建一个新 Font
      Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
              创建一个具有指定属性的新 Font
      Font(String name, int style, int size)
              根据指定名称、样式和磅值大小,创建一个新 Font
     
    方法摘要
     boolean canDisplay(char c)
              检查此 Font 是否具有指定字符的字形。
     boolean canDisplay(int codePoint)
              检查此 Font 是否具有指定字符的字形。
     int canDisplayUpTo(char[] text, int start, int limit)
              指示此 Font 是否可以显示指定 text 中从 start 开始至 limit 结束的所有字符。
     int canDisplayUpTo(CharacterIterator iter, int start, int limit)
              指示此 Font 是否可以显示由 iter 指定的文本(从 start 开始至 limit 结束)。
     int canDisplayUpTo(String str)
              指示此 Font 是否可以显示指定的 String
    static Font createFont(int fontFormat, File fontFile)
              返回一个使用指定字体类型和指定字体文件的新 Font
    static Font createFont(int fontFormat, InputStream fontStream)
              返回一个使用指定字体类型和输入数据的新 Font
     GlyphVector createGlyphVector(FontRenderContext frc, char[] chars)
              根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。
     GlyphVector createGlyphVector(FontRenderContext frc, CharacterIterator ci)
              根据此 Font 中的 Unicode cmap 将指定字符一一映射到字形,从而创建一个 GlyphVector。
     GlyphVector createGlyphVector(FontRenderContext frc, int[] glyphCodes)
              根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。
     GlyphVector createGlyphVector(FontRenderContext frc, String str)
              根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。
    static Font decode(String str)
              返回 str 参数所描述的 Font
     Font deriveFont(AffineTransform trans)
              通过复制当前 Font 对象并应用新的变换,创建一个新 Font 对象。
     Font deriveFont(float size)
              通过复制当前 Font 对象并应用新的大小,创建一个新 Font 对象。
     Font deriveFont(int style)
              通过复制当前的 Font 对象,并应用新的样式,创建一个新 Font 对象。
     Font deriveFont(int style, AffineTransform trans)
              通过复制此 Font 对象并应用新样式和变换,创建一个新 Font 对象。
     Font deriveFont(int style, float size)
              通过复制此 Font 对象并应用新样式和大小,创建一个新 Font 对象。
     Font deriveFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
              通过复制当前 Font 对象并应用新的字体属性集,创建一个新 Font 对象。
     boolean equals(Object obj)
              将此 Font 对象与指定 Object 进行比较。
    protected  void finalize()
              移除本机 Font 对象。
     Map<TextAttribute,?> getAttributes()
              返回此 Font 中可用的字体属性的映射。
     AttributedCharacterIterator.Attribute[] getAvailableAttributes()
              返回由此 Font 支持的所有属性的键。
     byte getBaselineFor(char c)
              返回适合用来显示此字符的基线。
     String getFamily()
              返回此 Font 的系列名称。
     String getFamily(Locale l)
              返回此 Font 的系列名称(已经针对指定语言环境进行了本地化)。
    static Font getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
              返回适合于这些属性的 Font
    static Font getFont(String nm)
              从系统属性列表返回一个 Font 对象。
    static Font getFont(String nm, Font font)
              从系统属性列表获取指定的 Font
     String getFontName()
              返回此 Font 的字体外观名称。
     String getFontName(Locale l)
              返回此 Font 的字体外观名称(已经针对指定语言环境进行了本地化)。
     float getItalicAngle()
              返回此 Font 的斜角。
     LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, FontRenderContext frc)
              返回使用指定参数创建的 LineMetrics 对象。
     LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
              返回使用指定参数创建的 LineMetrics 对象。
     LineMetrics getLineMetrics(String str, FontRenderContext frc)
              返回一个使用指定 String 和 FontRenderContext 创建的 LineMetrics 对象。
     LineMetrics getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc)
              返回使用指定参数创建的 LineMetrics 对象。
     Rectangle2D getMaxCharBounds(FontRenderContext frc)
              返回最大边界定义在 FontRenderContext 中的字符的边界。
     int getMissingGlyphCode()
              返回此 Font 不具有指定的 unicode 字形时所使用的 glyphCode 代码点。
     String getName()
              返回此 Font 的逻辑名称。
     int getNumGlyphs()
              返回此 Font 中的字形数量。
     java.awt.peer.FontPeer getPeer()
              已过时。 现在,字体呈现与平台无关。
     String getPSName()
              返回此 Font 的 postscript 名称。
     int getSize()
              返回此 Font 的磅值大小,舍入为整数。
     float getSize2D()
              返回此 Font 的磅值大小(以 float 值表示)。
     Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc)
              返回指定 FontRenderContext 指定字符数组的逻辑边界。
     Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
              返回指定 FontRenderContext 中针对指定 CharacterIterator 进行索引的字符的逻辑边界。
     Rectangle2D getStringBounds(String str, FontRenderContext frc)
              返回指定 FontRenderContext 中指定 String 的逻辑边界。
     Rectangle2D getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc)
              返回指定 FontRenderContext 中指定 String 的逻辑边界。
     int getStyle()
              返回此 Font 的样式。
     AffineTransform getTransform()
              返回与此 Font 相关的变换的副本。
     int hashCode()
              返回此 Font 的哈希码。
     boolean hasLayoutAttributes()
              如果此 Font 包含需要额外布局处理的属性,则返回 true。
     boolean hasUniformLineMetrics()
              检查此 Font 是否具有统一的行规格。
     boolean isBold()
              指示此 Font 对象的样式是否为 BOLD。
     boolean isItalic()
              指示此 Font 对象的样式是否为 ITALIC。
     boolean isPlain()
              指示此 Font 对象的样式是否为 PLAIN。
     boolean isTransformed()
              指示此 Font 对象是否具有影响其大小以及 Size 属性的变换。
     GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags)
              返回一个新 GlyphVector 对象,执行完整的文本布局(如有可能)。
     String toString()
              将此 Font 对象转换为 String 表示形式。
     
    从类 java.lang.Object 继承的方法
    clone, getClass, notify, notifyAll, wait, wait, wait
     

    字段详细信息

    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
    布置文本时,在大多数 Roman 脚本中使用的基线。

    另请参见:
    常量字段值

    CENTER_BASELINE

    public static final int CENTER_BASELINE
    布置文本时,在表意文字的脚本(如中文、日文和韩文)中使用的基线。

    另请参见:
    常量字段值

    HANGING_BASELINE

    public static final int HANGING_BASELINE
    布置文本时,在 Devanigiri 和类似脚本中使用的基线。

    另请参见:
    常量字段值

    TRUETYPE_FONT

    public static final int TRUETYPE_FONT
    标识 TRUETYPE 类型的字体资源。可用它为 createFont(int, java.io.InputStream) 方法指定一个 TrueType 字体资源。

    从以下版本开始:
    1.3
    另请参见:
    常量字段值

    TYPE1_FONT

    public static final int TYPE1_FONT
    标识 TYPE1 类型的字体资源。可用它为 createFont(int, java.io.InputStream) 方法指定一个 Type1 字体资源。

    从以下版本开始:
    1.5
    另请参见:
    常量字段值

    name

    protected String name
    Font 的逻辑名称,它被传递到构造方法中。

    从以下版本开始:
    JDK1.0
    另请参见:
    getName()

    style

    protected int style
    Font 的样式,它被传递到构造方法中。此样式可以为 PLAIN、BOLD、ITALIC 或 BOLD+ITALIC。

    从以下版本开始:
    JDK1.0
    另请参见:
    getStyle()

    size

    protected int size
    Font 的磅值大小,舍入为整数。

    从以下版本开始:
    JDK1.0
    另请参见:
    getSize()

    pointSize

    protected float pointSize
    float 形式表示的 Font 的磅值大小。

    另请参见:
    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 的标志,指示不应该检查指定 start 之前的 char 数组中的文本。

    另请参见:
    常量字段值

    LAYOUT_NO_LIMIT_CONTEXT

    public static final int LAYOUT_NO_LIMIT_CONTEXT
    layoutGlyphVector 的标志,指示不应该检查指定 limit 之后的 char 数组中的文本。

    另请参见:
    常量字段值
    构造方法详细信息

    Font

    public Font(String name,
                int style,
                int size)
    根据指定名称、样式和磅值大小,创建一个新 Font

    字体名称可以是字体外观名称或字体系列名称。它与样式一起使用,以查找合适的字体外观。如果指定了字体系列名称,则使用样式参数从系列中选择最合适的外观。如果指定了字体外观名称,则合并外观的样式和样式参数,以便从同一个系列查找最匹配的字体。例如,如果指定外观名称 "Arial Bold" 及样式 Font.ITALIC,则字体系统在 "Arial" 系列中寻找既是粗体又是斜体的外观,可以将字体实例与物理字体外观 "Arial Bold Italic" 相关联。将样式参数与指定外观的样式合并,而不是执行添加或减去操作。这意味着,指定粗体外观和粗体样式并不会双倍加粗字体,而指定粗体外观和普通样式也不会变细字体。

    如果无法找到所要求样式的外观,则字体系统可以应用样式设计算法来获得所需的样式。例如,如果要求 ITALIC,但是没有可用的斜体外观,则可以通过算法使普通外观倾斜。

    字体名称查找是区分大小写的,可以使用 US 语言环境的大小写转换规则。

    如果 name 参数表示逻辑字体以外的事物,例如表示为物理字体外观或系列名称,并且无法通过实现物理字体或可兼容的替代物映射它,则字体系统会将 Font 实例映射到 "Dialog",因此,通过 getFamily 报告的字体系列名称将是 "Dialog"。

    参数:
    name - 字体名称。可以是字体外观名称或字体系列名称,并且可表示此 GraphicsEnvironment 中找到的逻辑字体或物理字体。逻辑字体的系列名称有:Dialog、DialogInput、Monospaced、Serif 或 SansSerif。预定义 String 常量是为所有这些名称(如 DIALOG)而存在。如果 namenull,则将新 Font逻辑字体名称(由 getName() 返回)设置为 "Default"。
    style - Font 的样式常量。样式参数是整数位掩码,可以为 PLAIN,或 BOLD 和 ITALIC 的按位或(例如,ITALIC 或 BOLD|ITALIC)。如果样式参数不符合任何一个期望的整数位掩码,则将样式设置为 PLAIN。
    size - Font 的磅值大小
    从以下版本开始:
    JDK1.0
    另请参见:
    GraphicsEnvironment.getAllFonts(), GraphicsEnvironment.getAvailableFontFamilyNames()

    Font

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

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

    参数:
    attributes - 分配给新 Font 的属性,或 null
    另请参见:
    TextAttribute

    Font

    protected Font(Font font)
    根据指定 font 创建一个新 Font。此构造方法由子类使用。

    参数:
    font - 用来创建此 Font 的字体。
    抛出:
    NullPointerException - 如果 font 为 null
    从以下版本开始:
    1.6
    方法详细信息

    getPeer

    @Deprecated
    public java.awt.peer.FontPeer getPeer()
    已过时。 现在,字体呈现与平台无关。

    获取此 Font 的同位体。

    返回:
    Font 的同位体。
    从以下版本开始:
    JDK1.1

    getFont

    public static Font getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
    返回适合于这些属性的 Font。如果 attributes 包含一个使用有效 Font 作为其值的 FONT 属性,那么它将与其余所有属性合并。有关更多信息,请参阅 TextAttribute.FONT。

    参数:
    attributes - 分配给新 Font 的属性
    返回:
    使用指定属性创建的新 Font
    抛出:
    NullPointerException - 如果 attributes 为 null。
    从以下版本开始:
    1.2
    另请参见:
    TextAttribute

    createFont

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

    为了使 Font 可用于 Font 构造方法,必须通过调用 registerFont(Font) 在 GraphicsEnviroment 中注册返回的 Font

    参数:
    fontFormat - Font 的类型,如果指定了 TrueType 资源,则类型为 TRUETYPE_FONT,如果指定了 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。创建的新 Font 的磅值大小为 1,样式为 PLAIN。基本字体可以与此类中的 deriveFont 方法一起使用,从而派生出新的 Font 对象,这些对象具有变化的大小、样式、变换和字体特征。

    参数:
    fontFormat - Font 的类型,如果指定了 TrueType 资源,则类型为 TRUETYPE_FONT,如果指定了 Type 1 资源,则类型为 TYPE1_FONT。只要引用了返回的字体,或它派生的字体,实现就可以继续访问 fontFile 以检索字体数据。因此,如果文件被更改,或变成不可访问的,其结果是不确定的。

    为了使 Font 可用于 Font 构造方法,必须通过调用 registerFont(Font) 在 GraphicsEnviroment 中注册返回的 Font

    fontFile - File 对象,表示字体的输入数据。
    返回:
    使用指定字体类型创建的新 Font
    抛出:
    IllegalArgumentException - 如果 fontFormat 不为 TRUETYPE_FONTorTYPE1_FONT
    NullPointerException - 如果 fontFile 为 null。
    IOException - 如果无法读取 fontFile
    FontFormatException - 如果 fontFile 不包含指定格式所需的字体表。
    SecurityException - 如果正在执行的代码没有从文件中读取的权限。
    从以下版本开始:
    1.5
    另请参见:
    GraphicsEnvironment.registerFont(Font)

    getTransform

    public AffineTransform getTransform()
    返回与此 Font 相关的变换的副本。此转换对于用于构造字体的方法而言是没必要的。如果字体具有算法上标(algorithmic superscripting)或宽度调整,那么这将合并到返回的 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 的系列名称。
    从以下版本开始:
    JDK1.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 的逻辑名称。
    从以下版本开始:
    JDK1.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 的字体外观名称(已经针对指定语言环境进行了本地化)。例如,Helvetica Fett 可以作为字体外观名称返回。使用 getFamily 可以获取字体的系列名称。

    参数:
    l - 语言环境,要获得该语言环境的字体外观名称
    返回:
    一个 String,表示字体外观名称(已经针对指定语言环境进行了本地化)。
    另请参见:
    getFamily(), Locale

    getStyle

    public int getStyle()
    返回此 Font 的样式。样式可以为 PLAIN、BOLD、ITALIC 或 BOLD+ITALIC。

    返回:
    Font 的样式
    从以下版本开始:
    JDK1.0
    另请参见:
    isPlain(), isBold(), isItalic()

    getSize

    public int getSize()
    返回此 Font 的磅值大小,舍入为整数。大多数用户都熟悉使用磅值大小 的概念,它用于指定字体中字形的大小。磅值大小定义了单间距文本文档中某行的基线到下一行的基线之间的测量。磅值大小是基于排字磅值 的,大约为 1/72 英寸。

    Java(tm)2D API 规定:1 磅等于用户坐标中的 1 个单位。当使用规范化变换将用户空间坐标转换为设备空间坐标时,72 个用户空间单位等于设备空间中的 1 英寸。在这种情况下,1 磅就是 1/72 英寸。

    返回:
    Font 的磅值大小(以 1/72 英寸为单位)。
    从以下版本开始:
    JDK1.0
    另请参见:
    getSize2D(), GraphicsConfiguration.getDefaultTransform(), GraphicsConfiguration.getNormalizingTransform()

    getSize2D

    public float getSize2D()
    返回此 Font 的磅值大小(以 float 值表示)。

    返回:
    Font 的磅值大小(以 float 值表示)。
    从以下版本开始:
    1.2
    另请参见:
    getSize()

    isPlain

    public boolean isPlain()
    指示此 Font 对象的样式是否为 PLAIN。

    返回:
    如果此 Font 样式为 PLAIN,则返回 true;否则返回 false
    从以下版本开始:
    JDK1.0
    另请参见:
    getStyle()

    isBold

    public boolean isBold()
    指示此 Font 对象的样式是否为 BOLD。

    返回:
    如果此 Font 对象的样式为 BOLD,则返回 true;否则返回 false
    从以下版本开始:
    JDK1.0
    另请参见:
    getStyle()

    isItalic

    public boolean isItalic()
    指示此 Font 对象的样式是否为 ITALIC。

    返回:
    如果此 Font 对象的样式为 ITALIC,则返回 true;否则返回 false
    从以下版本开始:
    JDK1.0
    另请参见:
    getStyle()

    isTransformed

    public boolean isTransformed()
    指示此 Font 对象是否具有影响其大小以及 Size 属性的变换。

    返回:
    如果此 Font 对象具有无标识的 AffineTransform 属性,则返回 true;否则返回 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)
    返回 str 参数所描述的 Font。为了确保此方法返回所需的 Font,可以使用以下方式之一格式化 str 参数。

    • fontname-style-pointsize
    • fontname-pointsize
    • fontname-style
    • fontname
    • fontname style pointsize
    • fontname pointsize
    • fontname style
    • fontname
    其中,style 是以下四个区分大小写的字符串之一:"PLAIN""BOLD""BOLDITALIC""ITALIC",pointsize 是磅值大小的正十进制整数表示形式。例如,如果想要的字体是 Arial、粗体、磅值大小为 18,则按以下方式调用此方法:"Arial-BOLD-18"。这等同于调用以下 Font 构造方法:new Font("Arial", Font.BOLD, 18);,值被解释为构造方法所指定的形式。

    有效的尾部十进制字段总是被解释为 pointsize。因此,后跟十进制值的 fontname 不应该在只在 fontname 的格式中使用。

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

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

    有些字体名称可以包括分隔符 ' ' 或 '-'。如果 str 不是由三部分构成,例如,style pointsize 字段不出现在 str 中,并且 fontname 还包含确定为分隔符的字符,则这些打算作为 fontname 一部分出现的字符也可以解释为分隔符,因此字体名称无法正确识别。

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

    参数:
    str - 字体名称,或 null
    返回:
    str 描述的 Font 对象,如果 strnull,则返回新的默认 Font
    从以下版本开始:
    JDK1.1
    另请参见:
    getFamily()

    getFont

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

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

    参数:
    nm - 不区分大小写的属性名称
    font - 如果没有定义属性 nm,则为要返回的默认 Font
    返回:
    属性的 Font 值。
    抛出:
    NullPointerException - 如果 nm 为 null。
    另请参见:
    decode(String)

    hashCode

    public int hashCode()
    返回此 Font 的哈希码。

    覆盖:
    Object 中的 hashCode
    返回:
    Font 的哈希码值。
    从以下版本开始:
    JDK1.0
    另请参见:
    Object.equals(java.lang.Object), Hashtable

    equals

    public boolean equals(Object obj)
    将此 Font 对象与指定 Object 进行比较。

    覆盖:
    Object 中的 equals
    参数:
    obj - 要比较的 Object
    返回:
    如果对象相同,或参数是 Font 对象,且描述的字体与此对象相同,则返回 true;否则,返回 false
    从以下版本开始:
    JDK1.0
    另请参见:
    Object.hashCode(), Hashtable

    toString

    public String toString()
    将此 Font 对象转换为 String 表示形式。

    覆盖:
    Object 中的 toString
    返回:
    Font 对象的 String 表示形式。
    从以下版本开始:
    JDK1.0

    getNumGlyphs

    public int getNumGlyphs()
    返回此 Font 中的字形数量。此 Font 的字形代码,范围从 0 到 getNumGlyphs() - 1。

    返回:
    Font 的字形数量。
    从以下版本开始:
    1.2

    getMissingGlyphCode

    public int getMissingGlyphCode()
    返回此 Font 不具有指定的 unicode 字形时所使用的 glyphCode 代码点。

    返回:
    Font 的 glyphCode。
    从以下版本开始:
    1.2

    getBaselineFor

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

    大字体可以支持不同的书写系统,并且每个系统都可以使用不同的基线。字符参数确定要使用的书写系统。客户不应该假定所有字符都使用相同的基线。

    参数:
    c - 用来标识书写系统的字符
    返回:
    适合于指定字符的基线。
    从以下版本开始:
    1.2
    另请参见:
    LineMetrics.getBaselineOffsets(), ROMAN_BASELINE, CENTER_BASELINE, HANGING_BASELINE

    getAttributes

    public Map<TextAttribute,?> getAttributes()
    返回此 Font 中可用的字体属性的映射。属性包括诸如连字和字形替换之类的事情。

    返回:
    Font 的属性映射。

    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 - 与新 Font 相关的 AffineTransform
    返回:
    一个新 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 - 与新 Font 相关的 AffineTransform
    返回:
    一个新的 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 对象。

    参数:
    attributes - 为新 Font 所启用的属性映射
    返回:
    Font 对象。
    从以下版本开始:
    1.2

    canDisplay

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

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

    参数:
    c - 需要字形的字符
    返回:
    如果此 Font 具有该字符的字形,则返回 true;否则返回 false
    从以下版本开始:
    1.2

    canDisplay

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

    参数:
    codePoint - 需要字形的字符(Unicode 代码点)。
    返回:
    如果此 Font 具有该字符的字形,则返回 true;否则返回 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 无法显示的第一个字符;如果此 Font 可以显示 str 中的所有字符,则返回 -1
    从以下版本开始:
    1.2

    canDisplayUpTo

    public int canDisplayUpTo(char[] text,
                              int start,
                              int limit)
    指示此 Font 是否可以显示指定 text 中从 start 开始至 limit 结束的所有字符。此方法是一次方便的重载。

    参数:
    text - 指定 char 值的数组
    start - 指定 char 值数组中的指定起始偏移量 (in char)
    limit - 指定 char 值数组中的指定结束偏移量 (in char)
    返回:
    text 中的偏移量,指向此 Font 无法显示的 text 中的第一个字符;如果此 Font 可以显示 text 中的所有字符,则返回 -1
    从以下版本开始:
    1.2

    canDisplayUpTo

    public int canDisplayUpTo(CharacterIterator iter,
                              int start,
                              int limit)
    指示此 Font 是否可以显示由 iter 指定的文本(从 start 开始至 limit 结束)。

    参数:
    iter - CharacterIterator 对象
    start - 指定 CharacterIterator 中的指定起始偏移量。
    limit - 指定 CharacterIterator 中的指定结束偏移量。
    返回:
    iter 中的偏移量,它指向 iter 中此 Font 无法显示的第一个字符;如果此 Font 可以显示 iter 中的所有字符,则返回 -1
    从以下版本开始:
    1.2

    getItalicAngle

    public float getItalicAngle()
    返回此 Font 的斜角。斜角是与此 Font 的动作最匹配的 caret 的反斜面。

    返回:
    Font 的 ITALIC 样式的角度
    另请参见:
    TextAttribute.POSTURE

    hasUniformLineMetrics

    public boolean hasUniformLineMetrics()
    检查此 Font 是否具有统一的行规格。逻辑 Font 可以是复合字体,这意味着它由不同的物理字体组成,可以覆盖不同的代码范围。其中每一种字体都可能有不同的 LineMetrics。如果逻辑 Font 是单一字体,则规格将是统一的。

    返回:
    如果此 Font 具有统一的行规格,则返回 true;否则返回 false

    getLineMetrics

    public LineMetrics getLineMetrics(String str,
                                      FontRenderContext frc)
    返回一个使用指定 String 和 FontRenderContext 创建的 LineMetrics 对象。

    参数:
    str - 指定的 String
    frc - 指定的 FontRenderContext
    返回:
    使用指定 String 和 FontRenderContext 创建的 LineMetrics 对象。

    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)
    返回指定 FontRenderContext 中指定 String 的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用 TextLayout 的 getBounds 方法。

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

    参数:
    str - 指定的 String
    frc - 指定的 FontRenderContext
    返回:
    一个 Rectangle2D,它是指定 FontRenderContext 中指定 String 的边界框。
    从以下版本开始:
    1.2
    另请参见:
    FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)

    getStringBounds

    public Rectangle2D getStringBounds(String str,
                                       int beginIndex,
                                       int limit,
                                       FontRenderContext frc)
    返回指定 FontRenderContext 中指定 String 的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用 TextLayout 的 getBounds 方法。

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

    参数:
    str - 指定的 String
    beginIndex - str 的初始偏移量
    limit - str 的结束偏移量
    frc - 指定的 FontRenderContext
    返回:
    一个 Rectangle2D,它是指定 FontRenderContext 中指定 String 的边界框。
    抛出:
    IndexOutOfBoundsException - 如果 beginIndex 小于零,或 limit 大于 str 的长度,或 beginIndex 大于 limit
    从以下版本开始:
    1.2
    另请参见:
    FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)

    getStringBounds

    public Rectangle2D getStringBounds(char[] chars,
                                       int beginIndex,
                                       int limit,
                                       FontRenderContext frc)
    返回指定 FontRenderContext 指定字符数组的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用 TextLayout 的 getBounds 方法。

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

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

    getStringBounds

    public Rectangle2D getStringBounds(CharacterIterator ci,
                                       int beginIndex,
                                       int limit,
                                       FontRenderContext frc)
    返回指定 FontRenderContext 中针对指定 CharacterIterator 进行索引的字符的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用 TextLayout 的 getBounds 方法。

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

    参数:
    ci - 指定的 CharacterIterator
    beginIndex - ci 中的初始偏移量
    limit - ci 中的结束偏移量
    frc - 指定的 FontRenderContext
    返回:
    一个 Rectangle2D,它是指定 FontRenderContext 中针对指定 CharacterIterator 进行索引的字符的边界框。
    抛出:
    IndexOutOfBoundsException - 如果 beginIndex 小于 ci 的起始索引,或 limit 大于 ci 的结束索引,或 beginIndex 大于 limit
    从以下版本开始:
    1.2
    另请参见:
    FontRenderContext, createGlyphVector(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 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。

    参数:
    frc - 指定的 FontRenderContext
    str - 指定的 String
    返回:
    使用指定 String 和指定 FontRenderContext 创建的新 GlyphVector

    createGlyphVector

    public GlyphVector createGlyphVector(FontRenderContext frc,
                                         char[] chars)
    根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。

    参数:
    frc - 指定的 FontRenderContext
    chars - 指定的字符数组
    返回:
    使用指定字符数组和指定 FontRenderContext 创建的 GlyphVector

    createGlyphVector

    public GlyphVector createGlyphVector(FontRenderContext frc,
                                         CharacterIterator ci)
    根据此 Font 中的 Unicode cmap 将指定字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。

    参数:
    frc - 指定的 FontRenderContext
    ci - 指定的 CharacterIterator
    返回:
    使用指定 CharacterIterator 和指定 FontRenderContext 创建的 GlyphVector

    createGlyphVector

    public GlyphVector createGlyphVector(FontRenderContext frc,
                                         int[] glyphCodes)
    根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。

    参数:
    frc - 指定的 FontRenderContext
    glyphCodes - 指定的整数数组
    返回:
    使用指定整数数组和指定 FontRenderContext 创建的 GlyphVector

    layoutGlyphVector

    public GlyphVector layoutGlyphVector(FontRenderContext frc,
                                         char[] text,
                                         int start,
                                         int limit,
                                         int flags)
    返回一个新 GlyphVector 对象,执行完整的文本布局(如有可能)。复杂文本要求有完整布局,如 Arabic 或 Hindi。对不同脚本的支持取决于字体和实现。

    Layout requires bidi analysis, as performed by Bidi 只应该在具有统一方向的文本上执行。用 flags 参数来指示方向,通过使用 LAYOUT_RIGHT_TO_LEFT 来指示从右到左(Arabic 和 Hebrew)的运行方向,或通过使用 LAYOUT_LEFT_TO_RIGHT 来指示从左到右 (English) 的运行方向。

    此外,有些操作(比如 Arabic 整形)需要上下文,这样在开始和结束处的字符才会有合适的形状。有时,在所提供范围之外的缓冲区中的数据并不是有效数据。可以将值 LAYOUT_NO_START_CONTEXT 和 LAYOUT_NO_LIMIT_CONTEXT 添加到 flags 参数中,分别指示在 start 之前或 limit 之后的文本不应该作为上下文进行检查。

    flags 参数的所有其他值均被保留。

    参数:
    frc - 指定的 FontRenderContext
    text - 要布局的文本
    start - GlyphVector 所要使用的文本的起始处
    limit - GlyphVector 所要使用的文本的结束处
    flags - 如上所述的控制标志
    返回:
    一个新 GlyphVector,表示 start 和 limit 之间的文本,具有经过选择和定位的字形,以便以最佳方式表示文本
    抛出:
    ArrayIndexOutOfBoundsException - 如果 start 或 limit 超出了边界
    从以下版本开始:
    1.4
    另请参见:
    Bidi, LAYOUT_LEFT_TO_RIGHT, LAYOUT_RIGHT_TO_LEFT, LAYOUT_NO_START_CONTEXT, LAYOUT_NO_LIMIT_CONTEXT

    finalize

    protected void finalize()
                     throws Throwable
    移除本机 Font 对象。

    覆盖:
    Object 中的 finalize
    抛出:
    Throwable - 此方法抛出的 Exception
    展开全文
  • JAVA Font

    千次阅读 2014-05-25 17:14:09
    java.awt.Font 设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风格:三个常量 lFont.PLAIN, Font.BOLD, Font.ITALIC 字号:字的大小(磅数) ...

    java.awt.Font
    设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号);
    字体:TimesRoman, Courier, Arial等
    风格:三个常量 lFont.PLAIN, Font.BOLD, Font.ITALIC
    字号:字的大小(磅数)
    设置组件当前使用的字体:setFont(Font fn)
    获取组件当前使用的字体:getFont()

    int i= font.stringWidth(String str);获取str字符的长度

    详细说明

    getFont(int face,int style,int size). 例如:
    Font font = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font. SIZE_MEDIUM). 无论哪一个参数,都只能使用系统设置的数值,这些数值具体的大小在不同的手机上可能不同。下面对于其中的三个参数的取值做详细的介绍: face参数指字体的外观,其的值:   FACE_MONOSPACE——等宽字体l
    FACE_PROPORTIONAL——均衡字体l
    FACE_SYSTEM——系统字体style参数指字体的样式,其的取值:l 
    STYLE_BOLD——粗体l 
    STYLE_ITALIC——斜体l 
    STYLE_PLAIN——普通l 
    STYLE_UNDERLINED——下划线l 
    STYLE_BOLD | STYLE_ITALIC——粗斜体l 
    STYLE_UNDERLINED | STYLE_BOLD——带下划线粗体l
    STYLE_UNDERLINED | STYLE_ITALIC——带下划线斜体l
    STYLE_UNDERLINED | STYLE_ITALIC | STYLE_BOLD——带下划线的粗斜体size参数指字体的大小,其的取值:l
    SIZE_SMALL——小l 
    SIZE_MEDIUM——中l
    SIZE_LARGE——大通过上面的参数的值,可以组合出你需要的字体对象。下面是一些常用的字体操作:

      1. 获得系统的默认字体:Font font = Font.getDefaultFont().

      2. 在panit方法内部,假设Graphics参数的名称为g,则获得当前字体的方法是:Font font = g.getFont().

      3. 在panit方法内部,假设Graphics参数的名称为g,则设置当前字体的方法是:g.setFont(font).其中font为你构造好的字体对象。
     
      4. 在MIDP2.0中,List可以设置每行的字体格式,方法是:list.setFont(0,font).则上面的代码是将list中的第一行设置为font类型的字体。 最后介绍一下在Nokia系列的手机中,字体大小的具体参数:

    平台 默认字体大小(像素)
    S40 12
    S60 16
    S80 21
    Nokia7710 23
    展开全文
  • Java Font Metrics

    千次阅读 2010-12-22 21:14:00
    转自: http://www.duncanjauncey.com/blog/?p=51<br />  定位字体位置总是不准确,看了这张图就明白了

    转自:

    http://www.duncanjauncey.com/blog/?p=51

     

    定位字体位置总是不准确,看了这张图就明白了

    展开全文
  • Java Font 居中 反锯齿效果

    千次阅读 2015-12-21 21:41:56
    发现drawString的文字不在正中间?想了解下抗锯齿选项的实际效果? 我们也想自己做一套,考虑到...在java里面往图片里面写一段文字一般采用 Graphic类的drawString方法,看下drawString方法的介绍: 链接: https:

    Java Font 居中 和 抗锯齿下效果


    居中

    看到网上经常有这样的一些头像,是纯色加上第一个文字,类似于这样子的:


    我们也想自己做一套,考虑到有很多端都要用,因此选择在服务端实现这样的头像。开发语言是Java。

    在java里面往图片里面写一段文字一般采用 Graphic类的drawString方法,看下drawString方法的介绍:
    public abstract void drawString(String str,
                  int x,
                  int y)
    Draws the text given by the specified string, using this graphics context's current font and color. The baseline of the leftmost character is at position (xy) in this graphics context's coordinate system.
    显然此处的str字段只需要写一个字符的即可。x和y表示的是起始的位置,在这儿和图像的不大一样,指的是右下角的位置。
    根据要求我要生成的图片大小是216*216的,字体大小是136px。 对于ASCII码表上面的字母、字符和数字,通常宽度都是为汉字的一半,因此在调用的时候要注意好起始点的间距。拿汉字来举例的话,应该文字是处在 (40,40)到 (176,176)的正方形里面。因此此处的x和y我填写的是40和176.

    看下生成的图片:

    绿色的线表示的就是(40,40)到(176,176)的正方形。可以看到在x轴上面是居中的,但是在y轴上却明显地偏下方。那么到底偏了多少,怎么补偿呢?不能瞎算,此处肯定跟字体是有关系的!搜索没得要领(估计是自己没找对关键字),然后幸好手头有本《Java核心技术 卷1:基础知识》,看了看里面字体的一节,解答了我的疑惑。
    其实在这个类的说明里面指出了一些线索,不过刚接触的时候很难知道有这个类:
    FontMetrics   里面有段话是这样的:

    When an application asks to place a character at the position (xy), the character is placed so that its reference point (shown as the dot in the accompanying image) is put at that position. The reference point specifies a horizontal line called the baseline of the character. In normal printing, the baselines of characters should align。
    意思是,我们设置x和y的时候实际上设置的是参考点的位置,参考点就是上面的那个点。参考点所在的水平线是 baseline 基线,最上面的线是坡顶(ascenter),, 最下面的线是坡底(descenter)。坡顶到基线的距离是 上坡度(ascent), 坡底到基线的距离是下坡度。
    再看一下Baseline的wikipedia,有这样的一幅图也很形象:




    那么知道字体的上坡度和字体的下坡度是否能够解决问题了?试一下!
    (1) 怎么知道下坡度? 下坡度可以用LineMetrics的 getDescend()方法解决。
    (2)怎么知道上坡度?在书上上坡度有点恶心,需要这样子做: 
    		FontRenderContext context = g2.getFontRenderContext(); 
    		Rectangle2D bounds = f.getStringBounds(str, context);
                    double ascend = -bounds.getY();
     但实际上用LineMetrics的getAscend() 方法就可以了。
    (3)计算下x,y的位置, 对于水平方向的位置,很简单:
                    double x = (bufferedImage.getWidth() - 136) /2;
          对于垂直方向上的位置,两边留空白是: height - (ascend + descend)/ 2;
          注意字的位置不是左上角算起的,因此套住字的左下角的框框是: height - 上面的式子 = (height + ascend + descend) / 2;
          再注意,x,y指的是baseline的,因此还需要减去一个descend的距离,因此最终应该是 height + ascend - descend的距离。
    
    
    看看生成的结果:
    
    
    已经很赞了!
    
    
    但是下面几个点还需要仔细探索下:
    
    
    字体的size 指的是 point size, (猜测)意思应该是字体的占的像素点的数量,但是这个指的是高度还是宽度?
    从高度来看:“回”字的ascend是 126.4375, descend是:9.5625, 加起来正好是136。 这样看来是高度啦。那么实际上应该也不需要求字体的ascend了, 只需要
    y = (height + 136)/ 2 - descend就可以了!
    
    
    
    
    
    
    抗锯齿效果
    前面的“回”字都是横竖笔画,来个斜的笔画的:
    可以看到在撇捺的地方很毛糙影响美观。这是因为没有开启抗锯齿模式。抗锯齿模式会对上面的部分进行计算和优化减少毛边。
    实现起来简单调用下就行了: 
    graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    现在看下结果:


    差别还是很明显的!














    展开全文
  • Linux下Java Font 中文字体不显示

    千次阅读 2018-04-20 18:36:00
    Linux下Java中文字体不显示 https://blog.csdn.net/kenera/article/details/11593863 找到linux中当前java的安装位置 https://blog.csdn.net/u014772300/article/details/78117188 ...
  • java font 构造方法详解

    2009-09-04 13:28:44
    public Font(String name, int style, int size) name - 字体名称。可以是字体外观名称或字体系列名称,并可表示此 GraphicsEnvironment 中找到的逻辑字体或物理字体。逻辑字体的系列名称有:Dialog、...
  • 比如Font()的三个参数设置为了 宋体 斜体 15 然后我想在保留 宋体 斜体的基础上,只把大小改一下应该怎么做。 我想应该是先把宋体和斜体这两个属性拿出来,然后再重新创建一个Font. 但是我看API里面的获得属性的...
  • The Java 2 platform defines five logical font names that every implementation must support: Serif, SansSerif, Monospaced, Dialog, and DialogInput. These logical font names are mapped to physical fonts
  • JAVA_Font

    万次阅读 多人点赞 2011-12-02 17:02:34
    来自: ... java.awt.Font 设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风格:三个常量 lFont.PLAI
  • java中的Font

    千次阅读 2017-10-21 18:45:52
    Font类位于java.awt中,java.awt.font是指提供与字体相关的类和接口 设计字体显示效果 Font fn = new Font(String 字体,int 风格,int 字号); 1)字体:  字体可以分为两大类:  中文字体:宋体,楷体,黑体等 ...
  • Java.awt.Font

    万次阅读 2017-04-12 12:46:10
    java.awt.Font 构造方法: 1.protected Font(Font font) 根据指定 font 创建一个新 Font。 2.protected Font(Map attributes) 创建一个具有指定属性的新 Font。 3.protected Font(string name, int style, int ...
  • JavaFont和JRadioButton应用

    千次阅读 2012-04-10 14:58:25
    写了一个例子程序,不过感觉很让人抓狂的一点是:必须手动调整尺寸构造布局,很不爽...不知道有什么办法没。...import java.awt.Font; import java.awt.event.ItemEvent; import java.awt.event.ItemListener;
  • java.awt.Font

    千次阅读 2017-02-23 21:22:07
    java.awt.Font 设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风格:三个常量 lFont.PLAIN, Font.BOLD, Font.ITALIC 字号:字的大小(磅数) ...
  • Java基础 awt Font 四种字体样式

    千次阅读 2019-06-30 16:12:00
       JDK :OpenJDK-11    OS :CentOS 7.6.1810    IDE :Eclipse 2019‑03 typesetting :Markdown   code package per.jizuiku.gui;...import java.awt.Font; import java.awt.Graphics2...
  • java.awt.Font 的使用

    千次阅读 2019-05-13 12:00:04
    java.awt.Font 的使用 使用Font的软件包 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.font 提供与字体相关的类和接口。 javax.accessibility 定义了用户界面组件与提供对...
  • 一、Font类简介 Font类是用于设置图形用户界面上的字体样式的,包括字体类型...Font类位于java.awt包中,使用时需要在代码顶端声明import java.awt.Font;或者import java.awt.*; 三、Font类的构造函数 Font类的...
  • 字体是个非常平常的概念,以至于看到Java API文档对于字体的长篇大论...java.awt.Font The Font class represents fonts, which are used to render text in a visible way. A font provides the information needed
  • JAVA中绘制文字时Font的用法

    千次阅读 2017-10-27 15:17:38
    绘制的主要发方法(Graphics) (1) drawString(String str,int x,int y);...style表示的是字体的风格,默认是正常Font.PLAIN,有加粗Font.BLOD,有斜体Font.INTALIC。 可以加粗+斜体Font.BLOD + Font.INTALIC。
  • Could not initialize class java.awt.Font(已解决异常)

    千次阅读 多人点赞 2020-03-17 10:02:43
    (需要的在下方留言,我再加上) 解决方法: 在tomcat/bin/catalina.sh 中增加JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" 配置即可 JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" 如下图:
  • java.awt.Font生成的图片中的汉字会使用到jre中的字体,如果没有找到的话就会显示为方块 解决方式一: 1、在jdk目录下找到路径jre/lib/fonts/fallback(一般情况下是没有fallback这个文件夹的,那么创建一个) 2...
  • Java中----Font类简介

    千次阅读 多人点赞 2018-06-14 21:21:39
    一、Font类简介Font类是用于设置图形用户...二、Font类的引用声明Font类位于java.awt包中,使用时需要在代码顶端声明import java.awt.Font;或者import java.awt.*;三、Font类的构造函数Font类的构造函数如下:pub...
  • 有个需求要用美术字体在图片上写字 用自定义的文字有两个方法: 1、 ... Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, ... Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, new File(pathS

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 210,440
精华内容 84,176
关键字:

javafont

java 订阅