gnu.java.awt.peer

Class ClasspathFontPeer

Implemented Interfaces:
FontPeer
Known Direct Subclasses:
GdkFontPeer, OpenTypeFontPeer, QtFontPeer, XFontPeer, XFontPeer

public abstract class ClasspathFontPeer
extends Object
implements FontPeer

A peer for fonts that are used inside Classpath. The purpose of this interface is to abstract from platform-specific font handling in the Classpath implementation of java.awt.Font and related classes.

State kept by the peer: a peer is generated for each Font object in the default implementation. If you wish to share peers between fonts, you will need to subclass both ClasspathFontPeer and ClasspathToolKit.

Thread Safety: Methods of this interface may be called from arbitrary threads at any time. Implementations of the ClasspathFontPeer interface are required to perform the necessary synchronization.

See Also:
Font.getPeer(), Toolkit.getFontPeer(String,int)

Field Summary

protected String
faceName
protected String
familyName
protected String
logicalName
The 3 names of this font. all fonts have 3 names, some of which may be equal: logical -- name the font was constructed from family -- a designer or brand name (Helvetica) face -- specific instance of a design (Helvetica Regular)
protected float
size
The font point size.
protected int
style
The font style, which is a combination (by OR-ing) of the font style constants PLAIN, BOLD and ITALIC, in this class.
protected AffineTransform
transform
The affine transformation the font is currently subject to.

Constructor Summary

ClasspathFontPeer(String name, int style, int size)
ClasspathFontPeer(String name, Map<K,V> attrs)

Method Summary

abstract boolean
canDisplay(Font font, int c)
Implementation of Font.canDisplay(char)
abstract int
canDisplayUpTo(Font font, CharacterIterator i, int start, int limit)
Implementation of Font.canDisplay(String), Font.canDisplay(char [], int, int), and Font.canDisplay(CharacterIterator, int, int).
protected static void
copyFamilyToAttrs(String fam, Map<K,V> attrs)
static void
copySizeToAttrs(float size, Map<K,V> attrs)
static void
copyStyleToAttrs(int style, Map<K,V> attrs)
protected static void
copyTransformToAttrs(AffineTransform trans, Map<K,V> attrs)
abstract GlyphVector
createGlyphVector(Font font, FontRenderContext ctx, int[] glyphCodes)
Implementation of Font.createGlyphVector(FontRenderContext,int[]).
abstract GlyphVector
createGlyphVector(Font font, FontRenderContext frc, CharacterIterator ci)
Implementation of Font.createGlyphVector(FontRenderContext,String), Font.createGlyphVector(FontRenderContext,char[]), and Font.createGlyphVector(FontRenderContext,CharacterIterator).
Font
deriveFont(Font font, float size)
Implementation of Font.deriveFont(float)
Font
deriveFont(Font font, int style)
Implementation of Font.deriveFont(int)
Font
deriveFont(Font font, int style, float size)
Implementation of Font.deriveFont(int,float)
Font
deriveFont(Font font, int style, AffineTransform t)
Implementation of Font.deriveFont(int,AffineTransform)
Font
deriveFont(Font font, AffineTransform t)
Implementation of Font.deriveFont(AffineTransform)
Font
deriveFont(Font font, Map<K,V> attrs)
Implementation of Font.deriveFont(Map)
protected static String
faceNameToFamilyName(String name)
Map<K,V>
getAttributes(Font font)
Implementation of Font.getAttributes()
AttributedCharacterIterator.Attribute[]
getAvailableAttributes(Font font)
Implementation of Font.getAvailableAttributes()
abstract byte
getBaselineFor(Font font, char c)
Implementation of Font.getBaselineFor(char)
String
getFamily(Font font)
Implementation of Font.getFamily()
String
getFamily(Font font, Locale lc)
Implementation of Font.getFamily(Locale)
abstract FontMetrics
getFontMetrics(Font font)
Implementation of Font.getFontMetrics()
String
getFontName(Font font)
Implementation of Font.getFontName()
String
getFontName(Font font, Locale lc)
Implementation of Font.getFontName(Locale)
abstract String
getGlyphName(Font font, int glyphIndex)
Returns a name for the specified glyph.
float
getItalicAngle(Font font)
Implementation of Font.getItalicAngle()
abstract LineMetrics
getLineMetrics(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc)
Implementation of Font.getLineMetrics(CharacterIterator,int,int,FontRenderContext)
abstract Rectangle2D
getMaxCharBounds(Font font, FontRenderContext rc)
Implementation of Font.getMaxCharBounds(FontRenderContext)
abstract int
getMissingGlyphCode(Font font)
Implementation of Font.getMissingGlyphCode()
String
getName(Font font)
Implementation of Font.getName()
abstract int
getNumGlyphs(Font font)
Implementation of Font.getNumGlyphs()
abstract String
getPostScriptName(Font font)
Implementation of Font.getPSName()
float
getSize(Font font)
Implementation of Font.getSize()
protected void
getStandardAttributes(Map<K,V> attrs)
int
getStyle(Font font)
Implementation of Font.getStyle()
abstract String
getSubFamilyName(Font font, Locale locale)
Returns the name of this font face inside the family, for example “Light”.
AffineTransform
getTransform(Font font)
Implementation of Font.getTransform()
abstract boolean
hasUniformLineMetrics(Font font)
Implementation of Font.hasUniformLineMetrics()
boolean
isBold(Font font)
Implementation of Font.isBold()
boolean
isItalic(Font font)
Implementation of Font.isItalic()
protected static boolean
isLogicalFontName(String name)
boolean
isPlain(Font font)
Implementation of Font.isPlain()
boolean
isTransformed(Font font)
Implementation of Font.isTransformed()
abstract GlyphVector
layoutGlyphVector(Font font, FontRenderContext frc, char[] chars, int start, int limit, int flags)
Implementation of Font.layoutGlyphVector(FontRenderContext,char[],int,int,int).
protected static String
logicalFontNameToFaceName(String name)
protected void
setStandardAttributes(String name, String family, int style, float size, AffineTransform trans)
protected void
setStandardAttributes(String name, Map<K,V> attribs)
protected static ClasspathToolkit
tk()

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

