OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/src/fpdfapi/fpdf_font/font_int.h" | 7 #include "core/src/fpdfapi/fpdf_font/font_int.h" |
8 | 8 |
9 #include "core/include/fpdfapi/fpdf_module.h" | 9 #include "core/include/fpdfapi/fpdf_module.h" |
10 #include "core/include/fpdfapi/fpdf_page.h" | 10 #include "core/include/fpdfapi/fpdf_page.h" |
(...skipping 1551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 m_pFontResources = m_pFontDict->GetDictBy("Resources"); | 1562 m_pFontResources = m_pFontDict->GetDictBy("Resources"); |
1563 CPDF_Array* pMatrix = m_pFontDict->GetArrayBy("FontMatrix"); | 1563 CPDF_Array* pMatrix = m_pFontDict->GetArrayBy("FontMatrix"); |
1564 FX_FLOAT xscale = 1.0f, yscale = 1.0f; | 1564 FX_FLOAT xscale = 1.0f, yscale = 1.0f; |
1565 if (pMatrix) { | 1565 if (pMatrix) { |
1566 m_FontMatrix = pMatrix->GetMatrix(); | 1566 m_FontMatrix = pMatrix->GetMatrix(); |
1567 xscale = m_FontMatrix.a; | 1567 xscale = m_FontMatrix.a; |
1568 yscale = m_FontMatrix.d; | 1568 yscale = m_FontMatrix.d; |
1569 } | 1569 } |
1570 CPDF_Array* pBBox = m_pFontDict->GetArrayBy("FontBBox"); | 1570 CPDF_Array* pBBox = m_pFontDict->GetArrayBy("FontBBox"); |
1571 if (pBBox) { | 1571 if (pBBox) { |
1572 m_FontBBox.left = | 1572 m_FontBBox.left = (int32_t)(pBBox->GetNumberAt(0) * xscale * 1000); |
1573 (int32_t)(FXSYS_Mul(pBBox->GetNumberAt(0), xscale) * 1000); | 1573 m_FontBBox.bottom = (int32_t)(pBBox->GetNumberAt(1) * yscale * 1000); |
1574 m_FontBBox.bottom = | 1574 m_FontBBox.right = (int32_t)(pBBox->GetNumberAt(2) * xscale * 1000); |
1575 (int32_t)(FXSYS_Mul(pBBox->GetNumberAt(1), yscale) * 1000); | 1575 m_FontBBox.top = (int32_t)(pBBox->GetNumberAt(3) * yscale * 1000); |
1576 m_FontBBox.right = | |
1577 (int32_t)(FXSYS_Mul(pBBox->GetNumberAt(2), xscale) * 1000); | |
1578 m_FontBBox.top = (int32_t)(FXSYS_Mul(pBBox->GetNumberAt(3), yscale) * 1000); | |
1579 } | 1576 } |
1580 int StartChar = m_pFontDict->GetIntegerBy("FirstChar"); | 1577 int StartChar = m_pFontDict->GetIntegerBy("FirstChar"); |
1581 CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); | 1578 CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); |
1582 if (pWidthArray && (StartChar >= 0 && StartChar < 256)) { | 1579 if (pWidthArray && (StartChar >= 0 && StartChar < 256)) { |
1583 FX_DWORD count = pWidthArray->GetCount(); | 1580 FX_DWORD count = pWidthArray->GetCount(); |
1584 if (count > 256) { | 1581 if (count > 256) { |
1585 count = 256; | 1582 count = 256; |
1586 } | 1583 } |
1587 if (StartChar + count > 256) { | 1584 if (StartChar + count > 256) { |
1588 count = 256 - StartChar; | 1585 count = 256 - StartChar; |
1589 } | 1586 } |
1590 for (FX_DWORD i = 0; i < count; i++) { | 1587 for (FX_DWORD i = 0; i < count; i++) { |
1591 m_CharWidthL[StartChar + i] = | 1588 m_CharWidthL[StartChar + i] = |
1592 FXSYS_round(FXSYS_Mul(pWidthArray->GetNumberAt(i), xscale) * 1000); | 1589 FXSYS_round(pWidthArray->GetNumberAt(i) * xscale * 1000); |
1593 } | 1590 } |
1594 } | 1591 } |
1595 m_pCharProcs = m_pFontDict->GetDictBy("CharProcs"); | 1592 m_pCharProcs = m_pFontDict->GetDictBy("CharProcs"); |
1596 CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); | 1593 CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); |
1597 if (pEncoding) { | 1594 if (pEncoding) { |
1598 LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, FALSE, FALSE); | 1595 LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, FALSE, FALSE); |
1599 if (m_pCharNames) { | 1596 if (m_pCharNames) { |
1600 for (int i = 0; i < 256; i++) { | 1597 for (int i = 0; i < 256; i++) { |
1601 m_Encoding.m_Unicodes[i] = PDF_UnicodeFromAdobeName(m_pCharNames[i]); | 1598 m_Encoding.m_Unicodes[i] = PDF_UnicodeFromAdobeName(m_pCharNames[i]); |
1602 if (m_Encoding.m_Unicodes[i] == 0) { | 1599 if (m_Encoding.m_Unicodes[i] == 0) { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1690 rect = pChar->m_BBox; | 1687 rect = pChar->m_BBox; |
1691 } | 1688 } |
1692 | 1689 |
1693 CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm) | 1690 CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm) |
1694 : m_pForm(pForm), m_pBitmap(nullptr), m_bColored(FALSE) {} | 1691 : m_pForm(pForm), m_pBitmap(nullptr), m_bColored(FALSE) {} |
1695 | 1692 |
1696 CPDF_Type3Char::~CPDF_Type3Char() { | 1693 CPDF_Type3Char::~CPDF_Type3Char() { |
1697 delete m_pForm; | 1694 delete m_pForm; |
1698 delete m_pBitmap; | 1695 delete m_pBitmap; |
1699 } | 1696 } |
OLD | NEW |