gnu.java.awt.peer.x

Class XFontPeer

Implemented Interfaces:
FontPeer

public class XFontPeer
extends ClasspathFontPeer

The bridge from AWT to X fonts.

Field Summary

Fields inherited from class gnu.java.awt.peer.ClasspathFontPeer

faceName, familyName, logicalName, size, style, transform

Constructor Summary

XFontPeer(String name, int style, int size)
Creates a new XFontPeer for the specified font name, style and size.
XFontPeer(String name, Map<K,V> atts)
Creates a new XFontPeer for the specified font name and style attributes.

Method Summary

boolean
canDisplay(Font font, int c)
Implementation of Font.canDisplay(char)
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).
GlyphVector
createGlyphVector(Font font, FontRenderContext ctx, int[] glyphCodes)
Implementation of Font.createGlyphVector(FontRenderContext,int[]).
GlyphVector
createGlyphVector(Font font, FontRenderContext frc, CharacterIterator ci)
Implementation of Font.createGlyphVector(FontRenderContext,String), Font.createGlyphVector(FontRenderContext,char[]), and Font.createGlyphVector(FontRenderContext,CharacterIterator).
protected void
finalize()
Frees the font in the X server.
byte
getBaselineFor(Font font, char c)
Implementation of Font.getBaselineFor(char)
FontMetrics
getFontMetrics(Font font)
Returns the font metrics for the specified font.
String
getGlyphName(Font font, int glyphIndex)
Returns a name for the specified glyph.
LineMetrics
getLineMetrics(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc)
Returns the line metrics for this font and the specified string and font render context.
Rectangle2D
getMaxCharBounds(Font font, FontRenderContext rc)
Implementation of Font.getMaxCharBounds(FontRenderContext)
int
getMissingGlyphCode(Font font)
Implementation of Font.getMissingGlyphCode()
int
getNumGlyphs(Font font)
Implementation of Font.getNumGlyphs()
String
getPostScriptName(Font font)
Implementation of Font.getPSName()
Rectangle2D
getStringBounds(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext frc)
String
getSubFamilyName(Font font, Locale locale)
Returns the name of this font face inside the family, for example “Light”.
boolean
hasUniformLineMetrics(Font font)
Implementation of Font.hasUniformLineMetrics()
GlyphVector
layoutGlyphVector(Font font, FontRenderContext frc, char[] chars, int start, int limit, int flags)
Implementation of Font.layoutGlyphVector(FontRenderContext,char[],int,int,int).

Methods inherited from class gnu.java.awt.peer.ClasspathFontPeer

canDisplay, canDisplayUpTo, copyFamilyToAttrs, copySizeToAttrs, copyStyleToAttrs, copyTransformToAttrs, createGlyphVector, createGlyphVector, deriveFont, deriveFont, deriveFont, deriveFont, deriveFont, deriveFont, faceNameToFamilyName, getAttributes, getAvailableAttributes, getBaselineFor, getFamily, getFamily, getFontMetrics, getFontName, getFontName, getGlyphName, getItalicAngle, getLineMetrics, getMaxCharBounds, getMissingGlyphCode, getName, getNumGlyphs, getPostScriptName, getSize, getStandardAttributes, getStyle, getSubFamilyName, getTransform, hasUniformLineMetrics, isBold, isItalic, isLogicalFontName, isPlain, isTransformed, layoutGlyphVector, logicalFontNameToFaceName, setStandardAttributes, setStandardAttributes, tk

Methods inherited from class java.lang.Object

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

Constructor Details

XFontPeer

public XFontPeer(String name,
                 int style,
                 int size)
Creates a new XFontPeer for the specified font name, style and size.
Parameters:
name - the font name
style - the font style (bold / italic / normal)
size - the size of the font

XFontPeer

public XFontPeer(String name,
                 Map<K,V> atts)
Creates a new XFontPeer for the specified font name and style attributes.
Parameters:
name - the font name
atts - the font attributes

Method Details

canDisplay

public boolean canDisplay(Font font,
                          int c)
Implementation of Font.canDisplay(char)
Overrides:
canDisplay in interface ClasspathFontPeer
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 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).
Overrides:
canDisplayUpTo in interface ClasspathFontPeer
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.

createGlyphVector

public GlyphVector createGlyphVector(Font font,
                                     FontRenderContext ctx,
                                     int[] glyphCodes)
Overrides:
createGlyphVector in interface ClasspathFontPeer
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 GlyphVector createGlyphVector(Font font,
                                     FontRenderContext frc,
                                     CharacterIterator ci)
Overrides:
createGlyphVector in interface ClasspathFontPeer
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.

finalize

protected void finalize()
Frees the font in the X server.
Overrides:
finalize in interface Object

getBaselineFor

public byte getBaselineFor(Font font,
                           char c)
Implementation of Font.getBaselineFor(char)
Overrides:
getBaselineFor in interface ClasspathFontPeer
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 FontMetrics getFontMetrics(Font font)
Returns the font metrics for the specified font.
Overrides:
getFontMetrics in interface ClasspathFontPeer
Parameters:
font - the font for which to fetch the font metrics
Returns:
the font metrics for the specified font

getGlyphName

public 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.

Overrides:
getGlyphName in interface ClasspathFontPeer
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.

getLineMetrics

public LineMetrics getLineMetrics(Font font,
                                  CharacterIterator ci,
                                  int begin,
                                  int limit,
                                  FontRenderContext rc)
Returns the line metrics for this font and the specified string and font render context.
Overrides:
getLineMetrics in interface ClasspathFontPeer

getMaxCharBounds

public Rectangle2D getMaxCharBounds(Font font,
                                    FontRenderContext rc)
Overrides:
getMaxCharBounds in interface ClasspathFontPeer
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 int getMissingGlyphCode(Font font)
Implementation of Font.getMissingGlyphCode()
Overrides:
getMissingGlyphCode in interface ClasspathFontPeer
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 int getNumGlyphs(Font font)
Implementation of Font.getNumGlyphs()
Overrides:
getNumGlyphs in interface ClasspathFontPeer
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 String getPostScriptName(Font font)
Implementation of Font.getPSName()
Overrides:
getPostScriptName in interface ClasspathFontPeer
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.

getStringBounds

public Rectangle2D getStringBounds(Font font,
                                   CharacterIterator ci,
                                   int begin,
                                   int limit,
                                   FontRenderContext frc)

getSubFamilyName

public 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.

Overrides:
getSubFamilyName in interface ClasspathFontPeer
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.

hasUniformLineMetrics

public boolean hasUniformLineMetrics(Font font)
Implementation of Font.hasUniformLineMetrics()
Overrides:
hasUniformLineMetrics in interface ClasspathFontPeer
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 GlyphVector layoutGlyphVector(Font font,
                                     FontRenderContext frc,
                                     char[] chars,
                                     int start,
                                     int limit,
                                     int flags)
Overrides:
layoutGlyphVector in interface ClasspathFontPeer
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.

XFontPeer.java -- The font peer for X 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.