#include "core/fpdfapi/font/cpdf_cmap.h"
#include <array>
#include <utility>
#include <vector>
#include "core/fpdfapi/cmaps/fpdf_cmaps.h"
#include "core/fpdfapi/font/cpdf_cmapparser.h"
#include "core/fpdfapi/font/cpdf_fontglobals.h"
#include "core/fpdfapi/parser/cpdf_simple_parser.h"
#include "core/fxcrt/check.h"
#include "core/fxcrt/fx_memcpy_wrappers.h"
#include "core/fxcrt/notreached.h"
namespace {
struct ByteRange { … };
struct PredefinedCMap { … };
constexpr PredefinedCMap kPredefinedCMaps[] = …;
const PredefinedCMap* GetPredefinedCMap(ByteStringView cmapid) { … }
std::vector<bool> LoadLeadingSegments(const PredefinedCMap& map) { … }
int CheckFourByteCodeRange(pdfium::span<uint8_t> codes,
pdfium::span<const CPDF_CMap::CodeRange> ranges) { … }
size_t GetFourByteCharSizeImpl(
uint32_t charcode,
pdfium::span<const CPDF_CMap::CodeRange> ranges) { … }
const fxcmap::CMap* FindEmbeddedCMap(pdfium::span<const fxcmap::CMap> pCMaps,
ByteStringView bsName) { … }
}
CPDF_CMap::CPDF_CMap(ByteStringView bsPredefinedName)
: … { … }
CPDF_CMap::CPDF_CMap(pdfium::span<const uint8_t> spEmbeddedData)
: … { … }
CPDF_CMap::~CPDF_CMap() = default;
uint16_t CPDF_CMap::CIDFromCharCode(uint32_t charcode) const { … }
uint32_t CPDF_CMap::GetNextChar(ByteStringView pString, size_t* pOffset) const { … }
int CPDF_CMap::GetCharSize(uint32_t charcode) const { … }
size_t CPDF_CMap::CountChar(ByteStringView pString) const { … }
void CPDF_CMap::AppendChar(ByteString* str, uint32_t charcode) const { … }
void CPDF_CMap::SetAdditionalMappings(std::vector<CIDRange> mappings) { … }
void CPDF_CMap::SetMixedFourByteLeadingRanges(std::vector<CodeRange> ranges) { … }
void CPDF_CMap::SetDirectCharcodeToCIDTableRange(uint32_t start_code,
uint32_t end_code,
uint16_t start_cid) { … }