public class Font extends Object implements Serializable
Font
类表示字体,用于以可见的方式呈现文本。
一种字体提供映射字符 字形的序列的序列和上呈现字形序列所需的信息Graphics
个Component
对象。
'g'
,LATIN SMALL LETTER G,是一个字符。
字形是用于渲染字符或字符序列的形状。 在简单的书写系统中,比如拉丁文,通常一个字形代表一个字符。 然而,一般来说,字符和字形不具有一一对应关系。 例如,字符“¡”拉丁小写字母A与ACUTE,可以由两个字形表示:一个用于'一',一个用于'Â'。 另一方面,双字符串“fi”可以由单个字形,“fi”连字符表示。 在复杂的写作系统中,如阿拉伯语,南亚和东南亚写作系统,字符和字形之间的关系可能更复杂,涉及字形的上下文相关选择以及字形重新排序。 字体封装渲染所选字符集所需的字形集合以及将字符序列映射到相应字符序列所需的表。
物理字体是包含使用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
可以有很多面孔,如重,中,斜,哥特和常规。
所有这些面孔都具有相似的印刷设计。
有一个可以从一个Font
对象获得的三个不同的名字。 逻辑字体名称只是用于构造字体的名称。 字体名称或简称字体名称是特定字体的名称,如Helvetica Bold。 姓氏是字体系列的名称,用于确定多个面部的排版设计,如Helvetica。
Font
类表示来自主机系统的系统资源中存在的字体集合的字体的实例。 例如,Arial Bold和Courier Bold Italic是字体。 可以有几个与字体相关Font
对象,每个对象的大小,样式,变换和字体功能都不同。
所述getAllFonts
所述的方法GraphicsEnvironment
类返回所有字体的阵列中的系统面临可用。 这些字体面将返回为Font
对象,大小为1,身份转换和默认字体特征。 这些基础字体可以用于通过本类中的deriveFont
方法来导出具有不同大小,样式,变换和字体特征的新的Font
对象。
Font
支持大多数TextAttribute
s。 这使得一些操作,如渲染下划线的文本,方便,因为不需要明确构造一个TextLayout
对象。 可以通过使用Map
的TextAttribute
构造或导出Map
来TextAttribute
属性。
一些值TextAttributes
是不可序列化的,因此试图序列的实例Font
有这样的值将不序列化。 这意味着从这样一个流反序列化的字体将不会与包含不可序列化属性的原始字体相等。 这很少会引起问题,因为这些属性通常仅在特殊情况下使用,并且不太可能被序列化。
FOREGROUND
和BACKGROUND
使用Paint
值。 子类Color
是可序列化的,而GradientPaint
和TexturePaint
不是。 CHAR_REPLACEMENT
使用GraphicAttribute
值。 子类ShapeGraphicAttribute
和ImageGraphicAttribute
不可串行化。 INPUT_METHOD_HIGHLIGHT
使用InputMethodHighlight
值,这是不可序列化的。 见InputMethodHighlight
。 创建Paint
和GraphicAttribute
自定义子类的客户端可以使其可序列化并避免此问题。 使用输入法亮点的客户端可以将它们转换为当前平台上该突出显示的平台特定属性,并将其设置为字体作为解决方法。
基于Map
的构造函数和deriveFont
API忽略FONT属性,并且它不被字体保留; 如果FONT属性可能存在,则应使用静态getFont(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>)
方法。 见TextAttribute.FONT
以获取更多信息。
几个属性将导致额外的渲染开销和潜在的调用布局。 如果一个Font
有这样的属性,
方法将返回true。 hasLayoutAttributes()
注意:字体旋转可以使文本基线旋转。 为了解决这个(罕见的)可能性,指定字体API返回指标并在“基线相对坐标”中获取参数。 这将“x”坐标映射到沿着基线的前进(正x沿着基线向前),“y”坐标到“x”处的基线垂直距离(正y为顺时针90度从基线矢量)。 这是特别重要的API被称为具有“基线相对坐标”。
Modifier and Type | Field and Description |
---|---|
static int |
BOLD
大胆的风格常数。
|
static int |
CENTER_BASELINE
中文,日文,韩文等表意文字的基线。
|
static String |
DIALOG
逻辑字体“对话框”的规范系列名称的字符串常量。
|
static String |
DIALOG_INPUT
逻辑字体“DialogInput”的规范系列名称的字符串常量。
|
static int |
HANGING_BASELINE
Devanigiri中使用的基准和布局文本时的类似脚本。
|
static int |
ITALIC
斜体风格常数。
|
static int |
LAYOUT_LEFT_TO_RIGHT
一个用于布局GlyphVector的标志,指示由Bidi分析确定的文本是从左到右。
|
static int |
LAYOUT_NO_LIMIT_CONTEXT
一个用于layoutGlyphVector的标志,指示在指定的限制之后的char数组中的文本不应被检查。
|
static int |
LAYOUT_NO_START_CONTEXT
layoutGlyphVector的一个标志,指示在指定的开始之前的char数组中的文本不应被检查。
|
static int |
LAYOUT_RIGHT_TO_LEFT
一个标记为layoutGlyphVector的标志,指示由Bidi分析确定的文本是从右到左。
|
static String |
MONOSPACED
逻辑字体“Monospaced”的规范系列名称的字符串常量。
|
protected String |
name
这个
Font 的逻辑名称,传递给构造函数。
|
static int |
PLAIN
平原风格常数。
|
protected float |
pointSize
这个
Font 的点大小在
float 。
|
static int |
ROMAN_BASELINE
大多数罗马脚本在布局文本时使用的基线。
|
static String |
SANS_SERIF
逻辑字体“SansSerif”的规范系列名称的字符串常量。
|
static String |
SERIF
逻辑字体“Serif”的规范系列名称的字符串常量。
|
protected int |
size
该点的大小为
Font ,四舍五入为整数。
|
protected int |
style
这种
Font 的风格,传递给构造函数。
|
static int |
TRUETYPE_FONT
识别TRUETYPE类型的字体资源。
|
static int |
TYPE1_FONT
识别类型TYPE1的字体资源。
|
Modifier | Constructor and Description |
---|---|
protected |
Font(Font font)
创建一个新
Font 从指定的
font 。
|
|
Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
创建一个新
Font 具有指定属性。
|
|
Font(String name, int style, int size)
从指定的名称,样式和点大小创建一个新的
Font 。
|
Modifier and Type | Method and Description |
---|---|
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,将字符映射到字形,创建 Font 。
|
GlyphVector |
createGlyphVector(FontRenderContext frc, CharacterIterator ci)
根据Font中的Unicode cmap,将 Font 字符映射到字形,创建一个Font 。
|
GlyphVector |
createGlyphVector(FontRenderContext frc, int[] glyphCodes)
根据Font中的Unicode cmap,将字符映射到字形,创建 Font 。
|
GlyphVector |
createGlyphVector(FontRenderContext frc, String str)
根据Font中的Unicode cmap,将字符映射到字形,创建一个 Font 。
|
static Font |
decode(String str)
返回
Font ,该
str 参数描述。
|
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进行
Object 。
|
Map<TextAttribute,?> |
getAttributes()
返回此
Font 的字体属性的映射。
|
AttributedCharacterIterator.Attribute[] |
getAvailableAttributes()
返回此
Font 的所有属性的
Font 。
|
byte |
getBaselineFor(char c)
返回适合显示此字符的基线。
|
String |
getFamily()
返回此
Font 。
|
String |
getFamily(Locale l)
返回此
Font 的系列名称,该名称已针对指定的区域设置进行本地化。
|
static Font |
getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
返回一个
Font 属性的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 对象。
|
LineMetrics |
getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
返回使用
LineMetrics 参数创建的
LineMetrics 对象。
|
LineMetrics |
getLineMetrics(String str, FontRenderContext frc)
返回使用指定的 String 和FontRenderContext 创建的LineMetrics 对象。
|
LineMetrics |
getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc)
返回使用
LineMetrics 参数创建的
LineMetrics 对象。
|
Rectangle2D |
getMaxCharBounds(FontRenderContext frc)
返回具有指定的FontRenderContext中定义的最大边界的字符的
FontRenderContext 。
|
int |
getMissingGlyphCode()
返回当这个
Font 没有指定unicode代码点的字形时使用的glyphCode。
|
String |
getName()
返回此
Font 的逻辑名称。
|
int |
getNumGlyphs()
返回此
Font 中的字形数。
|
java.awt.peer.FontPeer |
getPeer()
已弃用
字体渲染现在是平台无关的。
|
String |
getPSName()
返回此的postscript名称
Font 。
|
int |
getSize()
返回此
Font 的点大小,舍入为整数。
|
float |
getSize2D()
返回
float 值的这个
Font 的点大小。
|
Rectangle2D |
getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc)
返回字符中指定的指定的数组的逻辑边界
FontRenderContext 。
|
Rectangle2D |
getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
返回指定索引的字符的逻辑边界 CharacterIterator 在指定的FontRenderContext 。
|
Rectangle2D |
getStringBounds(String str, FontRenderContext frc)
返回指定的逻辑边界
String 在指定的
FontRenderContext 。
|
Rectangle2D |
getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc)
返回指定的逻辑边界
String 在指定的
FontRenderContext 。
|
int |
getStyle()
返回此
Font 的样式。
|
AffineTransform |
getTransform()
返回与此
Font 。
|
int |
hashCode()
返回此
Font 的哈希码。
|
boolean |
hasLayoutAttributes()
如果此字体包含需要额外布局处理的属性,则返回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 表示。
|
public static final String DIALOG
public static final String DIALOG_INPUT
public static final String SANS_SERIF
public static final String SERIF
public static final String MONOSPACED
public static final int PLAIN
public static final int BOLD
public static final int ITALIC
public static final int ROMAN_BASELINE
public static final int CENTER_BASELINE
public static final int HANGING_BASELINE
public static final int TRUETYPE_FONT
createFont(int, java.io.InputStream)
方法指定TrueType字体资源。
TrueType格式被扩展为OpenType格式,它增加了对Postscript轮廓的字体支持,因此这个标签引用了这些字体,以及使用TrueType轮廓的字体。
public static final int TYPE1_FONT
createFont(int, java.io.InputStream)
方法。
protected int style
Font
的风格,传递给构造函数。
这种风格可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。
getStyle()
protected int size
Font
,舍入为整数。
getSize()
protected float pointSize
Font
的点大小在
float
。
getSize()
,
getSize2D()
public static final int LAYOUT_LEFT_TO_RIGHT
public static final int LAYOUT_RIGHT_TO_LEFT
public static final int LAYOUT_NO_START_CONTEXT
public static final int LAYOUT_NO_LIMIT_CONTEXT
public Font(String name, int style, int size)
Font
。
字体名称可以是字体名称或字体族名称。 它与风格一起使用以找到适当的字体。 当指定字体系列名称时,样式参数用于选择家庭中最合适的脸部。 指定字体名称时,将合并脸部样式和样式参数,以找到同一系列中匹配最佳的字体。 例如,如果使用样式Font.ITALIC
指定面部名称“Arial Bold”,则字体系统会在“Arial”系列中查找粗体和斜体的面部,并可将字体实例与物理字体“Arial Bold Italic”相关联。 。 样式参数与指定的脸部样式合并,不添加或减去。 这意味着,指定粗体和粗体样式不会使字体双倍膨胀,并且指定粗体和纯色样式不会减轻字体。
如果没有找到所请求的样式的脸,字体系统可以应用算法样式来实现所需的样式。 例如,如果ITALIC
ITALIC,但没有斜体可用,来自平面的字形可能会被算术倾斜(倾斜)。
使用美国地区的案例折叠规则,字体名称查找不区分大小写。
如果name
参数表示逻辑字体以外的东西,即被解释为物理字体或家庭,并且这不能被实现映射到物理字体或兼容的替代品,则字体系统将映射字体实例“对话”,例如getFamily
报道的家庭将是“对话框”。
name
- 字体名称。
这可以是字体名称或字体系列名称,并且可以表示在此GraphicsEnvironment
找到的逻辑字体或物理字体。
逻辑字体的系列名称为:Dialog,DialogInput,Monospaced,Serif或SansSerif。
所有这些名称都存在预定义的字符串常量,例如DIALOG
。
如果name
是null
,新的逻辑字体名称 Font
所返回由getName()
设置为名称为“默认”。
style
-为对风格恒定Font
风格参数是一个整数位掩码可以是PLAIN
,或按位联盟BOLD
和/或ITALIC
(例如, ITALIC
或BOLD|ITALIC
)。
如果style参数不符合其中一个预期的整数位掩码,则样式将设置为PLAIN
。
size
- 点大小
Font
GraphicsEnvironment.getAllFonts()
,
GraphicsEnvironment.getAvailableFontFamilyNames()
public Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
Font
具有指定属性。
只能识别TextAttribute
中定义的键。
另外FONT属性不被该构造函数识别(参见getAvailableAttributes()
)。
只有具有有效类型值的属性才会影响新的Font
。
如果attributes
为null
,则使用默认值初始化新的Font
。
attributes
- 分配给新的
Font
或
null
TextAttribute
protected Font(Font font)
Font
从指定的font
。
这个构造函数是由子类使用的。
font
- 从中创建此
Font
。
NullPointerException
- 如果
font
为空
@Deprecated public java.awt.peer.FontPeer getPeer()
Font
的同侪。
Font
。
public static Font getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
attributes
- 分配给新的
Font
Font
创建一个新的Font
NullPointerException
- 如果
attributes
为空。
TextAttribute
public static Font createFont(int fontFormat, InputStream fontStream) throws FontFormatException, IOException
Font
。
新的Font
创建的点大小为1,样式为PLAIN
。
此基础字体可以与本类中的deriveFont
方法一起使用,以导出具有不同大小,样式,变换和字体特征的新的Font
对象。
此方法不关闭InputStream
。
为了使Font
提供给字体构造函数返回Font
必须在注册GraphicsEnviroment
致电registerFont(Font)
。
fontFormat
-该类型Font
,这是TRUETYPE_FONT
如果指定一个TrueType资源。
或TYPE1_FONT
如果指定了类型1资源。
fontStream
- 表示字体输入数据的
InputStream
对象。
Font
。
IllegalArgumentException
- 如果
fontFormat
不是
TRUETYPE_FONT
或
TYPE1_FONT
。
FontFormatException
- 如果
fontStream
数据不包含指定格式所需的字体表。
IOException
- 如果
fontStream
不能完全读取。
GraphicsEnvironment.registerFont(Font)
public static Font createFont(int fontFormat, File fontFile) throws FontFormatException, IOException
Font
。
新的Font
创建的点大小为1,风格为PLAIN
。
此基础字体可以与本类中的deriveFont
方法一起使用,以导出具有不同大小,样式,变换和字体特征的新型Font
对象。
fontFormat
-该类型Font
,这是TRUETYPE_FONT
如果指定或者一个TrueType资源TYPE1_FONT
如果指定了类型1资源。
只要引用返回的字体或其派生字体,实现可能会继续访问fontFile
以检索字体数据。
因此,如果文件被更改或变得不可访问,结果是未定义的。
为了使Font
提供给字体构造函数返回Font
必须在注册GraphicsEnviroment
致电registerFont(Font)
。
fontFile
- 表示字体输入数据的
File
对象。
Font
。
IllegalArgumentException
- 如果
fontFormat
不是
TRUETYPE_FONT
或
TYPE1_FONT
。
NullPointerException
- 如果
fontFile
为空。
IOException
- 如果
fontFile
无法读取。
FontFormatException
- 如果
fontFile
不包含指定格式所需的字体表。
SecurityException
- 如果执行代码没有从文件读取的权限。
GraphicsEnvironment.registerFont(Font)
public AffineTransform getTransform()
Font
。
此变换不一定是用于构建字体的变换。
如果字体具有算法上标或宽度调整,则将其并入返回的AffineTransform
。
通常,字体不会被转换。 客户一般应先调用isTransformed()
,如果isTransformed
返回true,则调用此方法。
Font
对象。
public String getFamily()
Font
。
字体的姓氏是字体特定的。 Helvetica Italic和Helvetica Bold等两种字体的姓氏Helvetica ,而他们的字体名字分别是Helvetica Bold和Helvetica Italic 。 可以使用GraphicsEnvironment.getAvailableFontFamilyNames()
方法获得可用姓氏列表。
使用getName
获取字体的逻辑名称。 使用getFontName
获取字体的字体名称。
String
是这个
Font
的家族名字。
getName()
,
getFontName()
public String getFamily(Locale l)
Font
的家族名称,其本地化为指定的区域设置。
字体的姓氏是字体特定的。 Helvetica Italic和Helvetica Bold等两种字体的姓氏Helvetica ,而他们的字体名字分别是Helvetica Bold和Helvetica Italic 。 可以使用GraphicsEnvironment.getAvailableFontFamilyNames()
方法获得可用姓氏列表。
使用getFontName
获取字体的字体名称。
l
- 获取姓氏的地区
String
表示字体的家族名称,已被本地化为指定的区域设置。
getFontName()
, Locale
public String getPSName()
Font
。
使用getFamily
获取字体的姓氏。
使用getFontName
获取字体的字体名称。
String
表示此的postscript名称
Font
。
public String getName()
Font
的逻辑名称。
使用getFamily
获取字体的姓氏。
使用getFontName
获取字体的字体名称。
String
表示此的逻辑名称
Font
。
getFamily()
,
getFontName()
public String getFontName()
Font
的字体名称。
例如,Helvetica Bold可以作为字体脸名返回。
使用getFamily
获取字体的姓氏。
使用getName
获取字体的逻辑名称。
String
表示此的字体外观名称
Font
。
getFamily()
,
getName()
public String getFontName(Locale l)
Font
的字体面部名称,该名称已Font
到指定的区域设置。
例如,Helvetica Fett可以作为字体名称返回。
使用getFamily
获取字体的姓氏。
l
- 要获取字体面部名称的区域设置
String
表示为指定语言环境定位的字体面部名称。
getFamily()
, Locale
public int getStyle()
Font
的样式。
风格可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。
Font
的风格
isPlain()
,
isBold()
,
isItalic()
public int getSize()
Font
的点大小,舍入为整数。
大多数用户都熟悉使用点大小来指定字体中字形的大小的想法。
该点大小定义了在单个间隔文本文档中的一行与下一行的基线之间的基线之间的度量。
点大小基于大约1/72英寸的印刷点 。
Java(tm)2D API采用惯例,即一点相当于用户坐标中的一个单位。 当使用归一化变换将用户空间坐标转换为设备空间坐标时,72个用户空间单元在设备空间中等于1英寸。 在这种情况下,一点是1/72英寸。
Font
的点尺寸在1/72英寸单位。
getSize2D()
,
GraphicsConfiguration.getDefaultTransform()
,
GraphicsConfiguration.getNormalizingTransform()
public float getSize2D()
Font
的点大小,在
float
值。
Font
为
float
值。
getSize()
public boolean isPlain()
Font
对象的样式是否为PLAIN。
true
如果这个Font
有一个PLAIN样式;
false
否则。
getStyle()
public boolean isBold()
Font
对象的样式为BOLD。
true
如果这个Font
对象的样式是BOLD;
false
否则。
getStyle()
public boolean isItalic()
Font
对象的样式是否为ITALIC。
true
如果这个Font
对象的风格是ITALIC;
false
否则。
getStyle()
public boolean isTransformed()
Font
对象是否具有影响其大小的变换以及Size属性。
true
如果此Font
对象具有非身份的AffineTransform属性。
false
否则。
getTransform()
public boolean hasLayoutAttributes()
public static Font getFont(String nm)
Font
对象。
nm
被视为要获取的系统属性的名称。
所述String
该属性的值然后解释为Font
根据所述规范对象Font.decode(String)
如果没有找到指定的属性,或执行代码没有权限读取属性,空值代替返回。
nm
- 属性名称
Font
对象,如果不存在此属性,则为null。
NullPointerException
- 如果nm为空。
decode(String)
public static Font decode(String str)
Font
,该str
参数描述。
要确保此方法返回所需的字体,请按照以下方式之一格式化str
参数
"PLAIN"
, "BOLD"
, "BOLDITALIC"
,或"ITALIC"
和的pointsize是点大小的正十进制整数表示。
例如,如果您想要一个字体为Arial,粗体,点大小为18,则可以使用以下方法调用此方法:“Arial-BOLD-18”。
这相当于调用Font构造函数: new Font("Arial", Font.BOLD, 18);
,并且值被解释为由该构造函数指定。
始终将有效的尾部十进制字段解释为pointsize。 因此,只能在fontname only表单中使用包含尾随十进制值的字体。
如果样式名称字段不是有效的样式字符串之一,则将其解释为字体名称的一部分,并使用默认样式。
可以使用“或” - “中的一个来分隔输入中的字段。 标识的分隔符是最接近字符串末尾的分隔符,该分隔符将有效的pointsize或有效的样式名称与该字符串的其余部分分开。 空(空)指针和样式字段被视为具有该字段的默认值的有效字段。
某些字体名称可能包含分隔符“'或” - “。 如果str
不与3组的部件,例如形成为使得style
或pointsize
字段不存在于str
和fontname
中还含有一个字符确定为分隔符然后在那里它们表现为旨在是一部分这些字符fontname
可以替代地解释为分隔符,因此字体名称可能无法正确识别。
默认大小为12,默认样式为PLAIN。 如果str
未指定有效大小,则返回的Font
的大小为12.如果str
未指定有效样式,则返回的Font具有PLAIN的样式。 如果在str
参数中未指定有效的字体名称,则此方法将返回一个名称为“Dialog”的字体。 要确定系统中可用的字体族名称,请使用GraphicsEnvironment.getAvailableFontFamilyNames()
方法。 如果str
是null
,则返回一个新的Font
,其名称为“Dialog”,大小为12和PLAIN样式。
str
- 字体的名称,或
null
Font
对象
str
描述,或一个新的默认
Font
如果
str
是
null
。
getFamily()
public static Font getFont(String nm, Font font)
Font
从系统属性列表。
正如在getProperty
的方法System
,第一个参数被视为要获得的系统属性的名称。
该属性的String
值被解释为Font
对象。
属性值应为Font.decode(String)
接受的Font.decode(String)
如果没有找到指定的属性,或执行代码没有读取属性的font
则返回font
参数。
nm
- 不区分大小写的属性名称
font
- 如果属性
nm
则返回默认值
Font
Font
价值
Font
。
NullPointerException
- 如果nm为空。
decode(String)
public int hashCode()
Font
的哈希码。
hashCode
在类别
Object
Font
的哈希码值。
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
Font
对象与指定的Object进行
Object
。
equals
在
Object
obj
-
Object
进行比较
true
如果对象相同或参数是一个Font
与此对象相同字体的对象的Font对象;
false
否则。
Object.hashCode()
, HashMap
public String toString()
Font
对象转换为
String
表示。
public int getNumGlyphs()
Font
中的字形数。
字形代码为Font
范围从0到getNumGlyphs()
- 1。
Font
中的字形数。
public int getMissingGlyphCode()
Font
没有指定unicode代码点的字形时使用的glyphCode。
Font
。
public byte getBaselineFor(char c)
大字体可以支持不同的书写系统,每个系统可以使用不同的基准。 字符参数确定要使用的写入系统。 客户不应假定所有角色使用相同的基线。
c
- 用于识别书写系统的字符
LineMetrics.getBaselineOffsets()
,
ROMAN_BASELINE
,
CENTER_BASELINE
,
HANGING_BASELINE
public Map<TextAttribute,?> getAttributes()
Font
的字体属性的映射。
属性包括诸如连字和字形替换等。
Font
。
public AttributedCharacterIterator.Attribute[] getAvailableAttributes()
Font
的所有属性的Font
。
这些属性可用于派生其他字体。
Font
。
public Font deriveFont(int style, float size)
Font
对象并应用新的样式和大小来创建一个新的
Font
对象。
style
- 新款
Font
的风格
size
- 新的
Font
的大小
Font
对象。
public Font deriveFont(int style, AffineTransform trans)
Font
对象并应用新的样式和转换来创建一个新的
Font
对象。
style
- 新款
Font
trans
-在
AffineTransform
与新的相关
Font
Font
对象。
IllegalArgumentException
- 如果
trans
是
null
public Font deriveFont(float size)
Font
对象并对其应用新的大小来创建一个新的
Font
对象。
size
- 新的
Font
的大小。
Font
对象。
public Font deriveFont(AffineTransform trans)
Font
对象并对其应用一个新的变换来创建一个新的
Font
对象。
trans
-在
AffineTransform
与新的相关
Font
Font
对象。
IllegalArgumentException
- 如果
trans
是
null
public Font deriveFont(int style)
Font
对象并应用新的样式来创建一个新的
Font
对象。
style
- 新款
Font
Font
对象。
public Font deriveFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
Font
对象并应用一组新的字体属性来创建一个新的
Font
对象。
attributes
- 为新的Font启用的
Font
Font
对象。
public boolean canDisplay(char c)
Font
是否具有指定字符的字形。
注意:此方法无法处理supplementary characters 。 要支持所有Unicode字符(包括补充字符),请使用canDisplay(int)
或canDisplayUpTo
方法。
c
- 需要字形的字符
true
如果这个Font
有这个字符的字形;
false
否则。
public boolean canDisplay(int codePoint)
Font
是否具有指定字符的字形。
codePoint
- 需要字形的字符(Unicode代码点)。
true
如果这个Font
有字符的字形;
false
否则。
IllegalArgumentException
- 如果代码点不是有效的Unicode代码点。
Character.isValidCodePoint(int)
public int canDisplayUpTo(String str)
Font
可以显示指定String
。
对于具有Unicode编码的字符串,重要的是要知道特定字体是否可以显示字符串。
此方法返回一个偏移到String
str
,这是Font
不能使用缺少的字形代码无法显示的第一个字符。
如果Font
可以显示所有字符,则返回-1。
str
- 一个
String
对象
str
,指向str
的第一个str
,这个Font
不能显示;
或-1
如果这Font
可以显示所有字符在str
。
public int canDisplayUpTo(char[] text, int start, int limit)
Font
可以显示在指定的字符text
开始start
和在结束limit
。
这种方法是一个方便的超载。
text
- 指定的数组为
char
值
start
- 指定的起始偏移(在
char
s)到指定的数组中的
char
值
limit
- 指定的结束偏移量(在
char
s)到指定的数组中的
char
值
text
,指向text
的第一个text
,这个Font
无法显示;
或-1
如果这Font
可以显示所有字符在text
。
public int canDisplayUpTo(CharacterIterator iter, int start, int limit)
Font
可以显示由指定的文本
iter
开始
start
,并在结束
limit
。
iter
- 一个CharacterIterator
对象
start
- 指定的起始偏移量指定为
CharacterIterator
。
limit
- 指定的结束偏移量到指定的
CharacterIterator
。
iter
,指向iter
的第一个iter
,这个Font
无法显示;
或-1
如果这个Font
可以显示iter中的所有iter
。
public float getItalicAngle()
Font
的斜体角。
斜体角是与这个Font
的姿势最匹配的插入符号的倒数斜率。
Font
风格的
Font
。
TextAttribute.POSTURE
public boolean hasUniformLineMetrics()
Font
是否具有统一的线度量。
逻辑Font
可能是一个复合字体,这意味着它由不同的物理字体组成以覆盖不同的代码范围。
每种这些字体可能有不同的LineMetrics
。
如果逻辑Font
是单一字体,则度量将是统一的。
true
如果这个Font
有统一的线度量;
false
否则。
public LineMetrics getLineMetrics(String str, FontRenderContext frc)
String
和FontRenderContext
创建的LineMetrics
对象。
str
- 指定的
String
frc
- 指定的
FontRenderContext
String
和FontRenderContext
创建的LineMetrics
对象。
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc)
LineMetrics
参数创建的一个
LineMetrics
对象。
str
- 指定的
String
beginIndex
- 初始偏移量为
str
limit
- 最终偏移量为
str
frc
- 指定的
FontRenderContext
LineMetrics
参数创建的一个
LineMetrics
对象。
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, FontRenderContext frc)
LineMetrics
参数创建的一个
LineMetrics
对象。
chars
- 一个字符数组
beginIndex
- 初始偏移量为
chars
limit
- 最终偏移量为
chars
frc
- 指定的
FontRenderContext
LineMetrics
参数创建的一个
LineMetrics
对象。
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
LineMetrics
参数创建的
LineMetrics
对象。
ci
- 指定的
CharacterIterator
beginIndex
- 初始偏移量在
ci
limit
-的端部偏移量
ci
frc
- 指定的
FontRenderContext
LineMetrics
参数创建的
LineMetrics
对象。
public Rectangle2D getStringBounds(String str, FontRenderContext frc)
String
在指定的FontRenderContext
。
逻辑边界包含起点,上升,前进和高度,其中包括前导。
逻辑边界并不总是包含所有文本。
例如,在某些语言和某些字体中,重音标记可以位于上升或下降之上。
要得到可视的边界框,它包围了所有文本,使用getBounds
的方法TextLayout
。
注意:返回的边界在基线相对坐标(见class notes
)。
str
- 指定的
String
frc
- 指定的
FontRenderContext
Rectangle2D
是指定的String String
的FontRenderContext的FontRenderContext
。
FontRenderContext
, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
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
Rectangle2D
是指定的
String
在指定的FontRenderContext的
FontRenderContext
。
IndexOutOfBoundsException
-如果
beginIndex
小于零,或
limit
比的长度大
str
,或
beginIndex
大于
limit
。
FontRenderContext
, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc)
FontRenderContext
。
逻辑边界包含起点,上升,前进和高度,其中包括前导。
逻辑边界并不总是包含所有文本。
例如,在某些语言和某些字体中,重音标记可以位于上升或下降之上。
要得到可视的边界框,它包围了所有文本,使用getBounds
的方法TextLayout
。
注意:返回的边界在基线相对坐标(见class notes
)。
chars
- 一个字符数组
beginIndex
-
beginIndex
数组中的初始偏移量
limit
-
limit
数组中的结束偏移量
frc
- 指定的
FontRenderContext
Rectangle2D
是指定的指定字符数组的边界框
FontRenderContext
。
IndexOutOfBoundsException
-如果
beginIndex
小于零,或
limit
比的长度大
chars
,或
beginIndex
大于
limit
。
FontRenderContext
, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
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
CharacterIterator
中索引的字符的
FontRenderContext
。
IndexOutOfBoundsException
-如果
beginIndex
小于的起始索引
ci
,或
limit
比的端指数大于
ci
,或
beginIndex
大于
limit
FontRenderContext
, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
public Rectangle2D getMaxCharBounds(FontRenderContext frc)
FontRenderContext
。
注意:返回的边界在基线相对坐标(见class notes
)。
frc
- 指定的
FontRenderContext
Rectangle2D
是具有最大边界的字符的边框。
public GlyphVector createGlyphVector(FontRenderContext frc, String str)
Font
。
除了将字形映射到字符之外,此方法还没有其他处理。
这意味着这种方法对于需要重新排序,整形或连字替换的一些脚本(如阿拉伯语,希伯来语,泰语和印度语)是无用的。
frc
- 指定的
FontRenderContext
str
- 指定的
String
GlyphVector
创建与指定的
String
和指定的
FontRenderContext
。
public GlyphVector createGlyphVector(FontRenderContext frc, char[] chars)
Font
。
除了将字形映射到字符之外,此方法还没有其他处理。
这意味着这种方法对于需要重新排序,整形或连字替换的一些脚本(如阿拉伯语,希伯来语,泰语和印度语)是无用的。
frc
- 指定的
FontRenderContext
chars
- 指定的字符数组
GlyphVector
创建与指定的字符数组和指定的
FontRenderContext
。
public GlyphVector createGlyphVector(FontRenderContext frc, CharacterIterator ci)
Font
字符映射到字形,从而创建Font
。
除了将字形映射到字符之外,此方法还没有其他处理。
这意味着这种方法对于需要重新排序,整形或连字替换的一些脚本(如阿拉伯语,希伯来语,泰语和印度语)是无用的。
frc
- 指定的
FontRenderContext
ci
- 指定的
CharacterIterator
GlyphVector
创建与指定的
CharacterIterator
和指定的
FontRenderContext
。
public GlyphVector createGlyphVector(FontRenderContext frc, int[] glyphCodes)
Font
。
除了将字形映射到字符之外,此方法还没有其他处理。
这意味着这种方法对于需要重新排序,整形或连字替换的一些脚本(如阿拉伯语,希伯来语,泰语和印度语)是无用的。
frc
- 指定的
FontRenderContext
glyphCodes
- 指定的整数数组
GlyphVector
创建与指定的整数数组和指定的
FontRenderContext
。
public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags)
GlyphVector
对象,如果可能,执行文本的全面布局。
对于复杂文本(如阿拉伯语或印地语)需要完整布局。
支持不同的脚本取决于字体和实现。
布局需要双重度分析,由Bidi
,只能对具有统一方向的文本执行。 方向在标志参数中指示,使用LAYOUT_RIGHT_TO_LEFT表示从右到左(阿拉伯语和希伯来语)运行方向,或LAYOUT_LEFT_TO_RIGHT表示从左到右(英文)运行方向。
此外,一些操作,如阿拉伯塑造,需要上下文,以便开始和限制的字符可以具有正确的形状。 有时缓冲区中提供范围之外的数据没有有效数据。 可以将值LAYOUT_NO_START_CONTEXT和LAYOUT_NO_LIMIT_CONTEXT添加到flags参数中,以指示不应在上下文中检查开始之前或之后的限制之后的文本。
flags参数的所有其他值都保留。
frc
- 指定的
FontRenderContext
text
- 文本布局
start
- 文字的开头用于
GlyphVector
limit
- 用于
GlyphVector
的文本的限制
flags
- 如上所述的控制标志
GlyphVector
表示开始和限制之间的文本,选择和定位字形以便最好地表示文本
ArrayIndexOutOfBoundsException
- 如果启动或限制超出范围
Bidi
, LAYOUT_LEFT_TO_RIGHT
, LAYOUT_RIGHT_TO_LEFT
, LAYOUT_NO_START_CONTEXT
, LAYOUT_NO_LIMIT_CONTEXT