faceName

protected String faceName

familyName

protected String familyName

logicalName

protected String logicalName
The 3 names of this font. all fonts have 3 names, some of which may be equal: logical -- name the font was constructed from family -- a designer or brand name (Helvetica) face -- specific instance of a design (Helvetica Regular)
See Also:
isLogicalFontName

size

protected float size
The font point size. A point is 1/72 of an inch.

style

protected int style
The font style, which is a combination (by OR-ing) of the font style constants PLAIN, BOLD and ITALIC, in this class.

transform

protected AffineTransform transform
The affine transformation the font is currently subject to.

Constructor Details

ClasspathFontPeer

public ClasspathFontPeer(String name,
                         int style,
                         int size)

ClasspathFontPeer

public ClasspathFontPeer(String name,
                         Map<K,V> attrs)

Method Details

canDisplay

public abstract boolean canDisplay(Font font,
                                   int c)
Implementation of Font.canDisplay(char)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

canDisplayUpTo

public abstract int canDisplayUpTo(Font font,
                                   CharacterIterator i,
                                   int start,
                                   int limit)
Implementation of Font.canDisplay(String), Font.canDisplay(char [], int, int), and Font.canDisplay(CharacterIterator, int, int).
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

copyFamilyToAttrs

protected static void copyFamilyToAttrs(String fam,
                                        Map<K,V> attrs)

copySizeToAttrs

public static void copySizeToAttrs(float size,
                                   Map<K,V> attrs)

copyStyleToAttrs

public static void copyStyleToAttrs(int style,
                                    Map<K,V> attrs)

copyTransformToAttrs

protected static void copyTransformToAttrs(AffineTransform trans,
                                           Map<K,V> attrs)

createGlyphVector

public abstract GlyphVector createGlyphVector(Font font,
                                              FontRenderContext ctx,
                                              int[] glyphCodes)
Parameters:
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 of GlyphVector works with Font, not with font peers.

createGlyphVector

public abstract GlyphVector createGlyphVector(Font font,
                                              FontRenderContext frc,
                                              CharacterIterator ci)
Parameters:
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 of GlyphVector works with Font, not with font peers.

deriveFont

public Font deriveFont(Font font,
                       float size)
Implementation of Font.deriveFont(float)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

deriveFont

public Font deriveFont(Font font,
                       int style)
Implementation of Font.deriveFont(int)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

deriveFont

public Font deriveFont(Font font,
                       int style,
                       float size)
Implementation of Font.deriveFont(int,float)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

deriveFont

public Font deriveFont(Font font,
                       int style,
                       AffineTransform t)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

deriveFont

public Font deriveFont(Font font,
                       AffineTransform t)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

deriveFont

public Font deriveFont(Font font,
                       Map<K,V> attrs)
Implementation of Font.deriveFont(Map)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

faceNameToFamilyName

protected static String faceNameToFamilyName(String name)

getAttributes

