From 169b30187bf5798a6106b5ab16288c9d86861f8b Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Fri, 26 May 2017 14:38:03 -0400 Subject: Use proper file names in core/fpdfapi/font MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL splits up font_int.h into files by classes. It also renames the unittests to match the class being tested. Finally, it renames the ttgsubtable files to match the class name. Change-Id: I6187caa9e82d12b9a66e955113fe327d52042ae0 Reviewed-on: https://pdfium-review.googlesource.com/6090 Reviewed-by: Tom Sepez Commit-Queue: Nicolás Peña --- core/fpdfapi/font/cpdf_cmap.h | 87 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 core/fpdfapi/font/cpdf_cmap.h (limited to 'core/fpdfapi/font/cpdf_cmap.h') diff --git a/core/fpdfapi/font/cpdf_cmap.h b/core/fpdfapi/font/cpdf_cmap.h new file mode 100644 index 0000000000..ab495efbfc --- /dev/null +++ b/core/fpdfapi/font/cpdf_cmap.h @@ -0,0 +1,87 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FONT_CPDF_CMAP_H_ +#define CORE_FPDFAPI_FONT_CPDF_CMAP_H_ + +#include + +#include "core/fpdfapi/font/cpdf_cidfont.h" +#include "core/fxcrt/cfx_retain_ptr.h" +#include "core/fxcrt/fx_basic.h" + +class CPDF_CMapManager; +struct FXCMAP_CMap; + +enum CIDCoding : uint8_t { + CIDCODING_UNKNOWN = 0, + CIDCODING_GB, + CIDCODING_BIG5, + CIDCODING_JIS, + CIDCODING_KOREA, + CIDCODING_UCS2, + CIDCODING_CID, + CIDCODING_UTF16, +}; + +class CPDF_CMap : public CFX_Retainable { + public: + enum CodingScheme : uint8_t { + OneByte, + TwoBytes, + MixedTwoBytes, + MixedFourBytes + }; + + struct CodeRange { + int m_CharSize; + uint8_t m_Lower[4]; + uint8_t m_Upper[4]; + }; + + struct CIDRange { + uint32_t m_StartCode; + uint32_t m_EndCode; + uint16_t m_StartCID; + }; + + template + friend CFX_RetainPtr pdfium::MakeRetain(Args&&... args); + + void LoadPredefined(CPDF_CMapManager* pMgr, + const CFX_ByteString& name, + bool bPromptCJK); + void LoadEmbedded(const uint8_t* pData, uint32_t dwSize); + + bool IsLoaded() const { return m_bLoaded; } + bool IsVertWriting() const { return m_bVertical; } + uint16_t CIDFromCharCode(uint32_t charcode) const; + int GetCharSize(uint32_t charcode) const; + uint32_t GetNextChar(const char* pString, int nStrLen, int& offset) const; + int CountChar(const char* pString, int size) const; + int AppendChar(char* str, uint32_t charcode) const; + + private: + friend class CPDF_CMapParser; + friend class CPDF_CIDFont; + + CPDF_CMap(); + ~CPDF_CMap() override; + + CFX_ByteString m_PredefinedCMap; + bool m_bLoaded; + bool m_bVertical; + CIDSet m_Charset; + CodingScheme m_CodingScheme; + int m_Coding; + std::vector m_MixedTwoByteLeadingBytes; + std::vector m_MixedFourByteLeadingRanges; + std::vector m_DirectCharcodeToCIDTable; + std::vector m_AdditionalCharcodeToCIDMappings; + const FXCMAP_CMap* m_pEmbedMap; +}; + +#endif // CORE_FPDFAPI_FONT_CPDF_CMAP_H_ -- cgit v1.2.3