7#ifndef PDF_CHAR_CODE_MAP_H
8#define PDF_CHAR_CODE_MAP_H
11#include "PdfEncodingCommon.h"
15 struct CodePointMapNode;
17 struct PODOFO_API CodeUnitRange final
19 PdfCharCode SrcCodeLo;
21 CodePointSpan DstCodeLo;
25 CodeUnitRange(PdfCharCode srcCodeLo,
unsigned size, CodePointSpan dstCodeLo);
27 PdfCharCode GetSrcCodeHi()
const;
30 struct PODOFO_API CodeUnitRangeInequality
32 using is_transparent = std::true_type;
34 bool operator()(
const CodeUnitRange& lhs,
const PdfCharCode& rhs)
const
36 return lhs.SrcCodeLo < rhs;
38 bool operator()(
const PdfCharCode& lhs,
const CodeUnitRange& rhs)
const
40 return lhs < rhs.SrcCodeLo;
42 bool operator()(
const CodeUnitRange& lhs,
const CodeUnitRange& rhs)
const
44 return lhs.SrcCodeLo < rhs.SrcCodeLo;
48 using CodeUnitRanges = std::set<CodeUnitRange, CodeUnitRangeInequality>;
63 unsigned char CodeSpaceSize;
80 PODOFO_PRIVATE_FRIEND(
class PdfCMapEncodingFactory);
123 bool TryGetNextCharCode(std::string_view::iterator&
it,
137 const PdfEncodingLimits& GetLimits()
const {
return m_Limits; }
139 bool IsEmpty()
const;
143 bool IsTrivialIdentity()
const;
145 std::vector<CodeSpaceRange> GetCodeSpaceRanges()
const;
154 const CodeUnitRanges&
GetRanges()
const {
return m_Ranges; }
166 void reviseCodePointMap();
170 PdfEncodingLimits m_Limits;
171 CodeUnitMap m_Mappings;
172 CodeUnitRanges m_Ranges;
SPDX-FileCopyrightText: (C) 2005 Dominik Seichter domseichter@web.de SPDX-FileCopyrightText: (C) 2020...
A memory owning immutable block of code points, optimized for small segments as up to 3 elements can ...
Definition PdfEncodingCommon.h:141
A bidirectional map from character code units to unspecified code points.
Definition PdfCharCodeMap.h:79
const CodeUnitMap & GetMappings() const
Provides direct mappings.
Definition PdfCharCodeMap.h:150
const CodeUnitRanges & GetRanges() const
Provides range mappings.
Definition PdfCharCodeMap.h:154
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:38
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
char32_t codepoint
A convenient typedef for an unspecified codepoint The underlying type is convenientely char32_t so it...
Definition PdfEncodingCommon.h:133
Represent a range in the "begincodespacerange" section.
Definition PdfCharCodeMap.h:57
A character code unit.
Definition PdfEncodingCommon.h:20