public Map<K,V> getAttributes(Font font)
Implementation of Font.getAttributes()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getAvailableAttributes

public AttributedCharacterIterator.Attribute[] getAvailableAttributes(Font font)
Implementation of Font.getAvailableAttributes()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getBaselineFor

public abstract byte getBaselineFor(Font font,
                                    char c)
Implementation of Font.getBaselineFor(char)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getFamily

public String getFamily(Font font)
Implementation of Font.getFamily()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getFamily

public String getFamily(Font font,
                        Locale lc)
Implementation of Font.getFamily(Locale)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getFontMetrics

public abstract FontMetrics getFontMetrics(Font font)
Implementation of Font.getFontMetrics()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getFontName

public String getFontName(Font font)
Implementation of Font.getFontName()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getFontName

public String getFontName(Font font,
                          Locale lc)
Implementation of Font.getFontName(Locale)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getGlyphName

public abstract String getGlyphName(Font font,
                                    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. If the implementation follows glyph naming conventions specified by Adobe, search engines can extract the original text from the generated PostScript and PDF files.

This method is currently not used by GNU Classpath. However, it would be very useful for someone wishing to write a good PostScript or PDF stream provider for the javax.print package.

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. To avoid this, the font peer would have to go through the names of all glyphs, which would make this operation very inefficient with large fonts.

Parameters:
font - the font containing the glyph whose name is requested.
glyphIndex - the glyph whose name the caller wants to retrieve.
Returns:
the glyph name, or null if a font does not provide glyph names.

getItalicAngle

public float getItalicAngle(Font font)
Implementation of Font.getItalicAngle()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getLineMetrics

public abstract LineMetrics getLineMetrics(Font font,
                                           CharacterIterator ci,
                                           int begin,
                                           int limit,
                                           FontRenderContext rc)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getMaxCharBounds

public abstract Rectangle2D getMaxCharBounds(Font font,
                                             FontRenderContext rc)
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getMissingGlyphCode

public abstract int getMissingGlyphCode(Font font)
Implementation of Font.getMissingGlyphCode()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getName

public String getName(Font font)
Implementation of Font.getName()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getNumGlyphs

public abstract int getNumGlyphs(Font font)
Implementation of Font.getNumGlyphs()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getPostScriptName

public abstract String getPostScriptName(Font font)
Implementation of Font.getPSName()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getSize

public float getSize(Font font)
Implementation of Font.getSize()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getStandardAttributes

protected void getStandardAttributes(Map<K,V> attrs)

getStyle

public int getStyle(Font font)
Implementation of Font.getStyle()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

getSubFamilyName

public abstract String getSubFamilyName(Font font,
                                        Locale locale)
Returns the name of this font face inside the family, for example “Light”.

This method is currently not used by Font. However, this name would be needed by any serious desktop publishing application.

Parameters:
font - the font whose sub-family name is requested.
locale - the locale for which to localize the name. If locale is null, the returned name is localized to the user’s default locale.
Returns:
the name of the face inside its family, or null if the font does not provide a sub-family name.

getTransform

public AffineTransform getTransform(Font font)
Implementation of Font.getTransform()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

hasUniformLineMetrics

public abstract boolean hasUniformLineMetrics(Font font)
Implementation of Font.hasUniformLineMetrics()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

isBold

public boolean isBold(Font font)
Implementation of Font.isBold()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

isItalic

public boolean isItalic(Font font)
Implementation of Font.isItalic()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

isLogicalFontName

protected static boolean isLogicalFontName(String name)

isPlain

public boolean isPlain(Font font)
Implementation of Font.isPlain()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

isTransformed

public boolean isTransformed(Font font)
Implementation of Font.isTransformed()
Parameters:
font - the font this peer is being called from. This may be useful if you are sharing peers between Font objects. Otherwise it may be ignored.

layoutGlyphVector

public abstract GlyphVector layoutGlyphVector(Font font,
                                              FontRenderContext frc,
                                              char[] chars,
                                              int start,
                                              int limit,
                                              int flags)
Parameters:
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 of GlyphVector works with Font, not with font peers.

logicalFontNameToFaceName

protected static String logicalFontNameToFaceName(String name)

setStandardAttributes

protected void setStandardAttributes(String name,
                                     String family,
                                     int style,
                                     float size,
                                     AffineTransform trans)

setStandardAttributes

protected void setStandardAttributes(String name,
                                     Map<K,V> attribs)

tk

protected static ClasspathToolkit tk()

ClasspathFontPeer.java -- Font peer used by GNU Classpath. Copyright (C) 2003, 2004 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.