2003-07-31 23:52:10 +00:00
|
|
|
/*
|
|
|
|
NSFont.h
|
|
|
|
|
|
|
|
The font class
|
|
|
|
|
|
|
|
Copyright (C) 1996 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Author: Scott Christley <scottc@net-community.com>
|
|
|
|
Author: Ovidiu Predescu <ovidiu@net-community.com>
|
|
|
|
Date: 1996, 1997
|
|
|
|
|
|
|
|
This file is part of the GNUstep GUI Library.
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
2007-10-29 21:16:17 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
2003-07-31 23:52:10 +00:00
|
|
|
License as published by the Free Software Foundation; either
|
2008-06-10 04:01:49 +00:00
|
|
|
version 2 of the License, or (at your option) any later version.
|
2007-10-29 21:16:17 +00:00
|
|
|
|
2003-07-31 23:52:10 +00:00
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2007-10-29 21:16:17 +00:00
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Lesser General Public License for more details.
|
2003-07-31 23:52:10 +00:00
|
|
|
|
2007-10-29 21:16:17 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2003-07-31 23:52:10 +00:00
|
|
|
License along with this library; see the file COPYING.LIB.
|
2007-10-29 21:16:17 +00:00
|
|
|
If not, see <http://www.gnu.org/licenses/> or write to the
|
|
|
|
Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
2006-11-06 13:58:37 +00:00
|
|
|
Boston, MA 02110-1301, USA.
|
2003-07-31 23:52:10 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _GNUstep_H_NSFont
|
|
|
|
#define _GNUstep_H_NSFont
|
2006-11-06 13:58:37 +00:00
|
|
|
#import <GNUstepBase/GSVersionMacros.h>
|
2003-07-31 23:52:10 +00:00
|
|
|
|
2010-03-24 22:41:21 +00:00
|
|
|
#import <Foundation/NSObject.h>
|
|
|
|
#import <Foundation/NSGeometry.h>
|
|
|
|
#import <AppKit/AppKitDefines.h>
|
2005-03-07 13:25:29 +00:00
|
|
|
// For NSControlSize
|
2010-03-24 22:41:21 +00:00
|
|
|
#import <AppKit/NSColor.h>
|
2003-07-31 23:52:10 +00:00
|
|
|
|
2007-08-08 11:05:19 +00:00
|
|
|
@class NSAffineTransform;
|
2005-03-07 13:25:29 +00:00
|
|
|
@class NSCharacterSet;
|
2007-08-08 11:05:19 +00:00
|
|
|
@class NSDictionary;
|
|
|
|
@class NSFontDescriptor;
|
|
|
|
@class NSGraphicsContext;
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
typedef unsigned int NSGlyph;
|
|
|
|
|
|
|
|
enum {
|
|
|
|
NSControlGlyph = 0x00ffffff,
|
|
|
|
GSAttachmentGlyph = 0x00fffffe,
|
|
|
|
NSNullGlyph = 0x0
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef enum _NSGlyphRelation {
|
|
|
|
NSGlyphBelow,
|
|
|
|
NSGlyphAbove,
|
|
|
|
} NSGlyphRelation;
|
|
|
|
|
|
|
|
typedef enum _NSMultibyteGlyphPacking {
|
|
|
|
NSOneByteGlyphPacking,
|
|
|
|
NSJapaneseEUCGlyphPacking,
|
|
|
|
NSAsciiWithDoubleByteEUCGlyphPacking,
|
|
|
|
NSTwoByteGlyphPacking,
|
|
|
|
NSFourByteGlyphPacking
|
|
|
|
} NSMultibyteGlyphPacking;
|
|
|
|
|
2007-08-08 11:05:19 +00:00
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
|
|
|
typedef enum _NSFontRenderingMode
|
|
|
|
{
|
|
|
|
NSFontDefaultRenderingMode = 0,
|
|
|
|
NSFontAntialiasedRenderingMode,
|
|
|
|
NSFontIntegerAdvancementsRenderingMode,
|
|
|
|
NSFontAntialiasedIntegerAdvancementsRenderingMode
|
|
|
|
} NSFontRenderingMode;
|
|
|
|
#endif
|
|
|
|
|
2010-02-20 16:30:27 +00:00
|
|
|
APPKIT_EXPORT const CGFloat *NSFontIdentityMatrix;
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
@interface NSFont : NSObject <NSCoding, NSCopying>
|
|
|
|
{
|
|
|
|
NSString *fontName;
|
2010-02-20 16:30:27 +00:00
|
|
|
CGFloat matrix[6];
|
2012-12-31 17:34:13 +00:00
|
|
|
BOOL matrixExplicitlySet; // unused
|
2003-07-31 23:52:10 +00:00
|
|
|
BOOL screenFont;
|
|
|
|
|
|
|
|
id fontInfo;
|
|
|
|
void *_fontRef;
|
|
|
|
|
|
|
|
/*
|
|
|
|
If this font was created with a specific "role", like user font, or
|
|
|
|
message font, and not a specific postscript name, the role will be
|
|
|
|
stored here.
|
|
|
|
*/
|
|
|
|
int role;
|
2004-02-10 20:52:11 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
For printer fonts, this is a cache of the corresponding screen font.
|
|
|
|
It is initialized to placeHolder, and is created for real on demand in
|
|
|
|
-screenFont (and retained). For screen fonts, it's nil.
|
|
|
|
*/
|
|
|
|
NSFont *cachedScreenFont;
|
2005-04-30 16:11:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
In the GNUstep implementation, fonts may encapsulate some rendering state
|
|
|
|
relating to view flipped state, therefore we generate a separate font for
|
|
|
|
this case. We don't create it by default, unless -set is called in a
|
|
|
|
flipped context.
|
|
|
|
*/
|
|
|
|
NSFont *cachedFlippedFont;
|
2003-07-31 23:52:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
// Creating a Font Object
|
|
|
|
//
|
2010-02-20 16:30:27 +00:00
|
|
|
+ (NSFont*) boldSystemFontOfSize: (CGFloat)fontSize;
|
2003-07-31 23:52:10 +00:00
|
|
|
+ (NSFont*) fontWithName: (NSString*)aFontName
|
2010-02-20 16:30:27 +00:00
|
|
|
matrix: (const CGFloat*)fontMatrix;
|
2003-07-31 23:52:10 +00:00
|
|
|
+ (NSFont*) fontWithName: (NSString*)aFontName
|
2010-02-20 16:30:27 +00:00
|
|
|
size: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) systemFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) userFixedPitchFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) userFontOfSize: (CGFloat)fontSize;
|
2003-07-31 23:52:10 +00:00
|
|
|
|
2006-11-06 13:58:37 +00:00
|
|
|
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
|
2010-02-20 16:30:27 +00:00
|
|
|
+ (NSFont*) titleBarFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) menuFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) messageFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) paletteFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) toolTipsFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) controlContentFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) labelFontOfSize: (CGFloat)fontSize;
|
|
|
|
+ (NSFont*) menuBarFontOfSize: (CGFloat)fontSize;
|
2007-08-08 11:05:19 +00:00
|
|
|
#endif
|
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
2009-07-26 21:38:35 +00:00
|
|
|
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor size: (CGFloat)size;
|
2007-08-08 11:05:19 +00:00
|
|
|
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor
|
2009-07-26 21:38:35 +00:00
|
|
|
textTransform: (NSAffineTransform*)transform;
|
|
|
|
// This method was a mistake in the 10.4 documentation
|
|
|
|
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor
|
|
|
|
size: (CGFloat)size
|
2007-08-08 11:05:19 +00:00
|
|
|
textTransform: (NSAffineTransform*)transform;
|
2005-03-07 13:25:29 +00:00
|
|
|
#endif
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
//
|
|
|
|
// Font Sizes
|
|
|
|
//
|
2006-11-06 13:58:37 +00:00
|
|
|
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
|
2010-02-20 16:30:27 +00:00
|
|
|
+ (CGFloat) labelFontSize;
|
|
|
|
+ (CGFloat) smallSystemFontSize;
|
|
|
|
+ (CGFloat) systemFontSize;
|
|
|
|
+ (CGFloat) systemFontSizeForControlSize: (NSControlSize)controlSize;
|
2005-03-07 13:25:29 +00:00
|
|
|
#endif
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
//
|
|
|
|
// Preferred Fonts
|
|
|
|
//
|
|
|
|
+ (NSArray*) preferredFontNames;
|
|
|
|
+ (void) setPreferredFontNames: (NSArray*)fontNames;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Setting the Font
|
|
|
|
//
|
|
|
|
+ (void) setUserFixedPitchFont: (NSFont*)aFont;
|
|
|
|
+ (void) setUserFont: (NSFont*)aFont;
|
|
|
|
+ (void) useFont: (NSString*)aFontName;
|
|
|
|
- (void) set;
|
2007-08-08 11:05:19 +00:00
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
|
|
|
- (void) setInContext: (NSGraphicsContext*)context;
|
|
|
|
- (NSAffineTransform*) textTransform;
|
|
|
|
#endif
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
//
|
|
|
|
// Querying the Font
|
|
|
|
//
|
|
|
|
- (NSDictionary*) afmDictionary;
|
|
|
|
- (NSString*) afmFileContents;
|
|
|
|
- (NSRect) boundingRectForFont;
|
|
|
|
- (NSString*) displayName;
|
|
|
|
- (NSString*) familyName;
|
|
|
|
- (NSString*) fontName;
|
|
|
|
- (NSString*) encodingScheme;
|
|
|
|
- (BOOL) isFixedPitch;
|
|
|
|
- (BOOL) isBaseFont;
|
2010-02-20 16:30:27 +00:00
|
|
|
- (const CGFloat*) matrix;
|
|
|
|
- (CGFloat) pointSize;
|
2003-07-31 23:52:10 +00:00
|
|
|
- (NSFont*) printerFont;
|
|
|
|
- (NSFont*) screenFont;
|
2010-02-20 16:30:27 +00:00
|
|
|
- (CGFloat) ascender;
|
|
|
|
- (CGFloat) descender;
|
|
|
|
- (CGFloat) capHeight;
|
|
|
|
- (CGFloat) italicAngle;
|
2003-07-31 23:52:10 +00:00
|
|
|
- (NSSize) maximumAdvancement;
|
|
|
|
- (NSSize) minimumAdvancement;
|
2010-02-20 16:30:27 +00:00
|
|
|
- (CGFloat) underlinePosition;
|
|
|
|
- (CGFloat) underlineThickness;
|
|
|
|
- (CGFloat) xHeight;
|
|
|
|
- (CGFloat) widthOfString: (NSString*)string;
|
|
|
|
- (CGFloat) defaultLineHeightForFont;
|
2013-01-19 18:22:45 +00:00
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
|
|
|
- (CGFloat) leading;
|
|
|
|
|
|
|
|
#endif
|
2003-07-31 23:52:10 +00:00
|
|
|
|
2006-11-06 13:58:37 +00:00
|
|
|
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
|
2010-02-20 16:30:27 +00:00
|
|
|
- (NSUInteger) numberOfGlyphs;
|
2005-03-07 13:25:29 +00:00
|
|
|
- (NSCharacterSet*) coveredCharacterSet;
|
2007-08-08 11:05:19 +00:00
|
|
|
#endif
|
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
2005-03-07 13:25:29 +00:00
|
|
|
- (NSFontDescriptor*) fontDescriptor;
|
2007-08-08 11:05:19 +00:00
|
|
|
- (NSFontRenderingMode) renderingMode;
|
|
|
|
- (NSFont*) screenFontWithRenderingMode: (NSFontRenderingMode)mode;
|
2005-03-07 13:25:29 +00:00
|
|
|
#endif
|
|
|
|
|
2003-07-31 23:52:10 +00:00
|
|
|
//
|
|
|
|
// Manipulating Glyphs
|
|
|
|
//
|
|
|
|
- (NSSize) advancementForGlyph: (NSGlyph)aGlyph;
|
|
|
|
- (NSRect) boundingRectForGlyph: (NSGlyph)aGlyph;
|
|
|
|
- (BOOL) glyphIsEncoded: (NSGlyph)aGlyph;
|
|
|
|
- (NSMultibyteGlyphPacking) glyphPacking;
|
|
|
|
- (NSGlyph) glyphWithName: (NSString*)glyphName;
|
|
|
|
- (NSPoint) positionOfGlyph: (NSGlyph)curGlyph
|
|
|
|
precededByGlyph: (NSGlyph)prevGlyph
|
|
|
|
isNominal: (BOOL*)nominal;
|
|
|
|
- (NSPoint) positionOfGlyph: (NSGlyph)aGlyph
|
|
|
|
forCharacter: (unichar)aChar
|
|
|
|
struckOverRect: (NSRect)aRect;
|
|
|
|
- (NSPoint) positionOfGlyph: (NSGlyph)aGlyph
|
|
|
|
struckOverGlyph: (NSGlyph)baseGlyph
|
|
|
|
metricsExist: (BOOL*)flag;
|
|
|
|
- (NSPoint) positionOfGlyph: (NSGlyph)aGlyph
|
|
|
|
struckOverRect: (NSRect)aRect
|
|
|
|
metricsExist: (BOOL*)flag;
|
|
|
|
- (NSPoint) positionOfGlyph: (NSGlyph)aGlyph
|
|
|
|
withRelation: (NSGlyphRelation)relation
|
|
|
|
toBaseGlyph: (NSGlyph)baseGlyph
|
|
|
|
totalAdvancement: (NSSize*)offset
|
|
|
|
metricsExist: (BOOL*)flag;
|
|
|
|
- (int) positionsForCompositeSequence: (NSGlyph*)glyphs
|
|
|
|
numberOfGlyphs: (int)numGlyphs
|
|
|
|
pointArray: (NSPoint*)points;
|
2013-01-19 18:22:45 +00:00
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
|
|
|
- (void) getAdvancements: (NSSizeArray)advancements
|
|
|
|
forGlyphs: (const NSGlyph*)glyphs
|
|
|
|
count: (NSUInteger)count;
|
|
|
|
- (void) getAdvancements: (NSSizeArray)advancements
|
|
|
|
forPackedGlyphs: (const void*)glyphs
|
|
|
|
count: (NSUInteger)count;
|
|
|
|
- (void) getBoundingRects: (NSRectArray)bounds
|
|
|
|
forGlyphs: (const NSGlyph*)glyphs
|
|
|
|
count: (NSUInteger)count;
|
|
|
|
#endif
|
2003-07-31 23:52:10 +00:00
|
|
|
|
|
|
|
- (NSStringEncoding) mostCompatibleStringEncoding;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
2006-11-06 13:58:37 +00:00
|
|
|
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
|
2003-07-31 23:52:10 +00:00
|
|
|
@class GSFontInfo;
|
|
|
|
|
|
|
|
@interface NSFont (GNUstep)
|
|
|
|
- (GSFontInfo*) fontInfo;
|
|
|
|
- (void *) fontRef;
|
|
|
|
@end
|
|
|
|
|
|
|
|
int NSConvertGlyphsToPackedGlyphs(NSGlyph*glBuf,
|
|
|
|
int count,
|
|
|
|
NSMultibyteGlyphPacking packing,
|
|
|
|
char*packedGlyphs);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
APPKIT_EXPORT NSString *NSAFMAscender;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMCapHeight;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMCharacterSet;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMDescender;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMEncodingScheme;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMFamilyName;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMFontName;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMFormatVersion;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMFullName;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMItalicAngle;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMMappingScheme;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMNotice;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMUnderlinePosition;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMUnderlineThickness;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMVersion;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMWeight;
|
|
|
|
APPKIT_EXPORT NSString *NSAFMXHeight;
|
|
|
|
|
|
|
|
#endif // _GNUstep_H_NSFont
|