summaryrefslogtreecommitdiff
path: root/vcl/win/gdi
diff options
context:
space:
mode:
authorAkash Jain <akash96j@gmail.com>2016-06-14 13:07:20 +0530
committerKhaled Hosny <khaledhosny@eglug.org>2016-10-18 20:41:28 +0200
commit2d95ec38742657de16ff83d649016903557eb479 (patch)
tree4dc5244687a805dce975b2b018ecb916ec5608dc /vcl/win/gdi
parentc70eeb2be7ac0a2c0c81a7cbc9642b0ae824b110 (diff)
GSoC: Add a generic GetTable function for WinFontFace
Change-Id: Ia10ffd8c4b5e0cef89571204f5f1df32daa9edb7
Diffstat (limited to 'vcl/win/gdi')
-rw-r--r--vcl/win/gdi/salfont.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index 8d97f4060d3a..2fefa79deb09 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -914,7 +914,7 @@ sal_IntPtr WinFontFace::GetFontId() const
}
static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);}
-static inline DWORD CalcTag( const char p[4]) { return (p[0]+(p[1]<<8)+(p[2]<<16)+(p[3]<<24)); }
+static inline DWORD CalcTag( const char p[5]) { return (p[0]+(p[1]<<8)+(p[2]<<16)+(p[3]<<24)); }
void WinFontFace::UpdateFromHDC( HDC hDC ) const
{
@@ -1058,6 +1058,18 @@ void WinFontFace::ReadCmapTable( HDC hDC ) const
}
}
+int WinFontFace::GetTable(const char pTagName[5], const unsigned char*& pResBuffer, HDC hDC)
+{
+ const DWORD nTableTag = CalcTag( pTagName );
+ RawFontData aRawFontData( hDC, nTableTag );
+
+ if( !aRawFontData.get() )
+ return 0;
+
+ pResBuffer = aRawFontData.steal();
+ return aRawFontData.size();
+}
+
void WinFontFace::GetFontCapabilities( HDC hDC ) const
{
// read this only once per font