gnu.java.awt.peer.gtk

Class GdkFontPeer

Implemented Interfaces:
FontPeer

public class GdkFontPeer
extends ClasspathFontPeer

Field Summary

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

faceName, familyName, logicalName, size, style, transform

Constructor Summary

GdkFontPeer(String name, int style)
GdkFontPeer(String name, int style, int size)
GdkFontPeer(String name, Map<K,V> 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 ctx, CharacterIterator i)
Implementation of Font.createGlyphVector(FontRenderContext,String), Font.createGlyphVector(FontRenderContext,char[]), and Font.createGlyphVector(FontRenderContext,CharacterIterator).
protected void
finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed.
byte
getBaselineFor(Font font, char c)
Implementation of Font.getBaselineFor(char)
FontMetrics
getFontMetrics(Font font)
Implementation of Font.getFontMetrics()
String
getGlyphName(Font font, int glyphIndex)
Returns a name for the specified glyph.
LineMetrics
getLineMetrics(Font font, String str, FontRenderContext frc)
LineMetrics
getLineMetrics(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc)
Implementation of Font.getLineMetrics(CharacterIterator,int,int,FontRenderContext)
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)
Returns the PostScript name of the font, defaults to the familyName if a PS name could not be retrieved.
String
getSubFamilyName(Font font, Locale locale)
Unneeded, but implemented anyway.
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

GdkFontPeer

public GdkFontPeer(String name,
                   int style)

GdkFontPeer

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

GdkFontPeer

public GdkFontPeer(String name,
                   Map<K,V> 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 ctx,
                                     CharacterIterator i)
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()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed. You would think that this means it eventually is called on every Object, but this is not necessarily the case. If execution terminates abnormally, garbage collection does not always happen. Thus you cannot rely on this method to always work. For finer control over garbage collection, use references from the java.lang.ref package.

Virtual Machines are free to not call this method if they can determine that it does nothing important; for example, if your class extends Object and overrides finalize to do simply super.finalize().

finalize() will be called by a Thread that has no locks on any Objects, and may be called concurrently. There are no guarantees on the order in which multiple objects are finalized. This means that finalize() is usually unsuited for performing actions that must be thread-safe, and that your implementation must be use defensive programming if it is to always work.

If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.

It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.

Unlike constructors, finalize() does not get called for an object's superclass unless the implementation specifically calls super.finalize().

The default implementation does nothing.

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)
Implementation of Font.getFontMetrics()
Overrides:
getFontMetrics 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.

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,
                                  String str,
                                  FontRenderContext frc)

getLineMetrics

public LineMetrics getLineMetrics(Font font,
                                  CharacterIterator ci,
                                  int begin,
                                  int limit,
                                  FontRenderContext rc)
Overrides:
getLineMetrics 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.

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)
Returns the PostScript name of the font, defaults to the familyName if a PS name could not be retrieved.
Overrides:
getPostScriptName in interface ClasspathFontPeer

getSubFamilyName

public String getSubFamilyName(Font font,
                               Locale locale)
Unneeded, but implemented anyway.
Overrides:
getSubFamilyName in interface ClasspathFontPeer

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.

GdkFontPeer.java -- Implements FontPeer with GTK+ Copyright (C) 1999, 2004, 2005, 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.