Kaydet (Commit) ee9fd887 authored tarafından Khaled Hosny's avatar Khaled Hosny

Get the new Core Text code to compile

Change-Id: I592158bd60afcbe756c6f0e11aa69a44768a0985
üst ea8422d4
...@@ -344,10 +344,9 @@ vcl_quartz_code= \ ...@@ -344,10 +344,9 @@ vcl_quartz_code= \
vcl/quartz/utils \ vcl/quartz/utils \
vcl_coretext_code= \ vcl_coretext_code= \
vcl/coretext/salcoretextfontutils \ vcl/coretext/ctfonts \
vcl/coretext/salcoretextlayout \ vcl/coretext/ctlayout \
vcl/coretext/salcoretextstyle \ vcl/coretext/salgdi2 \
vcl/coretext/salgdi \
# GUIBASE specific stuff # GUIBASE specific stuff
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
* *
*************************************************************/ *************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove #include <boost/unordered_map.hpp>
#include "precompiled_vcl.hxx"
#include "impfont.hxx" #include "impfont.hxx"
#include "outfont.hxx" #include "outfont.hxx"
...@@ -29,6 +28,7 @@ ...@@ -29,6 +28,7 @@
#include "aqua/salinst.h" #include "aqua/salinst.h"
#include "aqua/saldata.hxx" #include "aqua/saldata.hxx"
#include "coretext/salgdi2.h" #include "coretext/salgdi2.h"
#include "quartz/utils.h"
#include "ctfonts.hxx" #include "ctfonts.hxx"
#include "basegfx/polygon/b2dpolygon.hxx" #include "basegfx/polygon/b2dpolygon.hxx"
...@@ -47,10 +47,10 @@ class CTFontData ...@@ -47,10 +47,10 @@ class CTFontData
public: public:
explicit CTFontData( const ImplDevFontAttributes&, sal_IntPtr nFontId ); explicit CTFontData( const ImplDevFontAttributes&, sal_IntPtr nFontId );
virtual ~CTFontData( void ); virtual ~CTFontData( void );
virtual ImplFontData* Clone( void ) const; virtual PhysicalFontFace* Clone( void ) const;
virtual ImplMacTextStyle* CreateMacTextStyle( const ImplFontSelectData& ) const; virtual ImplMacTextStyle* CreateMacTextStyle( const FontSelectPattern& ) const;
virtual ImplFontEntry* CreateFontInstance( /*const*/ ImplFontSelectData& ) const; virtual ImplFontEntry* CreateFontInstance( /*const*/ FontSelectPattern& ) const;
virtual int GetFontTable( const char pTagName[5], unsigned char* ) const; virtual int GetFontTable( const char pTagName[5], unsigned char* ) const;
}; };
...@@ -73,18 +73,18 @@ private: ...@@ -73,18 +73,18 @@ private:
CTFontCollectionRef mpCTFontCollection; CTFontCollectionRef mpCTFontCollection;
CFArrayRef mpCTFontArray; CFArrayRef mpCTFontArray;
typedef std::hash_map<sal_IntPtr,CTFontData*> CTFontContainer; typedef boost::unordered_map<sal_IntPtr,CTFontData*> CTFontContainer;
CTFontContainer maFontContainer; CTFontContainer maFontContainer;
}; };
// ======================================================================= // =======================================================================
CTTextStyle::CTTextStyle( const ImplFontSelectData& rFSD ) CTTextStyle::CTTextStyle( const FontSelectPattern& rFSD )
: ImplMacTextStyle( rFSD ) : ImplMacTextStyle( rFSD )
, mpStyleDict( NULL ) , mpStyleDict( NULL )
{ {
mpFontData = (CTFontData*)rFSD.mpFontData; mpFontData = (CTFontData*)rFSD.mpFontData;
const ImplFontSelectData* const pReqFont = &rFSD; const FontSelectPattern* const pReqFont = &rFSD;
double fScaledFontHeight = pReqFont->mfExactHeight; double fScaledFontHeight = pReqFont->mfExactHeight;
#if 0 // TODO: does CoreText need font size limiting??? #if 0 // TODO: does CoreText need font size limiting???
...@@ -264,13 +264,8 @@ bool CTTextStyle::GetGlyphOutline( sal_GlyphId nGlyphId, basegfx::B2DPolyPolygon ...@@ -264,13 +264,8 @@ bool CTTextStyle::GetGlyphOutline( sal_GlyphId nGlyphId, basegfx::B2DPolyPolygon
void CTTextStyle::SetTextColor( const RGBAColor& rColor ) void CTTextStyle::SetTextColor( const RGBAColor& rColor )
{ {
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
CGColorRef pCGColor = CGColorCreateGenericRGB( rColor.GetRed(), CGColorRef pCGColor = CGColorCreateGenericRGB( rColor.GetRed(),
rColor.GetGreen(), rColor.GetBlue(), rColor.GetAlpha() ); rColor.GetGreen(), rColor.GetBlue(), rColor.GetAlpha() );
#else // for builds on OSX 10.4 SDK
const CGColorSpaceRef pCGColorSpace = GetSalData()->mxRGBSpace;
CGColorRef pCGColor = CGColorCreate( pCGColorSpace, rColor.AsArray() );
#endif
CFDictionarySetValue( mpStyleDict, kCTForegroundColorAttributeName, pCGColor ); CFDictionarySetValue( mpStyleDict, kCTForegroundColorAttributeName, pCGColor );
CFRelease( pCGColor); CFRelease( pCGColor);
} }
...@@ -290,21 +285,21 @@ CTFontData::~CTFontData( void ) ...@@ -290,21 +285,21 @@ CTFontData::~CTFontData( void )
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
ImplFontData* CTFontData::Clone( void ) const PhysicalFontFace* CTFontData::Clone( void ) const
{ {
return new CTFontData( *this); return new CTFontData( *this);
} }
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
ImplMacTextStyle* CTFontData::CreateMacTextStyle( const ImplFontSelectData& rFSD ) const ImplMacTextStyle* CTFontData::CreateMacTextStyle( const FontSelectPattern& rFSD ) const
{ {
return new CTTextStyle( rFSD); return new CTTextStyle( rFSD);
} }
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
ImplFontEntry* CTFontData::CreateFontInstance( /*const*/ ImplFontSelectData& rFSD ) const ImplFontEntry* CTFontData::CreateFontInstance( /*const*/ FontSelectPattern& rFSD ) const
{ {
return new ImplFontEntry( rFSD); return new ImplFontEntry( rFSD);
} }
...@@ -352,12 +347,12 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -352,12 +347,12 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
rDFA.mnQuality = 0; rDFA.mnQuality = 0;
// reset the font attributes // reset the font attributes
rDFA.meFamily = FAMILY_DONTKNOW; rDFA.SetFamilyType( FAMILY_DONTKNOW );
rDFA.mePitch = PITCH_VARIABLE; rDFA.SetPitch( PITCH_VARIABLE );
rDFA.meWidthType = WIDTH_NORMAL; rDFA.SetWidthType( WIDTH_NORMAL );
rDFA.meWeight = WEIGHT_NORMAL; rDFA.SetWeight( WEIGHT_NORMAL );
rDFA.meItalic = ITALIC_NONE; rDFA.SetItalic( ITALIC_NONE );
rDFA.mbSymbolFlag = false; rDFA.SetSymbolFlag( false );
// all scalable fonts on this platform are subsettable // all scalable fonts on this platform are subsettable
rDFA.mbEmbeddable = false; rDFA.mbEmbeddable = false;
...@@ -366,10 +361,10 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -366,10 +361,10 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
// get font name // get font name
// TODO: use kCTFontDisplayNameAttribute instead??? // TODO: use kCTFontDisplayNameAttribute instead???
CFStringRef pFamilyName = (CFStringRef)CTFontDescriptorCopyAttribute( pFD, kCTFontFamilyNameAttribute ); CFStringRef pFamilyName = (CFStringRef)CTFontDescriptorCopyAttribute( pFD, kCTFontFamilyNameAttribute );
rDFA.maName = GetOUString( pFamilyName ); rDFA.SetFamilyName( GetOUString( pFamilyName ) );
// get font style // get font style
CFStringRef pStyleName = (CFStringRef)CTFontDescriptorCopyAttribute( pFD, kCTFontStyleNameAttribute ); CFStringRef pStyleName = (CFStringRef)CTFontDescriptorCopyAttribute( pFD, kCTFontStyleNameAttribute );
rDFA.maStyleName = GetOUString( pStyleName ); rDFA.SetStyleName( GetOUString( pStyleName ) );
// get font-enabled status // get font-enabled status
int bFontEnabled = FALSE; int bFontEnabled = FALSE;
...@@ -385,7 +380,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -385,7 +380,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
CFNumberRef pSymbolNum = NULL; CFNumberRef pSymbolNum = NULL;
if( CFDictionaryGetValueIfPresent( pAttrDict, kCTFontSymbolicTrait, (const void**)&pSymbolNum ) ) { if( CFDictionaryGetValueIfPresent( pAttrDict, kCTFontSymbolicTrait, (const void**)&pSymbolNum ) ) {
CFNumberGetValue( pSymbolNum, kCFNumberSInt64Type, &nSymbolTrait ); CFNumberGetValue( pSymbolNum, kCFNumberSInt64Type, &nSymbolTrait );
rDFA.mbSymbolFlag = ((nSymbolTrait & kCTFontClassMaskTrait) == kCTFontSymbolicClass); rDFA.SetSymbolFlag( ((nSymbolTrait & kCTFontClassMaskTrait) == kCTFontSymbolicClass) );
} }
// get the font weight // get the font weight
...@@ -402,14 +397,14 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -402,14 +397,14 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
if( nInt < WEIGHT_THIN ) if( nInt < WEIGHT_THIN )
nInt = WEIGHT_THIN; nInt = WEIGHT_THIN;
} }
rDFA.meWeight = (FontWeight)nInt; rDFA.SetWeight( (FontWeight)nInt );
// get the font slant // get the font slant
double fSlant = 0; double fSlant = 0;
CFNumberRef pSlantNum = (CFNumberRef)CFDictionaryGetValue( pAttrDict, kCTFontSlantTrait ); CFNumberRef pSlantNum = (CFNumberRef)CFDictionaryGetValue( pAttrDict, kCTFontSlantTrait );
CFNumberGetValue( pSlantNum, kCFNumberDoubleType, &fSlant ); CFNumberGetValue( pSlantNum, kCFNumberDoubleType, &fSlant );
if( fSlant >= 0.035 ) if( fSlant >= 0.035 )
rDFA.meItalic = ITALIC_NORMAL; rDFA.SetItalic( ITALIC_NORMAL );
// get width trait // get width trait
double fWidth = 0; double fWidth = 0;
...@@ -425,7 +420,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -425,7 +420,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
if( nInt < WIDTH_ULTRA_CONDENSED ) if( nInt < WIDTH_ULTRA_CONDENSED )
nInt = WIDTH_ULTRA_CONDENSED; nInt = WIDTH_ULTRA_CONDENSED;
} }
rDFA.meWidthType = (FontWidth)nInt; rDFA.SetWidthType( (FontWidth)nInt );
// release the attribute dict that we had copied // release the attribute dict that we had copied
CFRelease( pAttrDict ); CFRelease( pAttrDict );
...@@ -433,44 +428,6 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext ) ...@@ -433,44 +428,6 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
// TODO? also use the HEAD table if available to get more attributes // TODO? also use the HEAD table if available to get more attributes
// CFDataRef CTFontCopyTable( CTFontRef, kCTFontTableHead, /*kCTFontTableOptionNoOptions*/kCTFontTableOptionExcludeSynthetic ); // CFDataRef CTFontCopyTable( CTFontRef, kCTFontTableHead, /*kCTFontTableOptionNoOptions*/kCTFontTableOptionExcludeSynthetic );
#if (OSL_DEBUG_LEVEL >= 1)
// update font attributes using the font's postscript name
ImplDevFontAttributes rDFA2;
CTFontRef pFont = CTFontCreateWithFontDescriptor( pFD, 0.0, NULL );
CFStringRef pPSName = CTFontCopyPostScriptName( pFont );
const String aPSName = GetOUString( pPSName );
rDFA2.mbSymbolFlag = false;
rDFA2.mePitch = PITCH_VARIABLE;
rDFA2.meWidthType = WIDTH_NORMAL;
rDFA2.meWeight = WEIGHT_NORMAL;
rDFA2.meItalic = ITALIC_NONE;
UpdateAttributesFromPSName( aPSName, rDFA2 );
CFRelease( pPSName );
CFRelease( pFont );
// show the font details and compare the CTFontDescriptor vs. PSName traits
char cMatch = (rDFA.mbSymbolFlag==rDFA2.mbSymbolFlag);
cMatch &= (rDFA.meWeight==rDFA2.meWeight);
cMatch &= ((rDFA.meItalic==ITALIC_NONE) == (rDFA2.meItalic==ITALIC_NONE));
cMatch &= (rDFA.meWidthType==rDFA2.meWidthType);
cMatch = cMatch ? '.' : '#';
char aFN[256], aSN[256];
CFStringGetCString( pFamilyName, aFN, sizeof(aFN), kCFStringEncodingUTF8 );
CFStringGetCString( pStyleName, aSN, sizeof(aSN), kCFStringEncodingUTF8 );
const ByteString aPSCName( aPSName, RTL_TEXTENCODING_UTF8 );
const char* aPN = aPSCName.GetBuffer();
printf("\tCTFont_%d%x%d%d_%c_%d%x%d%d ena=%d s=%02d b=%+.2f i=%+.2f w=%+.2f (\"%s\", \"%s\", \"%s\")\n",
(int)rDFA.mbSymbolFlag,(int)rDFA.meWeight,(int)rDFA.meItalic,(int)rDFA.meWidthType,
cMatch,
(int)rDFA2.mbSymbolFlag,(int)rDFA2.meWeight,(int)rDFA2.meItalic,(int)rDFA2.meWidthType,
bFontEnabled,
(int)(nSymbolTrait>>kCTFontClassMaskShift),fWeight,fSlant,fWidth,aFN,aSN,aPN);
#endif // (OSL_DEBUG_LEVEL >= 1)
if( bFontEnabled) if( bFontEnabled)
{ {
const sal_IntPtr nFontId = (sal_IntPtr)pValue; const sal_IntPtr nFontId = (sal_IntPtr)pValue;
......
...@@ -30,7 +30,7 @@ class CTTextStyle ...@@ -30,7 +30,7 @@ class CTTextStyle
: public ImplMacTextStyle : public ImplMacTextStyle
{ {
public: public:
explicit CTTextStyle( const ImplFontSelectData& ); explicit CTTextStyle( const FontSelectPattern& );
virtual ~CTTextStyle( void ); virtual ~CTTextStyle( void );
virtual SalLayout* GetTextLayout( void ) const; virtual SalLayout* GetTextLayout( void ) const;
......
...@@ -47,7 +47,7 @@ public: ...@@ -47,7 +47,7 @@ public:
virtual bool GetGlyphOutlines( SalGraphics&, PolyPolyVector& ) const; virtual bool GetGlyphOutlines( SalGraphics&, PolyPolyVector& ) const;
virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const; virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const;
const ImplFontData* GetFallbackFontData( sal_GlyphId ) const; const PhysicalFontFace* GetFallbackFontData( sal_GlyphId ) const;
virtual void InitFont( void) const; virtual void InitFont( void) const;
virtual void MoveGlyph( int nStart, long nNewXPos ); virtual void MoveGlyph( int nStart, long nNewXPos );
...@@ -396,7 +396,7 @@ long CTLayout::FillDXArray( sal_Int32* pDXArray ) const ...@@ -396,7 +396,7 @@ long CTLayout::FillDXArray( sal_Int32* pDXArray ) const
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
int CTLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const int CTLayout::GetTextBreak( long nMaxWidth, long /*nCharExtra*/, int nFactor ) const
{ {
if( !mpCTLine ) if( !mpCTLine )
return STRING_LEN; return STRING_LEN;
...@@ -469,9 +469,9 @@ void CTLayout::MoveGlyph( int /*nStart*/, long /*nNewXPos*/ ) {} ...@@ -469,9 +469,9 @@ void CTLayout::MoveGlyph( int /*nStart*/, long /*nNewXPos*/ ) {}
void CTLayout::DropGlyph( int /*nStart*/ ) {} void CTLayout::DropGlyph( int /*nStart*/ ) {}
void CTLayout::Simplify( bool /*bIsBase*/ ) {} void CTLayout::Simplify( bool /*bIsBase*/ ) {}
// get the ImplFontData for a glyph fallback font // get the PhysicalFontFace for a glyph fallback font
// for a glyphid that was returned by CTLayout::GetNextGlyphs() // for a glyphid that was returned by CTLayout::GetNextGlyphs()
const ImplFontData* CTLayout::GetFallbackFontData( sal_GlyphId /*nGlyphId*/ ) const const PhysicalFontFace* CTLayout::GetFallbackFontData( sal_GlyphId /*nGlyphId*/ ) const
{ {
#if 0 #if 0
// check if any fallback fonts were needed // check if any fallback fonts were needed
...@@ -484,7 +484,7 @@ const ImplFontData* CTLayout::GetFallbackFontData( sal_GlyphId /*nGlyphId*/ ) co ...@@ -484,7 +484,7 @@ const ImplFontData* CTLayout::GetFallbackFontData( sal_GlyphId /*nGlyphId*/ ) co
pFallbackFont = mpFallbackInfo->GetFallbackFontData( nFallbackLevel ); pFallbackFont = mpFallbackInfo->GetFallbackFontData( nFallbackLevel );
#else #else
// let CoreText's font cascading handle glyph fallback // let CoreText's font cascading handle glyph fallback
const ImplFontData* pFallbackFont = NULL; const PhysicalFontFace* pFallbackFont = NULL;
#endif #endif
return pFallbackFont; return pFallbackFont;
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
#include "vcl/sysdata.hxx" #include "vcl/sysdata.hxx"
#include "vcl/svapp.hxx" #include "vcl/svapp.hxx"
#include "aqua/atsui/salgdi.h" #include "coretext/salgdi2.h"
#include "aqua/salframe.h" #include "aqua/salframe.h"
#ifdef ENABLE_CORETEXT #ifdef ENABLE_CORETEXT
#include "ctfonts.hxx" #include "ctfonts.hxx"
...@@ -65,7 +65,7 @@ SystemFontList::~SystemFontList( void ) ...@@ -65,7 +65,7 @@ SystemFontList::~SystemFontList( void )
// ======================================================================= // =======================================================================
ImplMacTextStyle::ImplMacTextStyle( const ImplFontSelectData& rReqFont ) ImplMacTextStyle::ImplMacTextStyle( const FontSelectPattern& rReqFont )
: mpFontData( (ImplMacFontData*)rReqFont.mpFontData ) : mpFontData( (ImplMacFontData*)rReqFont.mpFontData )
, mfFontScale( 1.0 ) , mfFontScale( 1.0 )
, mfFontStretch( 1.0 ) , mfFontStretch( 1.0 )
...@@ -80,7 +80,7 @@ ImplMacTextStyle::~ImplMacTextStyle( void ) ...@@ -80,7 +80,7 @@ ImplMacTextStyle::~ImplMacTextStyle( void )
// ======================================================================= // =======================================================================
ImplMacFontData::ImplMacFontData( const ImplMacFontData& rSrc ) ImplMacFontData::ImplMacFontData( const ImplMacFontData& rSrc )
: ImplFontData( rSrc ) : PhysicalFontFace( rSrc )
, mnFontId( rSrc.mnFontId ) , mnFontId( rSrc.mnFontId )
, mpCharMap( rSrc.mpCharMap ) , mpCharMap( rSrc.mpCharMap )
, mbOs2Read( rSrc.mbOs2Read ) , mbOs2Read( rSrc.mbOs2Read )
...@@ -95,7 +95,7 @@ ImplMacFontData::ImplMacFontData( const ImplMacFontData& rSrc ) ...@@ -95,7 +95,7 @@ ImplMacFontData::ImplMacFontData( const ImplMacFontData& rSrc )
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
ImplMacFontData::ImplMacFontData( const ImplDevFontAttributes& rDFA, sal_IntPtr nFontId ) ImplMacFontData::ImplMacFontData( const ImplDevFontAttributes& rDFA, sal_IntPtr nFontId )
: ImplFontData( rDFA, 0 ) : PhysicalFontFace( rDFA, 0 )
, mnFontId( nFontId ) , mnFontId( nFontId )
, mpCharMap( NULL ) , mpCharMap( NULL )
, mbOs2Read( false ) , mbOs2Read( false )
...@@ -132,12 +132,6 @@ ImplFontEntry* ImplMacFontData::CreateFontInstance(FontSelectPattern& rFSD) cons ...@@ -132,12 +132,6 @@ ImplFontEntry* ImplMacFontData::CreateFontInstance(FontSelectPattern& rFSD) cons
static unsigned GetUShort( const unsigned char* p ){return((p[0]<<8)+p[1]);} static unsigned GetUShort( const unsigned char* p ){return((p[0]<<8)+p[1]);}
static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);} static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);}
#if MACOSX_SDK_VERSION >= 1070
extern "C" {
extern ATSFontRef FMGetATSFontRefFromFont(FMFont iFont);
}
#endif
const ImplFontCharMap* ImplMacFontData::GetImplFontCharMap() const const ImplFontCharMap* ImplMacFontData::GetImplFontCharMap() const
{ {
// return the cached charmap // return the cached charmap
...@@ -186,33 +180,29 @@ bool ImplMacFontData::GetImplFontCapabilities(vcl::FontCapabilities &rFontCapabi ...@@ -186,33 +180,29 @@ bool ImplMacFontData::GetImplFontCapabilities(vcl::FontCapabilities &rFontCapabi
} }
mbFontCapabilitiesRead = true; mbFontCapabilitiesRead = true;
int nBufSize = 0;
// prepare to get the GSUB table raw data // prepare to get the GSUB table raw data
ATSFontRef rFont = FMGetATSFontRefFromFont( mnFontId ); nBufSize = GetFontTable( "GSUB", NULL );
ByteCount nBufSize = 0; if( nBufSize > 0 )
OSStatus eStatus;
eStatus = ATSFontGetTable( rFont, GetTag("GSUB"), 0, 0, NULL, &nBufSize );
if( eStatus == noErr )
{ {
// allocate a buffer for the GSUB raw data // allocate a buffer for the GSUB raw data
ByteVector aBuffer( nBufSize ); ByteVector aBuffer( nBufSize );
// get the GSUB raw data // get the GSUB raw data
ByteCount nRawLength = 0; const int nRawLength = GetFontTable( "GSUB", &aBuffer[0] );
eStatus = ATSFontGetTable( rFont, GetTag("GSUB"), 0, nBufSize, (void*)&aBuffer[0], &nRawLength ); if( nRawLength > 0 )
if( eStatus == noErr )
{ {
const unsigned char* pGSUBTable = &aBuffer[0]; const unsigned char* pGSUBTable = &aBuffer[0];
vcl::getTTScripts(maFontCapabilities.maGSUBScriptTags, pGSUBTable, nRawLength); vcl::getTTScripts(maFontCapabilities.maGSUBScriptTags, pGSUBTable, nRawLength);
} }
} }
eStatus = ATSFontGetTable( rFont, GetTag("OS/2"), 0, 0, NULL, &nBufSize ); nBufSize = GetFontTable( "OS/2", NULL );
if( eStatus == noErr ) if( nBufSize > 0 )
{ {
// allocate a buffer for the GSUB raw data // allocate a buffer for the OS/2 raw data
ByteVector aBuffer( nBufSize ); ByteVector aBuffer( nBufSize );
// get the OS/2 raw data // get the OS/2 raw data
ByteCount nRawLength = 0; const int nRawLength = GetFontTable( "OS/2", &aBuffer[0] );
eStatus = ATSFontGetTable( rFont, GetTag("OS/2"), 0, nBufSize, (void*)&aBuffer[0], &nRawLength ); if( nRawLength > 0 )
if( eStatus == noErr )
{ {
const unsigned char* pOS2Table = &aBuffer[0]; const unsigned char* pOS2Table = &aBuffer[0];
vcl::getTTCoverage( vcl::getTTCoverage(
......
...@@ -62,7 +62,7 @@ public: ...@@ -62,7 +62,7 @@ public:
virtual ImplFontEntry* CreateFontInstance( FontSelectPattern& ) const; virtual ImplFontEntry* CreateFontInstance( FontSelectPattern& ) const;
virtual sal_IntPtr GetFontId() const; virtual sal_IntPtr GetFontId() const;
virtual ImplMacTextStyle* CreateMacTextStyle( const ImplFontSelectData& ) const = 0; virtual ImplMacTextStyle* CreateMacTextStyle( const FontSelectPattern& ) const = 0;
virtual int GetFontTable( const char pTagName[5], unsigned char* ) const = 0; virtual int GetFontTable( const char pTagName[5], unsigned char* ) const = 0;
const ImplFontCharMap* GetImplFontCharMap() const; const ImplFontCharMap* GetImplFontCharMap() const;
...@@ -92,7 +92,7 @@ private: ...@@ -92,7 +92,7 @@ private:
class ImplMacTextStyle class ImplMacTextStyle
{ {
public: public:
explicit ImplMacTextStyle( const ImplFontSelectData& ); explicit ImplMacTextStyle( const FontSelectPattern& );
virtual ~ImplMacTextStyle( void ); virtual ~ImplMacTextStyle( void );
virtual SalLayout* GetTextLayout( void ) const = 0; virtual SalLayout* GetTextLayout( void ) const = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment