Index: core/fxge/ge/fx_ge_text.cpp |
diff --git a/core/fxge/ge/fx_ge_text.cpp b/core/fxge/ge/fx_ge_text.cpp |
index 44ab9f7ab51899fdff23cf38138e05f2bffb06e5..470c590c00f41283a884250608a3054d9d733f34 100644 |
--- a/core/fxge/ge/fx_ge_text.cpp |
+++ b/core/fxge/ge/fx_ge_text.cpp |
@@ -4,6 +4,8 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+#include <limits> |
+ |
#include "core/fxcodec/include/fx_codec.h" |
#include "core/fxge/ge/fx_text_int.h" |
#include "core/fxge/include/fx_freetype.h" |
@@ -1568,9 +1570,12 @@ CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph(CFX_Font* pFont, |
} |
if (skew) { |
// skew is nonpositive so -skew is used as the index. |
- skew = -skew <= static_cast<int>(ANGLESKEW_ARRAY_SIZE) |
- ? -58 |
- : -g_AngleSkew[-skew]; |
+ if (skew < 0 && skew != std::numeric_limits<int>::min() && |
+ static_cast<size_t>(-skew) < ANGLESKEW_ARRAY_SIZE) { |
Wei Li
2016/04/11 16:40:37
/skew < 0/skew <= 0/
Also, casting to size_t make
Oliver Chang
2016/04/11 16:51:42
Done.
|
+ skew = -g_AngleSkew[-skew]; |
+ } else { |
+ skew = -58; |
+ } |
if (pFont->IsVertical()) |
ft_matrix.yx += ft_matrix.yy * skew / 100; |
else |
@@ -1834,9 +1839,12 @@ CFX_PathData* CFX_Font::LoadGlyphPath(uint32_t glyph_index, int dest_width) { |
if (m_pSubstFont->m_ItalicAngle) { |
int skew = m_pSubstFont->m_ItalicAngle; |
// skew is nonpositive so -skew is used as the index. |
- skew = -skew <= static_cast<int>(ANGLESKEW_ARRAY_SIZE) |
- ? -58 |
- : -g_AngleSkew[-skew]; |
+ if (skew < 0 && skew != std::numeric_limits<int>::min() && |
Wei Li
2016/04/11 17:00:47
skew <= 0 here too.
Since you are here, can you p
Oliver Chang
2016/04/11 17:06:47
Already made this <= 0 too. Added the comment
|
+ static_cast<size_t>(-skew) < ANGLESKEW_ARRAY_SIZE) { |
+ skew = -g_AngleSkew[-skew]; |
+ } else { |
+ skew = -58; |
+ } |
if (m_bVertical) |
ft_matrix.yx += ft_matrix.yy * skew / 100; |
else |