Commit 458becea authored by darin's avatar darin
Browse files

WebCore:

	* kwq/IFTextRenderer.h: Added.
	* kwq/IFTextRendererFactory.h: Added.
	* kwq/IFTextRendererFactory.m: Added.
	These three are the new API for supplying text rendering machinery for WebCore.
	The implementation is in WebKit. Later we might want to flesh out the default
	implementation in WebCore so that it works OK by itself.

	* khtml/rendering/font.cpp: (Font::width): Function is now "width" without
	an underscore. We don't really need to hide the overload we added in this
	case.

	* kwq/qt/qfont.h: Simplify a lot. Doesn't hold an NSFont any more.
	* kwq/KWQFont.mm:
	(QFont::QFont): Eliminated the concept of "default font". Also, a QFont no
	longer holds an NSFont object. That's handled inside IFTextRenderer machinery.
	(QFont::~QFont): Simplify since we don't have an NSFont.
	(QFont::setFamily): Simplify since we don't have an NSFont.
	(QFont::setPixelSize): Simplify since we don't have an NSFont.
	(QFont::setPixelSizeFloat): Simplify since we don't have an NSFont.
	(QFont::setWeight): Simplify since we don't have an NSFont.
	(QFont::weight): Fix a bug where it would return Normal for a QFont that was
	both bold and italic.
	(QFont::setItalic): Simplify since we don't have an NSFont.
	(QFont::italic): Simplify since we have real "bool".
	(QFont::bold): Simplify since we have real "bool".
	(QFont::operator=): Simplify since we don't have an NSFont.
	(QFont::operator==): Rewrite since we don't have an NSFont.

	* kwq/qt/qfontmetrics.h: Simplify a little. The _width() method is now just an
	overload of the width() method. The main change was removing the include of Cocoa.h.
	* kwq/KWQFontMetrics.mm:
	Move most of the code out of here into WebKit.
	(QFontMetrics::ascent): Get it from the renderer.
	(QFontMetrics::descent): Get it from the renderer.
	(QFontMetrics::lineSpacing): Get it from the renderer.
	(QFontMetrics::width): Get it from the renderer.
	(QFontMetrics::boundingRect): Combine width and height that came from the renderer.
	(QFontMetrics::size): Combine width and height that came from the renderer.

	* kwq/Makefile.am: Add IFTextRendererFactory.m, remove KWQTextStorage.mm and KWQTextContainer.mm.
	* kwq/KWQMetrics.h: Removed.
	* kwq/KWQTextContainer.h: Removed.
	* kwq/KWQTextContainer.mm: Removed.
	* kwq/KWQTextStorage.h: Removed.
	* kwq/KWQTextStorage.mm: Removed.

	* kwq/KWQPainter.mm:
	Move most of the code out of here into WebKit.
	(QPainter::drawText): Call the renderer to do it.
	(QPainter::drawUnderlineForText): Call the renderer to do it.

	* libwebcore.exp: Export the IFTextRendererFactory class.

WebKit:

	* Misc.subproj/WebKitDebug.h: Add WEBKIT_LOG_MEMUSAGE, WEBKIT_LOG_FONTCACHE, and
	WEBKIT_LOG_FONTCACHECHARMISS for font code moved here from WebCore.

	* Resources/url_icon.tiff: New URL icon?

	* WebCoreSupport.subproj/IFCachedTextRenderer.h: Added.
	* WebCoreSupport.subproj/IFCachedTextRenderer.m: Added.
	* WebCoreSupport.subproj/IFCachedTextRendererFactory.h: Added.
	* WebCoreSupport.subproj/IFCachedTextRendererFactory.m: Added.
	This has code moved here from WebCore.

	* WebKit.pbproj/project.pbxproj: Add the new source files.

	* Bookmarks.subproj/IFBookmarkLeaf.m:
	(-[IFBookmarkLeaf setURLString:]): Use copy instead of initWithString.
	* Bookmarks.subproj/IFBookmarkList.m:
	(-[IFBookmarkList initWithTitle:image:group:]): Use copy instead of stringWithString.
	(-[IFBookmarkList setTitle:]): Use copy instead of stringWithString.
	* WebView.subproj/IFWebDataSourcePrivate.mm: (-[IFWebDataSource _setTitle:]):
	Use mutableCopy instead of stringWithString.
	* WebView.subproj/IFWebView.mm: (-[IFWebView initWithFrame:]): Use copy instead
	of stringWithString.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1092 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 86391a46
2002-05-03 Darin Adler <darin@apple.com>
* kwq/IFTextRenderer.h: Added.
* kwq/IFTextRendererFactory.h: Added.
* kwq/IFTextRendererFactory.m: Added.
These three are the new API for supplying text rendering machinery for WebCore.
The implementation is in WebKit. Later we might want to flesh out the default
implementation in WebCore so that it works OK by itself.
* khtml/rendering/font.cpp: (Font::width): Function is now "width" without
an underscore. We don't really need to hide the overload we added in this
case.
* kwq/qt/qfont.h: Simplify a lot. Doesn't hold an NSFont any more.
* kwq/KWQFont.mm:
(QFont::QFont): Eliminated the concept of "default font". Also, a QFont no
longer holds an NSFont object. That's handled inside IFTextRenderer machinery.
(QFont::~QFont): Simplify since we don't have an NSFont.
(QFont::setFamily): Simplify since we don't have an NSFont.
(QFont::setPixelSize): Simplify since we don't have an NSFont.
(QFont::setPixelSizeFloat): Simplify since we don't have an NSFont.
(QFont::setWeight): Simplify since we don't have an NSFont.
(QFont::weight): Fix a bug where it would return Normal for a QFont that was
both bold and italic.
(QFont::setItalic): Simplify since we don't have an NSFont.
(QFont::italic): Simplify since we have real "bool".
(QFont::bold): Simplify since we have real "bool".
(QFont::operator=): Simplify since we don't have an NSFont.
(QFont::operator==): Rewrite since we don't have an NSFont.
* kwq/qt/qfontmetrics.h: Simplify a little. The _width() method is now just an
overload of the width() method. The main change was removing the include of Cocoa.h.
* kwq/KWQFontMetrics.mm:
Move most of the code out of here into WebKit.
(QFontMetrics::ascent): Get it from the renderer.
(QFontMetrics::descent): Get it from the renderer.
(QFontMetrics::lineSpacing): Get it from the renderer.
(QFontMetrics::width): Get it from the renderer.
(QFontMetrics::boundingRect): Combine width and height that came from the renderer.
(QFontMetrics::size): Combine width and height that came from the renderer.
* kwq/Makefile.am: Add IFTextRendererFactory.m, remove KWQTextStorage.mm and KWQTextContainer.mm.
* kwq/KWQMetrics.h: Removed.
* kwq/KWQTextContainer.h: Removed.
* kwq/KWQTextContainer.mm: Removed.
* kwq/KWQTextStorage.h: Removed.
* kwq/KWQTextStorage.mm: Removed.
* kwq/KWQPainter.mm:
Move most of the code out of here into WebKit.
(QPainter::drawText): Call the renderer to do it.
(QPainter::drawUnderlineForText): Call the renderer to do it.
* libwebcore.exp: Export the IFTextRendererFactory class.
2002-04-26 Darin Adler <darin@apple.com>
* kwq/make-mac-encodings.c: (main): One more place that needed a workaround
......
2002-05-03 Darin Adler <darin@apple.com>
* kwq/IFTextRenderer.h: Added.
* kwq/IFTextRendererFactory.h: Added.
* kwq/IFTextRendererFactory.m: Added.
These three are the new API for supplying text rendering machinery for WebCore.
The implementation is in WebKit. Later we might want to flesh out the default
implementation in WebCore so that it works OK by itself.
* khtml/rendering/font.cpp: (Font::width): Function is now "width" without
an underscore. We don't really need to hide the overload we added in this
case.
* kwq/qt/qfont.h: Simplify a lot. Doesn't hold an NSFont any more.
* kwq/KWQFont.mm:
(QFont::QFont): Eliminated the concept of "default font". Also, a QFont no
longer holds an NSFont object. That's handled inside IFTextRenderer machinery.
(QFont::~QFont): Simplify since we don't have an NSFont.
(QFont::setFamily): Simplify since we don't have an NSFont.
(QFont::setPixelSize): Simplify since we don't have an NSFont.
(QFont::setPixelSizeFloat): Simplify since we don't have an NSFont.
(QFont::setWeight): Simplify since we don't have an NSFont.
(QFont::weight): Fix a bug where it would return Normal for a QFont that was
both bold and italic.
(QFont::setItalic): Simplify since we don't have an NSFont.
(QFont::italic): Simplify since we have real "bool".
(QFont::bold): Simplify since we have real "bool".
(QFont::operator=): Simplify since we don't have an NSFont.
(QFont::operator==): Rewrite since we don't have an NSFont.
* kwq/qt/qfontmetrics.h: Simplify a little. The _width() method is now just an
overload of the width() method. The main change was removing the include of Cocoa.h.
* kwq/KWQFontMetrics.mm:
Move most of the code out of here into WebKit.
(QFontMetrics::ascent): Get it from the renderer.
(QFontMetrics::descent): Get it from the renderer.
(QFontMetrics::lineSpacing): Get it from the renderer.
(QFontMetrics::width): Get it from the renderer.
(QFontMetrics::boundingRect): Combine width and height that came from the renderer.
(QFontMetrics::size): Combine width and height that came from the renderer.
* kwq/Makefile.am: Add IFTextRendererFactory.m, remove KWQTextStorage.mm and KWQTextContainer.mm.
* kwq/KWQMetrics.h: Removed.
* kwq/KWQTextContainer.h: Removed.
* kwq/KWQTextContainer.mm: Removed.
* kwq/KWQTextStorage.h: Removed.
* kwq/KWQTextStorage.mm: Removed.
* kwq/KWQPainter.mm:
Move most of the code out of here into WebKit.
(QPainter::drawText): Call the renderer to do it.
(QPainter::drawUnderlineForText): Call the renderer to do it.
* libwebcore.exp: Export the IFTextRendererFactory class.
2002-04-26 Darin Adler <darin@apple.com>
* kwq/make-mac-encodings.c: (main): One more place that needed a workaround
......
2002-05-03 Darin Adler <darin@apple.com>
* kwq/IFTextRenderer.h: Added.
* kwq/IFTextRendererFactory.h: Added.
* kwq/IFTextRendererFactory.m: Added.
These three are the new API for supplying text rendering machinery for WebCore.
The implementation is in WebKit. Later we might want to flesh out the default
implementation in WebCore so that it works OK by itself.
* khtml/rendering/font.cpp: (Font::width): Function is now "width" without
an underscore. We don't really need to hide the overload we added in this
case.
* kwq/qt/qfont.h: Simplify a lot. Doesn't hold an NSFont any more.
* kwq/KWQFont.mm:
(QFont::QFont): Eliminated the concept of "default font". Also, a QFont no
longer holds an NSFont object. That's handled inside IFTextRenderer machinery.
(QFont::~QFont): Simplify since we don't have an NSFont.
(QFont::setFamily): Simplify since we don't have an NSFont.
(QFont::setPixelSize): Simplify since we don't have an NSFont.
(QFont::setPixelSizeFloat): Simplify since we don't have an NSFont.
(QFont::setWeight): Simplify since we don't have an NSFont.
(QFont::weight): Fix a bug where it would return Normal for a QFont that was
both bold and italic.
(QFont::setItalic): Simplify since we don't have an NSFont.
(QFont::italic): Simplify since we have real "bool".
(QFont::bold): Simplify since we have real "bool".
(QFont::operator=): Simplify since we don't have an NSFont.
(QFont::operator==): Rewrite since we don't have an NSFont.
* kwq/qt/qfontmetrics.h: Simplify a little. The _width() method is now just an
overload of the width() method. The main change was removing the include of Cocoa.h.
* kwq/KWQFontMetrics.mm:
Move most of the code out of here into WebKit.
(QFontMetrics::ascent): Get it from the renderer.
(QFontMetrics::descent): Get it from the renderer.
(QFontMetrics::lineSpacing): Get it from the renderer.
(QFontMetrics::width): Get it from the renderer.
(QFontMetrics::boundingRect): Combine width and height that came from the renderer.
(QFontMetrics::size): Combine width and height that came from the renderer.
* kwq/Makefile.am: Add IFTextRendererFactory.m, remove KWQTextStorage.mm and KWQTextContainer.mm.
* kwq/KWQMetrics.h: Removed.
* kwq/KWQTextContainer.h: Removed.
* kwq/KWQTextContainer.mm: Removed.
* kwq/KWQTextStorage.h: Removed.
* kwq/KWQTextStorage.mm: Removed.
* kwq/KWQPainter.mm:
Move most of the code out of here into WebKit.
(QPainter::drawText): Call the renderer to do it.
(QPainter::drawUnderlineForText): Call the renderer to do it.
* libwebcore.exp: Export the IFTextRendererFactory class.
2002-04-26 Darin Adler <darin@apple.com>
* kwq/make-mac-encodings.c: (main): One more place that needed a workaround
......
......@@ -101,7 +101,7 @@ void Font::drawText( QPainter *p, int x, int y, QChar *str, int slen, int pos, i
int Font::width( QChar *chs, int slen, int pos, int len ) const
{
#ifdef APPLE_CHANGES
return fm._width(chs + pos, kMin(len, slen - pos));
return fm.width(chs + pos, kMin(len, slen - pos));
#else
QString qstr = QConstString(chs+pos, slen-pos).string();
......
/*
* Copyright (C) 2001 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2002 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......@@ -22,127 +22,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
This class an it's companion KWQTextStorage are used to optimize
our interaction with NSLayoutManager. They do very little.
KWQTextContainer has a fixed geometry. It only ever containers
a short run of text corresponding to a khtml TextSlave.
Both KWQTextStorage and KWQTextContainer are used as singletons. They
are set/reset for layout and rendering.
*/
#import <Cocoa/Cocoa.h>
#include <kwqdebug.h>
#import <KWQTextContainer.h>
@implementation KWQTextContainer
const float LargeNumberForText = 1.0e7;
static KWQTextContainer *sharedInstance = nil;
+ (KWQTextContainer *)sharedInstance
{
if (sharedInstance == nil)
sharedInstance = [[KWQTextContainer alloc] initWithContainerSize: NSMakeSize(0,0)];
return sharedInstance;
}
- (id)initWithContainerSize:(NSSize)aSize
{
[super initWithContainerSize:aSize];
return self;
}
- (void)replaceLayoutManager:(NSLayoutManager *)aLayoutManager
{
[NSException raise:@"NOT IMPLEMENTED" format:@"- (void)replaceLayoutManager:(NSLayoutManager *)aLayoutManager"];
}
- (BOOL)isSimpleRectangularTextContainer
{
return YES;
}
- (BOOL)containsPoint:(NSPoint)aPoint
{
return YES;
}
- (NSSize)containerSize
{
return NSMakeSize(LargeNumberForText, LargeNumberForText);
}
@protocol IFTextRenderer <NSObject>
- (void)setContainerSize:(NSSize)aSize
{
[NSException raise:@"NOT IMPLEMENTED" format:@"- (void)setContainerSize:(NSSize)aSize"];
}
- (int)widthForString:(NSString *)string;
- (int)ascent;
- (int)descent;
- (int)lineSpacing;
- (void)setHeightTracksTextView:(BOOL)flag
{
[NSException raise:@"NOT IMPLEMENTED" format:@"- (void)setHeightTracksTextView:(BOOL)flag"];
}
- (void)drawString:(NSString *)string atPoint:(NSPoint)point withColor:(NSColor *)color;
- (void)drawUnderlineForString:(NSString *)string atPoint:(NSPoint)point withColor:(NSColor *)color;
- (BOOL)heightTracksTextView
{
return NO;
}
- (void)drawString:(NSString *)string inRect:(NSRect)rect withColor:(NSColor *)color paragraphStyle:(NSParagraphStyle *)style;
- (void)setWidthTracksTextView:(BOOL)flag
{
[NSException raise:@"NOT IMPLEMENTED" format:@"- (void)setWidthTracksTextView:(BOOL)flag"];
}
- (BOOL)widthTracksTextView
{
return NO;
}
- (void)setLayoutManager:(NSLayoutManager *)aLayoutManager
{
}
- (NSLayoutManager *)layoutManager
{
[NSException raise:@"NOT IMPLEMENTED" format:@"- (NSLayoutManager *)layoutManager"];
return nil;
}
- (void)setLineFragmentPadding:(float)aFloat
{
}
- (float)lineFragmentPadding
{
return 0.0f;
}
- (void)setTextView:(NSTextView *)aTextView
{
}
- (NSTextView *)textView
{
return nil;
}
- (NSRect)lineFragmentRectForProposedRect:(NSRect)proposedRect sweepDirection:(NSLineSweepDirection)sweepDirection movementDirection:(NSLineMovementDirection)movementDirection remainingRect:(NSRect *)remainingRect
{
return proposedRect;
}
// A way to bypass NSString for speed.
- (int)widthForCharacters:(const UniChar *)characters length:(unsigned)length;
@end
/*
* Copyright (C) 2001 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2002 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......@@ -23,12 +23,16 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <kwqdebug.h>
#import <Cocoa/Cocoa.h>
@protocol IFTextRenderer;
@interface KWQTextContainer : NSTextContainer
@interface IFTextRendererFactory : NSObject
{
}
+ (KWQTextContainer *)sharedInstance;
+ (IFTextRendererFactory *)sharedFactory;
- init;
- (id <IFTextRenderer>)rendererWithFamily:(NSString *)family traits:(NSFontTraitMask)traits size:(float)size;
@end
/*
* Copyright (C) 2001 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2002 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......@@ -22,34 +22,32 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import <Cocoa/Cocoa.h>
#include <kwqdebug.h>
#import "IFTextRendererFactory.h"
#import <kwqdebug.h>
#import <KWQMetrics.h>
@implementation IFTextRendererFactory
@interface KWQTextStorage : NSTextStorage
static IFTextRendererFactory *sharedFactory;
+ (IFTextRendererFactory *)sharedFactory
{
NSDictionary *attributes;
NSString *string;
int stringCapacity;
NSMutableDictionary *fragmentCache;
NSLayoutManager *_layoutManager;
#ifdef SPACE_OPTIMIZATION
id <KWQLayoutFragment> spaceFragment;
id <KWQLayoutFragment> expandedFragment;
#endif
return sharedFactory;
}
- (id)initWithFontAttribute:(NSDictionary *)attrs;
- (void)setAttributes: (NSDictionary *)at;
- (id <KWQLayoutFragment>)getFragmentForString: (NSString *)string;
- (void)setString: (NSString *)dString;
- init
{
[super init];
KWQ_ASSERT(!sharedFactory);
sharedFactory = [self retain];
return self;
}
#ifdef _DEBUG_LAYOUT_FRAGMENT
- (NSDictionary *)fragmentCache;
#endif
- (id <IFTextRenderer>)rendererWithFamily:(NSString *)family traits:(NSFontTraitMask)traits size:(float)size
{
return nil;
}
@end
......@@ -26,46 +26,27 @@
#ifndef QFONT_H_
#define QFONT_H_
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
class QString;
class QPainter;
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
#define Fixed MacFixed
#define Rect MacRect
#define Boolean MacBoolean
#import <Cocoa/Cocoa.h>
#undef Fixed
#undef Rect
#undef Boolean
#ifdef __OBJC__
@class NSString;
#else
typedef void NSString;
#endif
// class QFont =================================================================
class QFont {
public:
// typedefs ----------------------------------------------------------------
// enums -------------------------------------------------------------------
enum CharSet { Latin1, Unicode };
enum Weight { Normal = 50, Bold = 63 };
// constants ---------------------------------------------------------------
// static member functions -------------------------------------------------
// constructors, copy constructors, and destructors ------------------------
QFont();
QFont(const QFont &);
QFont &operator=(const QFont &);
~QFont();
// member functions --------------------------------------------------------
int pixelSize() const;
QString family() const;
void setFamily(const QString &);
......@@ -77,49 +58,18 @@ public:
bool italic() const;
bool bold() const;
// operators ---------------------------------------------------------------
QFont &operator=(const QFont &);
bool operator==(const QFont &x) const;
bool operator!=(const QFont &x) const;
#ifdef _KWQ_
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
static NSFont *QFont::defaultNSFont();
#endif
#endif
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSFont *getFont();
#else
void *getFont();
#endif
// protected -------------------------------------------------------------------
// private ---------------------------------------------------------------------
private:
#ifdef _KWQ_
void _initialize();
void _initializeWithFont(const QFont *);
void _free();
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
void _setTrait (NSFontTraitMask mask);
#endif
bool operator!=(const QFont &x) const { return !(*this == x); }
#if (defined(__APPLE__) && defined(__OBJC__) && defined(__cplusplus))
NSFont *font;
NSString *_family;
int _trait;
float _size;
#else
void *font;
void *_family;
int _trait;
float _size;
#endif
NSString *getNSFamily() const { return _family; }
int getNSTraits() const { return _trait; }
float getNSSize() const { return _size; }
#endif
private:
NSString *_family;
int _trait;
float _size;
}; // class QFont ==============================================================
};
#endif
......@@ -23,300 +23,113 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <qstring.h>
#include <qfont.h>
#include <kwqdebug.h>
#import <qfont.h>
#import <qstring.h>
#import <Cocoa/Cocoa.h>
/*
For this implementation Qt pixelSize is interpreted as Cocoa pointSize.
*/
static NSFont *defaultFont = 0;
static NSString *defaultFontFamilyName;
static float defaultFontSize;
static int defaultFontTrait;
static void
loadDefaultFont()
{
if (defaultFont)
return;
defaultFont = [[NSFont userFontOfSize: (float)12.0] retain];
defaultFontFamilyName = [[defaultFont familyName] retain];
defaultFontSize = [defaultFont pointSize];
defaultFontTrait = [[NSFontManager sharedFontManager] traitsOfFont:defaultFont] & (NSBoldFontMask | NSItalicFontMask);
}
#define Fixed MacFixed
#define Rect MacRect
#define Boolean MacBoolean
#include <Cocoa/Cocoa.h>
#undef Fixed
#undef Rect
#undef Boolean
QFont::QFont()
: _family([@"" retain])
, _trait(0)
, _size(12.0)
{
_initializeWithFont(0);
}
void QFont::_initializeWithFont(const QFont *withFont)
{
if (withFont) {
font = [withFont->font retain];
_family = [withFont->_family retain];
_size = withFont->_size;
_trait = withFont->_trait;
} else {
loadDefaultFont();
font = [defaultFont retain];
_family = [defaultFontFamilyName retain];
_size = defaultFontSize;
_trait = defaultFontTrait;
}
}
QFont::QFont(const QFont &copyFrom)
: _family([copyFrom._family retain])
, _trait(copyFrom._trait)
, _size(copyFrom._size)
{
_initializeWithFont(&copyFrom);
}
QFont::~QFont()
{
_free();
}
void QFont::_free()
{
[_family release];
[font autorelease];
font = nil;
}
// member functions --------------------------------------------------------
#ifdef DEBUG_GETFONT
static int getFontCount = 0;
#endif