gnu.java.awt.font
Interface FontDelegate
- OpenTypeFont
The interface that all font delegate objects implement,
irrespective of where they get their information from.
Thread Safety: All classes that implement the
FontDelegate
interface must allow calling these
methods from multiple concurrent threads. The delegates are
responsible for performing the necessary synchronization.
GlyphVector | createGlyphVector(Font font, FontRenderContext frc, CharacterIterator ci) - Creates a GlyphVector by mapping each character in a
CharacterIterator to the corresponding glyph.
|
void | getAdvance(int glyphIndex, float pointSize, AffineTransform transform, boolean antialias, boolean fractionalMetrics, boolean horizontal, Point2D advance) - Determines the advance width and height for a glyph.
|
float | getAscent(float pointSize, AffineTransform transform, boolean antialiased, boolean fractionalMetrics, boolean horizontal) - Determines the distance between the base line and the highest
ascender.
|
float | getDescent(float pointSize, AffineTransform transform, boolean antialiased, boolean fractionalMetrics, boolean horizontal) - Determines the distance between the base line and the lowest
descender.
|
String | getFamilyName(Locale locale) - Returns the name of the family to which this font face belongs,
for example “Univers”.
|
String | getFullName(Locale locale) - Returns the full name of this font face in the specified
locale, for example “Univers Light”.
|
int | getGlyphIndex(int c) - Returns the glyph code for the specified character.
|
String | getGlyphName(int glyphIndex) - Returns a name for the specified glyph.
|
GeneralPath | getGlyphOutline(int glyphIndex, float pointSize, AffineTransform transform, boolean antialias, boolean fractionalMetrics, int type) - Returns the shape of a glyph.
|
int | getMissingGlyphCode() - Returns the index of the glyph which gets displayed if the font
cannot map a Unicode code point to a glyph.
|
int | getNumGlyphs() - Returns the number of glyphs in this font face.
|
String | getPostScriptName() - Returns the PostScript name of this font face, for example
“Helvetica-Bold”.
|
String | getSubFamilyName(Locale locale) - Returns the name of this font face inside the family, for example
“Light”.
|
createGlyphVector
public GlyphVector createGlyphVector(Font font,
FontRenderContext frc,
CharacterIterator ci)
Creates a GlyphVector by mapping each character in a
CharacterIterator to the corresponding glyph.
The mapping takes only the font’s
cmap
tables into consideration. No other operations (such as glyph
re-ordering, composition, or ligature substitution) are
performed. This means that the resulting GlyphVector will not be
correct for text in languages that have complex
character-to-glyph mappings, such as Arabic, Hebrew, Hindi, or
Thai.
font
- the font object that the created GlyphVector
will return when it gets asked for its font. This argument is
needed because the public API works with java.awt.Font,
not with some private delegate like OpenTypeFont.frc
- the font rendering parameters that are used for
measuring glyphs. The exact placement of text slightly depends on
device-specific characteristics, for instance the device
resolution or anti-aliasing. For this reason, any measurements
will only be accurate if the passed
FontRenderContext
correctly reflects the relevant
parameters. Hence, frc
should be obtained from the
same Graphics2D
that will be used for drawing, and
any rendering hints should be set to the desired values before
obtaining frc
.ci
- a CharacterIterator for iterating over the
characters to be displayed.
getAdvance
public void getAdvance(int glyphIndex,
float pointSize,
AffineTransform transform,
boolean antialias,
boolean fractionalMetrics,
boolean horizontal,
Point2D advance)
Determines the advance width and height for a glyph.
glyphIndex
- the glyph whose advance width is to be
determined.pointSize
- the point size of the font.transform
- a transform that is applied in addition to
scaling to the specified point size. This is often used for
scaling according to the device resolution. Those who lack any
aesthetic sense may also use the transform to slant or stretch
glyphs.antialias
- true
for anti-aliased rendering,
false
for normal rendering. For hinted fonts,
this parameter may indeed affect the result.fractionalMetrics
- true
for fractional metrics,
false
for rounding the result to a pixel boundary.horizontal
- true
for horizontal line layout,
false
for vertical line layout.advance
- a point whose x
and y
fields will hold the advance in each direction. It is well
possible that both values are non-zero, for example for rotated
text or for Urdu fonts.
getAscent
public float getAscent(float pointSize,
AffineTransform transform,
boolean antialiased,
boolean fractionalMetrics,
boolean horizontal)
Determines the distance between the base line and the highest
ascender.
pointSize
- the point size of the font.transform
- a transform that is applied in addition to
scaling to the specified point size. This is often used for
scaling according to the device resolution. Those who lack any
aesthetic sense may also use the transform to slant or stretch
glyphs.antialiased
- true
for anti-aliased rendering,
false
for normal rendering. For hinted fonts,
this parameter may indeed affect the result.fractionalMetrics
- true
for fractional metrics,
false
for rounding the result to a pixel boundary.horizontal
- true
for horizontal line layout,
false
for vertical line layout.
- the ascent, which usually is a positive number.
getDescent
public float getDescent(float pointSize,
AffineTransform transform,
boolean antialiased,
boolean fractionalMetrics,
boolean horizontal)
Determines the distance between the base line and the lowest
descender.
pointSize
- the point size of the font.transform
- a transform that is applied in addition to
scaling to the specified point size. This is often used for
scaling according to the device resolution. Those who lack any
aesthetic sense may also use the transform to slant or stretch
glyphs.antialiased
- true
for anti-aliased rendering,
false
for normal rendering. For hinted fonts,
this parameter may indeed affect the result.fractionalMetrics
- true
for fractional metrics,
false
for rounding the result to a pixel boundary.horizontal
- true
for horizontal line layout,
false
for vertical line layout.
- the descent, which usually is a nagative number.
getFamilyName
public String getFamilyName(Locale locale)
Returns the name of the family to which this font face belongs,
for example “Univers”.
locale
- the locale for which to localize the name.
getFullName
public String getFullName(Locale locale)
Returns the full name of this font face in the specified
locale, for example “Univers Light”.
locale
- the locale for which to localize the name.
getGlyphIndex
public int getGlyphIndex(int c)
Returns the glyph code for the specified character.
getGlyphName
public String getGlyphName(int glyphIndex)
Returns a name for the specified glyph. This is useful for
generating PostScript or PDF files that embed some glyphs of a
font.
Names are not unique: Under some rare circumstances,
the same name can be returned for different glyphs. It is
therefore recommended that printer drivers check whether the same
name has already been returned for antoher glyph, and make the
name unique by adding the string ".alt" followed by the glyph
index.
This situation would occur for an OpenType or TrueType font
that has a
post
table of format 3 and provides a
mapping from glyph IDs to Unicode sequences through a
Zapf
table. If the same sequence of Unicode
codepoints leads to different glyphs (depending on contextual
position, for example, or on typographic sophistication level),
the same name would get synthesized for those glyphs.
glyphIndex
- the glyph whose name the caller wants to
retrieve.
getGlyphOutline
public GeneralPath getGlyphOutline(int glyphIndex,
float pointSize,
AffineTransform transform,
boolean antialias,
boolean fractionalMetrics,
int type)
Returns the shape of a glyph.
glyphIndex
- the glyph whose advance width is to be
determined.pointSize
- the point size of the font.transform
- a transform that is applied in addition to
scaling to the specified point size. This is often used for
scaling according to the device resolution. Those who lack any
aesthetic sense may also use the transform to slant or stretch
glyphs.antialias
- true
for anti-aliased rendering,
false
for normal rendering. For hinted fonts, this
parameter may indeed affect the result.fractionalMetrics
- true
for fractional
metrics, false
for rounding the result to a pixel
boundary.
- the scaled and grid-fitted outline of the specified
glyph, or
null
for bitmap fonts.
getMissingGlyphCode
public int getMissingGlyphCode()
Returns the index of the glyph which gets displayed if the font
cannot map a Unicode code point to a glyph. Many fonts show this
glyph as an empty box.
getNumGlyphs
public int getNumGlyphs()
Returns the number of glyphs in this font face.
getPostScriptName
public String getPostScriptName()
Returns the PostScript name of this font face, for example
“Helvetica-Bold”.
- the PostScript name, or
null
if the font
does not provide a PostScript name.
getSubFamilyName
public String getSubFamilyName(Locale locale)
Returns the name of this font face inside the family, for example
“Light”.
locale
- the locale for which to localize the name.
- the name of the face inside its family.
FontDelegate.java -- Interface implemented by all font delegates.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.