1b2cc3454SAxel Dörfler/*
29b6b158bSdsizzle * Copyright 2005-2016, Haiku, Inc. All rights reserved.
389208c77SStephan Aßmus * Distributed under the terms of the MIT License.
4b2cc3454SAxel Dörfler */
563db78caSbeveloper#ifndef _FONT_H_
663db78caSbeveloper#define _FONT_H_
704b68691SDarkWyrm
8b2cc3454SAxel Dörfler
904b68691SDarkWyrm#include <SupportDefs.h>
1004b68691SDarkWyrm#include <InterfaceDefs.h>
1104b68691SDarkWyrm
1275dde2cfSJohn Scipione
13f6e4cbb9SAxel Dörflerclass BPoint;
14f6e4cbb9SAxel Dörfler
1504b68691SDarkWyrm
1604b68691SDarkWyrm#define B_FONT_FAMILY_LENGTH 63
1704b68691SDarkWyrm#define B_FONT_STYLE_LENGTH 63
18b2cc3454SAxel Dörflertypedef char font_family[B_FONT_FAMILY_LENGTH + 1];
1904b68691SDarkWyrmtypedef char font_style[B_FONT_STYLE_LENGTH + 1];
2004b68691SDarkWyrm
2197e88fa4SStephan Aßmus
22b2cc3454SAxel Dörfler// font spacing
2304b68691SDarkWyrmenum {
24b2cc3454SAxel Dörfler	B_CHAR_SPACING			= 0,
25b2cc3454SAxel Dörfler	B_STRING_SPACING		= 1,
26b2cc3454SAxel Dörfler	B_BITMAP_SPACING		= 2,
27b2cc3454SAxel Dörfler	B_FIXED_SPACING			= 3
2804b68691SDarkWyrm};
2904b68691SDarkWyrm
3097e88fa4SStephan Aßmus
3104b68691SDarkWyrmenum font_direction {
32b2cc3454SAxel Dörfler	B_FONT_LEFT_TO_RIGHT	= 0,
33b2cc3454SAxel Dörfler	B_FONT_RIGHT_TO_LEFT	= 1
3404b68691SDarkWyrm};
3504b68691SDarkWyrm
3697e88fa4SStephan Aßmus
37b2cc3454SAxel Dörfler// font flags
3804b68691SDarkWyrmenum {
3904b68691SDarkWyrm	B_DISABLE_ANTIALIASING	= 0x00000001,
4004b68691SDarkWyrm	B_FORCE_ANTIALIASING	= 0x00000002
4104b68691SDarkWyrm};
4204b68691SDarkWyrm
4397e88fa4SStephan Aßmus
44b2cc3454SAxel Dörfler// truncation modes
4504b68691SDarkWyrmenum {
4695fdee0bSAxel Dörfler	B_NO_TRUNCATION			= ~0U,
47b2cc3454SAxel Dörfler	B_TRUNCATE_END			= 0,
48b2cc3454SAxel Dörfler	B_TRUNCATE_BEGINNING	= 1,
49b2cc3454SAxel Dörfler	B_TRUNCATE_MIDDLE		= 2,
50b2cc3454SAxel Dörfler	B_TRUNCATE_SMART		= 3
5104b68691SDarkWyrm};
5204b68691SDarkWyrm
5397e88fa4SStephan Aßmus
54b2cc3454SAxel Dörfler// font encodings
5504b68691SDarkWyrmenum {
56b2cc3454SAxel Dörfler	B_UNICODE_UTF8			= 0,
57b2cc3454SAxel Dörfler	B_ISO_8859_1			= 1,
58b2cc3454SAxel Dörfler	B_ISO_8859_2			= 2,
59b2cc3454SAxel Dörfler	B_ISO_8859_3			= 3,
60b2cc3454SAxel Dörfler	B_ISO_8859_4			= 4,
61b2cc3454SAxel Dörfler	B_ISO_8859_5			= 5,
62b2cc3454SAxel Dörfler	B_ISO_8859_6			= 6,
63b2cc3454SAxel Dörfler	B_ISO_8859_7			= 7,
64b2cc3454SAxel Dörfler	B_ISO_8859_8			= 8,
65b2cc3454SAxel Dörfler	B_ISO_8859_9			= 9,
66b2cc3454SAxel Dörfler	B_ISO_8859_10			= 10,
67b2cc3454SAxel Dörfler	B_MACINTOSH_ROMAN		= 11
6804b68691SDarkWyrm};
6904b68691SDarkWyrm
7097e88fa4SStephan Aßmus
71b2cc3454SAxel Dörfler// flags for get_font_family() and get_font_style()
7204b68691SDarkWyrmenum {
73b2cc3454SAxel Dörfler	B_HAS_TUNED_FONT		= 0x0001,
74b2cc3454SAxel Dörfler	B_IS_FIXED				= 0x0002
7504b68691SDarkWyrm};
7604b68691SDarkWyrm
7797e88fa4SStephan Aßmus
78b2cc3454SAxel Dörfler// font face flags
7904b68691SDarkWyrmenum {
80b2cc3454SAxel Dörfler	B_ITALIC_FACE			= 0x0001,
81b2cc3454SAxel Dörfler	B_UNDERSCORE_FACE		= 0x0002,
82b2cc3454SAxel Dörfler	B_NEGATIVE_FACE			= 0x0004,
83b2cc3454SAxel Dörfler	B_OUTLINED_FACE			= 0x0008,
84b2cc3454SAxel Dörfler	B_STRIKEOUT_FACE		= 0x0010,
85b2cc3454SAxel Dörfler	B_BOLD_FACE				= 0x0020,
865b30a26bSStephan Aßmus	B_REGULAR_FACE			= 0x0040,
875b30a26bSStephan Aßmus	// new in Haiku:
885b30a26bSStephan Aßmus	B_CONDENSED_FACE		= 0x0080,
895b30a26bSStephan Aßmus	B_LIGHT_FACE			= 0x0100,
905b30a26bSStephan Aßmus	B_HEAVY_FACE			= 0x0200,
9104b68691SDarkWyrm};
9204b68691SDarkWyrm
9397e88fa4SStephan Aßmus
9404b68691SDarkWyrmenum font_metric_mode {
95b2cc3454SAxel Dörfler	B_SCREEN_METRIC			= 0,
96b2cc3454SAxel Dörfler	B_PRINTING_METRIC		= 1
9704b68691SDarkWyrm};
9804b68691SDarkWyrm
9997e88fa4SStephan Aßmus
10004b68691SDarkWyrmenum font_file_format {
101b2cc3454SAxel Dörfler	B_TRUETYPE_WINDOWS		= 0,
102b2cc3454SAxel Dörfler	B_POSTSCRIPT_TYPE1_WINDOWS = 1
10304b68691SDarkWyrm};
10404b68691SDarkWyrm
10597e88fa4SStephan Aßmus
10604b68691SDarkWyrmclass unicode_block {
10797e88fa4SStephan Aßmuspublic:
10897e88fa4SStephan Aßmus	inline						unicode_block();
10997e88fa4SStephan Aßmus	inline						unicode_block(uint64 block2, uint64 block1);
11097e88fa4SStephan Aßmus
11197e88fa4SStephan Aßmus	inline	bool				Includes(const unicode_block& block) const;
11297e88fa4SStephan Aßmus	inline	unicode_block		operator&(const unicode_block& block) const;
11397e88fa4SStephan Aßmus	inline	unicode_block		operator|(const unicode_block& block) const;
11497e88fa4SStephan Aßmus	inline	unicode_block&		operator=(const unicode_block& block);
11597e88fa4SStephan Aßmus	inline	bool				operator==(const unicode_block& block) const;
11697e88fa4SStephan Aßmus	inline	bool				operator!=(const unicode_block& block) const;
11797e88fa4SStephan Aßmus
11897e88fa4SStephan Aßmusprivate:
11997e88fa4SStephan Aßmus	uint64					fData[2];
12004b68691SDarkWyrm};
12104b68691SDarkWyrm
12297e88fa4SStephan Aßmus
1239b6b158bSdsizzlestruct unicode_block_range {
1249b6b158bSdsizzle	uint32					start;
1259b6b158bSdsizzle	uint32					end;
1269b6b158bSdsizzle	const unicode_block&	block;
1279b6b158bSdsizzle
1289b6b158bSdsizzle	uint32 Count() const { return end + 1 - start; }
1299b6b158bSdsizzle};
1309b6b158bSdsizzle
1319b6b158bSdsizzle
13204b68691SDarkWyrmstruct edge_info {
13304b68691SDarkWyrm	float	left;
13404b68691SDarkWyrm	float	right;
13504b68691SDarkWyrm};
13604b68691SDarkWyrm
13797e88fa4SStephan Aßmus
13804b68691SDarkWyrmstruct font_height {
13904b68691SDarkWyrm	float	ascent;
14004b68691SDarkWyrm	float	descent;
14104b68691SDarkWyrm	float	leading;
14204b68691SDarkWyrm};
14304b68691SDarkWyrm
14497e88fa4SStephan Aßmus
14504b68691SDarkWyrmstruct escapement_delta {
14604b68691SDarkWyrm	float	nonspace;
14704b68691SDarkWyrm	float	space;
14804b68691SDarkWyrm};
14904b68691SDarkWyrm
15097e88fa4SStephan Aßmus
15104b68691SDarkWyrmstruct font_cache_info {
15275dde2cfSJohn Scipione	int32    sheared_font_penalty;
15375dde2cfSJohn Scipione	int32    rotated_font_penalty;
15404b68691SDarkWyrm	float    oversize_threshold;
15504b68691SDarkWyrm	int32    oversize_penalty;
15604b68691SDarkWyrm	int32    cache_size;
15704b68691SDarkWyrm	float    spacing_size_threshold;
15804b68691SDarkWyrm};
15904b68691SDarkWyrm
16097e88fa4SStephan Aßmus
16104b68691SDarkWyrmstruct tuned_font_info {
16204b68691SDarkWyrm	float    size;
16395fdee0bSAxel Dörfler	float    shear;
16404b68691SDarkWyrm	float    rotation;
16504b68691SDarkWyrm	uint32   flags;
16604b68691SDarkWyrm	uint16   face;
16704b68691SDarkWyrm};
16804b68691SDarkWyrm
16997e88fa4SStephan Aßmus
17004b68691SDarkWyrmclass BShape;
17104b68691SDarkWyrmclass BString;
17204b68691SDarkWyrmclass BFontPrivate;
17304b68691SDarkWyrm
174b2cc3454SAxel Dörfler
17504b68691SDarkWyrmclass BFont {
17697e88fa4SStephan Aßmuspublic:
17797e88fa4SStephan Aßmus								BFont();
17897e88fa4SStephan Aßmus								BFont(const BFont& font);
17997e88fa4SStephan Aßmus								BFont(const BFont* font);
18097e88fa4SStephan Aßmus
18197e88fa4SStephan Aßmus			status_t			SetFamilyAndStyle(const font_family family,
18297e88fa4SStephan Aßmus									const font_style style);
18397e88fa4SStephan Aßmus			void				SetFamilyAndStyle(uint32 code);
18497e88fa4SStephan Aßmus			status_t			SetFamilyAndFace(const font_family family,
18597e88fa4SStephan Aßmus									uint16 face);
18697e88fa4SStephan Aßmus
18797e88fa4SStephan Aßmus			void				SetSize(float size);
18897e88fa4SStephan Aßmus			void				SetShear(float shear);
18997e88fa4SStephan Aßmus			void				SetRotation(float rotation);
19097e88fa4SStephan Aßmus			void				SetFalseBoldWidth(float width);
19197e88fa4SStephan Aßmus			void				SetSpacing(uint8 spacing);
19297e88fa4SStephan Aßmus			void				SetEncoding(uint8 encoding);
19397e88fa4SStephan Aßmus			void				SetFace(uint16 face);
19497e88fa4SStephan Aßmus			void				SetFlags(uint32 flags);
19597e88fa4SStephan Aßmus
19697e88fa4SStephan Aßmus			void				GetFamilyAndStyle(font_family* family,
19797e88fa4SStephan Aßmus									font_style* style) const;
19897e88fa4SStephan Aßmus			uint32				FamilyAndStyle() const;
19997e88fa4SStephan Aßmus			float				Size() const;
20097e88fa4SStephan Aßmus			float				Shear() const;
20197e88fa4SStephan Aßmus			float				Rotation() const;
20297e88fa4SStephan Aßmus			float				FalseBoldWidth() const;
20397e88fa4SStephan Aßmus			uint8				Spacing() const;
20497e88fa4SStephan Aßmus			uint8				Encoding() const;
20597e88fa4SStephan Aßmus			uint16				Face() const;
20697e88fa4SStephan Aßmus			uint32				Flags() const;
20797e88fa4SStephan Aßmus
20897e88fa4SStephan Aßmus			font_direction		Direction() const;
20997e88fa4SStephan Aßmus			bool				IsFixed() const;
21097e88fa4SStephan Aßmus			bool				IsFullAndHalfFixed() const;
21197e88fa4SStephan Aßmus			BRect				BoundingBox() const;
21297e88fa4SStephan Aßmus			unicode_block		Blocks() const;
2139b6b158bSdsizzle			bool				IncludesBlock(uint32 start, uint32 end) const;
21497e88fa4SStephan Aßmus			font_file_format	FileFormat() const;
21597e88fa4SStephan Aßmus
21697e88fa4SStephan Aßmus			int32				CountTuned() const;
21797e88fa4SStephan Aßmus			void				GetTunedInfo(int32 index,
21897e88fa4SStephan Aßmus									tuned_font_info* info) const;
21997e88fa4SStephan Aßmus
22097e88fa4SStephan Aßmus			void				TruncateString(BString* inOut, uint32 mode,
22197e88fa4SStephan Aßmus									float width) const;
22297e88fa4SStephan Aßmus			void            	GetTruncatedStrings(const char* stringArray[],
22397e88fa4SStephan Aßmus									int32 numStrings, uint32 mode, float width,
22497e88fa4SStephan Aßmus									BString resultArray[]) const;
22597e88fa4SStephan Aßmus			void            	GetTruncatedStrings(const char* stringArray[],
22697e88fa4SStephan Aßmus									int32 numStrings, uint32 mode,
22797e88fa4SStephan Aßmus									float width, char* resultArray[]) const;
22897e88fa4SStephan Aßmus
22997e88fa4SStephan Aßmus			float				StringWidth(const char* string) const;
23097e88fa4SStephan Aßmus			float				StringWidth(const char* string,
23197e88fa4SStephan Aßmus									int32 length) const;
23297e88fa4SStephan Aßmus			void				GetStringWidths(const char* stringArray[],
23397e88fa4SStephan Aßmus									const int32 lengthArray[],
23497e88fa4SStephan Aßmus									int32 numStrings,
23597e88fa4SStephan Aßmus									float widthArray[]) const;
23697e88fa4SStephan Aßmus
23797e88fa4SStephan Aßmus			void				GetEscapements(const char charArray[],
23897e88fa4SStephan Aßmus									int32 numChars,
23997e88fa4SStephan Aßmus									float escapementArray[]) const;
24097e88fa4SStephan Aßmus			void				GetEscapements(const char charArray[],
24197e88fa4SStephan Aßmus									int32 numChars, escapement_delta* delta,
24297e88fa4SStephan Aßmus									float escapementArray[]) const;
24397e88fa4SStephan Aßmus			void				GetEscapements(const char charArray[],
24497e88fa4SStephan Aßmus									int32 numChars, escapement_delta* delta,
24597e88fa4SStephan Aßmus									BPoint escapementArray[]) const;
24697e88fa4SStephan Aßmus			void				GetEscapements(const char charArray[],
24797e88fa4SStephan Aßmus									int32 numChars, escapement_delta* delta,
24897e88fa4SStephan Aßmus									BPoint escapementArray[],
24997e88fa4SStephan Aßmus									BPoint offsetArray[]) const;
25097e88fa4SStephan Aßmus
25197e88fa4SStephan Aßmus			void				GetEdges(const char charArray[],
25297e88fa4SStephan Aßmus									int32 numBytes,
25397e88fa4SStephan Aßmus									edge_info edgeArray[]) const;
25497e88fa4SStephan Aßmus			void				GetHeight(font_height* height) const;
25597e88fa4SStephan Aßmus
25697e88fa4SStephan Aßmus			void				GetBoundingBoxesAsGlyphs(
25797e88fa4SStephan Aßmus									const char charArray[], int32 numChars,
25897e88fa4SStephan Aßmus									font_metric_mode mode,
25997e88fa4SStephan Aßmus									BRect boundingBoxArray[]) const;
26097e88fa4SStephan Aßmus			void				GetBoundingBoxesAsString(
26197e88fa4SStephan Aßmus									const char charArray[], int32 numChars,
26297e88fa4SStephan Aßmus									font_metric_mode mode,
26397e88fa4SStephan Aßmus									escapement_delta* delta,
26497e88fa4SStephan Aßmus									BRect boundingBoxArray[]) const;
26597e88fa4SStephan Aßmus			void				GetBoundingBoxesForStrings(
26697e88fa4SStephan Aßmus									const char* stringArray[],
26797e88fa4SStephan Aßmus									int32 numStrings, font_metric_mode mode,
26897e88fa4SStephan Aßmus									escapement_delta deltas[],
26997e88fa4SStephan Aßmus									BRect boundingBoxArray[]) const;
27097e88fa4SStephan Aßmus
27197e88fa4SStephan Aßmus			void				GetGlyphShapes(const char charArray[],
27297e88fa4SStephan Aßmus									int32 numChars,
27397e88fa4SStephan Aßmus									BShape* glyphShapeArray[]) const;
27497e88fa4SStephan Aßmus
27597e88fa4SStephan Aßmus			void				GetHasGlyphs(const char charArray[],
27697e88fa4SStephan Aßmus									int32 numChars,
27797e88fa4SStephan Aßmus									bool hasArray[]) const;
27897e88fa4SStephan Aßmus
27997e88fa4SStephan Aßmus			BFont&				operator=(const BFont& font);
28097e88fa4SStephan Aßmus			bool				operator==(const BFont& font) const;
28197e88fa4SStephan Aßmus			bool				operator!=(const BFont& font) const;
28297e88fa4SStephan Aßmus
28397e88fa4SStephan Aßmus			void				PrintToStream() const;
28497e88fa4SStephan Aßmus
28597e88fa4SStephan Aßmusprivate:
286b2cc3454SAxel Dörfler		friend void _init_global_fonts_();
287b2cc3454SAxel Dörfler
28897e88fa4SStephan Aßmus			void				_GetExtraFlags() const;
28995fdee0bSAxel Dörfler			void				_GetBoundingBoxes(const char charArray[],
29097e88fa4SStephan Aßmus									int32 numChars, font_metric_mode mode,
29197e88fa4SStephan Aßmus									bool string_escapement,
29297e88fa4SStephan Aßmus									escapement_delta* delta,
29397e88fa4SStephan Aßmus									BRect boundingBoxArray[],
29497e88fa4SStephan Aßmus									bool asString) const;
29597e88fa4SStephan Aßmus
29697e88fa4SStephan Aßmusprivate:
29797e88fa4SStephan Aßmus			uint16				fFamilyID;
29897e88fa4SStephan Aßmus			uint16				fStyleID;
29997e88fa4SStephan Aßmus			float				fSize;
30097e88fa4SStephan Aßmus			float				fShear;
30197e88fa4SStephan Aßmus			float				fRotation;
30297e88fa4SStephan Aßmus			float				fFalseBoldWidth;
30397e88fa4SStephan Aßmus			uint8				fSpacing;
30497e88fa4SStephan Aßmus			uint8				fEncoding;
30597e88fa4SStephan Aßmus			uint16				fFace;
30697e88fa4SStephan Aßmus			uint32				fFlags;
30797e88fa4SStephan Aßmus	mutable	font_height			fHeight;
30897e88fa4SStephan Aßmus	mutable	uint32				fExtraFlags;
30997e88fa4SStephan Aßmus
31097e88fa4SStephan Aßmus			uint32				_reserved[1];
31104b68691SDarkWyrm};
31204b68691SDarkWyrm
313b2cc3454SAxel Dörfler
31497e88fa4SStephan Aßmus// #pragma mark - BFont related declarations
31504b68691SDarkWyrm
31697e88fa4SStephan Aßmusextern const BFont* be_plain_font;
31797e88fa4SStephan Aßmusextern const BFont* be_bold_font;
31897e88fa4SStephan Aßmusextern const BFont* be_fixed_font;
31904b68691SDarkWyrm
32004b68691SDarkWyrmint32 count_font_families(void);
32197e88fa4SStephan Aßmusstatus_t get_font_family(int32 index, font_family* name,
32297e88fa4SStephan Aßmus	uint32* flags = NULL);
32304b68691SDarkWyrm
32404b68691SDarkWyrmint32 count_font_styles(font_family name);
32597e88fa4SStephan Aßmusstatus_t get_font_style(font_family family, int32 index, font_style* name,
32697e88fa4SStephan Aßmus	uint32* flags = NULL);
32795fdee0bSAxel Dörflerstatus_t get_font_style(font_family family, int32 index, font_style* name,
32897e88fa4SStephan Aßmus	uint16* face, uint32* flags = NULL);
329b2cc3454SAxel Dörflerbool update_font_families(bool checkOnly);
33004b68691SDarkWyrm
33104b68691SDarkWyrm
33297e88fa4SStephan Aßmus
33397e88fa4SStephan Aßmus// #pragma mark - unicode_block inlines
33497e88fa4SStephan Aßmus
33504b68691SDarkWyrm
336b2cc3454SAxel Dörflerunicode_block::unicode_block()
337b2cc3454SAxel Dörfler{
338b2cc3454SAxel Dörfler	fData[0] = fData[1] = 0LL;
339b2cc3454SAxel Dörfler}
34004b68691SDarkWyrm
34197e88fa4SStephan Aßmus
342b2cc3454SAxel Dörflerunicode_block::unicode_block(uint64 block2, uint64 block1)
343b2cc3454SAxel Dörfler{
34404b68691SDarkWyrm	fData[0] = block1;
34504b68691SDarkWyrm	fData[1] = block2;
34604b68691SDarkWyrm}
34704b68691SDarkWyrm
34897e88fa4SStephan Aßmus
349b2cc3454SAxel Dörflerbool
35097e88fa4SStephan Aßmusunicode_block::Includes(const unicode_block& block) const
351b2cc3454SAxel Dörfler{
352b2cc3454SAxel Dörfler	return (fData[0] & block.fData[0]) == block.fData[0]
353b2cc3454SAxel Dörfler		&& (fData[1] & block.fData[1]) == block.fData[1];
35404b68691SDarkWyrm}
35504b68691SDarkWyrm
35697e88fa4SStephan Aßmus
357b2cc3454SAxel Dörflerunicode_block
35897e88fa4SStephan Aßmusunicode_block::operator&(const unicode_block& block) const
359b2cc3454SAxel Dörfler{
360b2cc3454SAxel Dörfler	unicode_block result;
361b2cc3454SAxel Dörfler	result.fData[0] = fData[0] & block.fData[0];
362b2cc3454SAxel Dörfler	result.fData[1] = fData[1] & block.fData[1];
363b2cc3454SAxel Dörfler
364b2cc3454SAxel Dörfler	return result;
36504b68691SDarkWyrm}
36697e88fa4SStephan Aßmus
36775dde2cfSJohn Scipione
368b2cc3454SAxel Dörflerunicode_block
36997e88fa4SStephan Aßmusunicode_block::operator|(const unicode_block& block) const
370b2cc3454SAxel Dörfler{
371b2cc3454SAxel Dörfler	unicode_block result;
372b2cc3454SAxel Dörfler	result.fData[0] = fData[0] | block.fData[0];
373b2cc3454SAxel Dörfler	result.fData[1] = fData[1] | block.fData[1];
374b2cc3454SAxel Dörfler
375b2cc3454SAxel Dörfler	return result;
37604b68691SDarkWyrm}
37797e88fa4SStephan Aßmus
37875dde2cfSJohn Scipione
37997e88fa4SStephan Aßmusunicode_block&
38097e88fa4SStephan Aßmusunicode_block::operator=(const unicode_block& block)
381b2cc3454SAxel Dörfler{
38204b68691SDarkWyrm	fData[0] = block.fData[0];
38304b68691SDarkWyrm	fData[1] = block.fData[1];
3849b6b158bSdsizzle
38504b68691SDarkWyrm	return *this;
38604b68691SDarkWyrm}
38704b68691SDarkWyrm
38897e88fa4SStephan Aßmus
389b2cc3454SAxel Dörflerbool
39097e88fa4SStephan Aßmusunicode_block::operator==(const unicode_block& block) const
391b2cc3454SAxel Dörfler{
392b2cc3454SAxel Dörfler	return fData[0] == block.fData[0] && fData[1] == block.fData[1];
39304b68691SDarkWyrm}
39404b68691SDarkWyrm
39597e88fa4SStephan Aßmus
396b2cc3454SAxel Dörflerbool
39797e88fa4SStephan Aßmusunicode_block::operator!=(const unicode_block& block) const
398b2cc3454SAxel Dörfler{
399b2cc3454SAxel Dörfler	return fData[0] != block.fData[0] || fData[1] != block.fData[1];
40004b68691SDarkWyrm}
40104b68691SDarkWyrm
40275dde2cfSJohn Scipione
40397e88fa4SStephan Aßmus#endif // _FONT_H_
404