diff options
-rw-r--r-- | src/gui/text/qfontenginedirectwrite.cpp | 24 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp | 24 |
2 files changed, 22 insertions, 26 deletions
diff --git a/src/gui/text/qfontenginedirectwrite.cpp b/src/gui/text/qfontenginedirectwrite.cpp index 4843d7f12e..0608368e0f 100644 --- a/src/gui/text/qfontenginedirectwrite.cpp +++ b/src/gui/text/qfontenginedirectwrite.cpp @@ -225,6 +225,8 @@ QFixed QFontEngineDirectWrite::lineThickness() const bool QFontEngineDirectWrite::getSfntTableData(uint tag, uchar *buffer, uint *length) const { + bool ret = false; + if (m_directWriteFontFace) { DWORD t = qbswap<quint32>(tag); @@ -237,26 +239,22 @@ bool QFontEngineDirectWrite::getSfntTableData(uint tag, uchar *buffer, uint *len ); if (SUCCEEDED(hr)) { - if (!exists) - return false; - - if (buffer == 0) { - *length = tableSize; - return true; - } else if (*length < tableSize) { - return false; + if (exists) { + if (!buffer) { + *length = tableSize; + ret = true; + } else if (*length >= tableSize) { + memcpy(buffer, tableData, tableSize); + ret = true; + } } - - memcpy(buffer, tableData, tableSize); m_directWriteFontFace->ReleaseFontTable(tableContext); - - return true; } else { qErrnoWarning("QFontEngineDirectWrite::getSfntTableData: TryGetFontTable failed"); } } - return false; + return ret; } QFixed QFontEngineDirectWrite::emSquareSize() const diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp index b02686ceeb..568de480a0 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp @@ -254,6 +254,8 @@ QFixed QWindowsFontEngineDirectWrite::lineThickness() const bool QWindowsFontEngineDirectWrite::getSfntTableData(uint tag, uchar *buffer, uint *length) const { + bool ret = false; + if (m_directWriteFontFace) { DWORD t = qbswap<quint32>(tag); @@ -266,26 +268,22 @@ bool QWindowsFontEngineDirectWrite::getSfntTableData(uint tag, uchar *buffer, ui ); if (SUCCEEDED(hr)) { - if (!exists) - return false; - - if (buffer == 0) { - *length = tableSize; - return true; - } else if (*length < tableSize) { - return false; + if (exists) { + if (!buffer) { + *length = tableSize; + ret = true; + } else if (*length >= tableSize) { + memcpy(buffer, tableData, tableSize); + ret = true; + } } - - memcpy(buffer, tableData, tableSize); m_directWriteFontFace->ReleaseFontTable(tableContext); - - return true; } else { qErrnoWarning("%s: TryGetFontTable failed", __FUNCTION__); } } - return false; + return ret; } QFixed QWindowsFontEngineDirectWrite::emSquareSize() const |