Index: xfa/fde/fde_gedevice.cpp |
diff --git a/xfa/fde/fde_gedevice.cpp b/xfa/fde/fde_gedevice.cpp |
index e78ab8da4ca5a675468204cea96b35fd653bcce1..56f845c35bd23f0d0668bc7813dde0708e03b9a3 100644 |
--- a/xfa/fde/fde_gedevice.cpp |
+++ b/xfa/fde/fde_gedevice.cpp |
@@ -134,12 +134,12 @@ FX_BOOL CFDE_RenderDevice::DrawString(CFDE_Brush* pBrush, |
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
uint32_t dwFontStyle = pFont->GetFontStyles(); |
CFX_Font FxFont; |
- CFX_SubstFont SubstFxFont; |
- FxFont.SetSubstFont(&SubstFxFont); |
- SubstFxFont.m_Weight = dwFontStyle & FX_FONTSTYLE_Bold ? 700 : 400; |
- SubstFxFont.m_ItalicAngle = dwFontStyle & FX_FONTSTYLE_Italic ? -12 : 0; |
- SubstFxFont.m_WeightCJK = SubstFxFont.m_Weight; |
- SubstFxFont.m_bItalicCJK = !!(dwFontStyle & FX_FONTSTYLE_Italic); |
+ CFX_SubstFont* SubstFxFont = new CFX_SubstFont(); |
+ FxFont.SetSubstFont(std::unique_ptr<CFX_SubstFont>(SubstFxFont)); |
+ SubstFxFont->m_Weight = dwFontStyle & FX_FONTSTYLE_Bold ? 700 : 400; |
+ SubstFxFont->m_ItalicAngle = dwFontStyle & FX_FONTSTYLE_Italic ? -12 : 0; |
+ SubstFxFont->m_WeightCJK = SubstFxFont->m_Weight; |
+ SubstFxFont->m_bItalicCJK = !!(dwFontStyle & FX_FONTSTYLE_Italic); |
#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
for (int32_t i = 0; i < iCount; ++i) { |
@@ -175,7 +175,6 @@ FX_BOOL CFDE_RenderDevice::DrawString(CFDE_Brush* pBrush, |
FX_BOOL bRet = m_pDevice->DrawNormalText( |
iCurCount, pCurCP, &FxFont, pCache, -fFontSize, |
(const CFX_Matrix*)pMatrix, argb, FXTEXT_CLEARTYPE); |
- FxFont.SetSubstFont(nullptr); |
FxFont.SetFace(nullptr); |
return bRet; |
#else |
@@ -186,7 +185,6 @@ FX_BOOL CFDE_RenderDevice::DrawString(CFDE_Brush* pBrush, |
} |
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
- FxFont.SetSubstFont(nullptr); |
FxFont.SetFace(nullptr); |
#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |