summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_font/ttgsubtable.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/fpdf_font/ttgsubtable.h')
-rw-r--r--core/fpdfapi/fpdf_font/ttgsubtable.h301
1 files changed, 0 insertions, 301 deletions
diff --git a/core/fpdfapi/fpdf_font/ttgsubtable.h b/core/fpdfapi/fpdf_font/ttgsubtable.h
deleted file mode 100644
index 492a6a21de..0000000000
--- a/core/fpdfapi/fpdf_font/ttgsubtable.h
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright 2014 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_FPDF_FONT_TTGSUBTABLE_H_
-#define CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
-
-#include <stdint.h>
-
-#include <map>
-#include <memory>
-
-#include "core/fxcrt/fx_basic.h"
-#include "core/fxge/fx_font.h"
-#include "core/fxge/fx_freetype.h"
-
-class CFX_GlyphMap {
- public:
- CFX_GlyphMap();
- ~CFX_GlyphMap();
-
- void SetAt(int key, int value);
- FX_BOOL Lookup(int key, int& value);
-
- protected:
- CFX_BinaryBuf m_Buffer;
-};
-
-class CFX_CTTGSUBTable {
- public:
- CFX_CTTGSUBTable();
- explicit CFX_CTTGSUBTable(FT_Bytes gsub);
- virtual ~CFX_CTTGSUBTable();
-
- bool IsOk() const;
- bool LoadGSUBTable(FT_Bytes gsub);
- bool GetVerticalGlyph(uint32_t glyphnum, uint32_t* vglyphnum);
-
- private:
- struct tt_gsub_header {
- uint32_t Version;
- uint16_t ScriptList;
- uint16_t FeatureList;
- uint16_t LookupList;
- };
- struct TLangSys {
- TLangSys();
- ~TLangSys();
-
- uint16_t LookupOrder;
- uint16_t ReqFeatureIndex;
- uint16_t FeatureCount;
- std::unique_ptr<uint16_t[]> FeatureIndex;
-
- private:
- TLangSys(const TLangSys&);
- TLangSys& operator=(const TLangSys&);
- };
- struct TLangSysRecord {
- TLangSysRecord() : LangSysTag(0) {}
-
- uint32_t LangSysTag;
- TLangSys LangSys;
-
- private:
- TLangSysRecord(const TLangSysRecord&);
- TLangSysRecord& operator=(const TLangSysRecord&);
- };
- struct TScript {
- TScript();
- ~TScript();
-
- uint16_t DefaultLangSys;
- uint16_t LangSysCount;
- std::unique_ptr<TLangSysRecord[]> LangSysRecord;
-
- private:
- TScript(const TScript&);
- TScript& operator=(const TScript&);
- };
- struct TScriptRecord {
- TScriptRecord() : ScriptTag(0) {}
-
- uint32_t ScriptTag;
- TScript Script;
-
- private:
- TScriptRecord(const TScriptRecord&);
- TScriptRecord& operator=(const TScriptRecord&);
- };
- struct TScriptList {
- TScriptList();
- ~TScriptList();
-
- uint16_t ScriptCount;
- std::unique_ptr<TScriptRecord[]> ScriptRecord;
-
- private:
- TScriptList(const TScriptList&);
- TScriptList& operator=(const TScriptList&);
- };
- struct TFeature {
- TFeature();
- ~TFeature();
-
- uint16_t FeatureParams;
- int LookupCount;
- std::unique_ptr<uint16_t[]> LookupListIndex;
-
- private:
- TFeature(const TFeature&);
- TFeature& operator=(const TFeature&);
- };
- struct TFeatureRecord {
- TFeatureRecord() : FeatureTag(0) {}
-
- uint32_t FeatureTag;
- TFeature Feature;
-
- private:
- TFeatureRecord(const TFeatureRecord&);
- TFeatureRecord& operator=(const TFeatureRecord&);
- };
- struct TFeatureList {
- TFeatureList();
- ~TFeatureList();
-
- int FeatureCount;
- std::unique_ptr<TFeatureRecord[]> FeatureRecord;
-
- private:
- TFeatureList(const TFeatureList&);
- TFeatureList& operator=(const TFeatureList&);
- };
- enum TLookupFlag {
- LOOKUPFLAG_RightToLeft = 0x0001,
- LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002,
- LOOKUPFLAG_IgnoreLigatures = 0x0004,
- LOOKUPFLAG_IgnoreMarks = 0x0008,
- LOOKUPFLAG_Reserved = 0x00F0,
- LOOKUPFLAG_MarkAttachmentType = 0xFF00,
- };
- struct TCoverageFormatBase {
- TCoverageFormatBase() : CoverageFormat(0) {}
- explicit TCoverageFormatBase(uint16_t format) : CoverageFormat(format) {}
- virtual ~TCoverageFormatBase() {}
-
- uint16_t CoverageFormat;
- CFX_GlyphMap m_glyphMap;
-
- private:
- TCoverageFormatBase(const TCoverageFormatBase&);
- TCoverageFormatBase& operator=(const TCoverageFormatBase&);
- };
- struct TCoverageFormat1 : public TCoverageFormatBase {
- TCoverageFormat1();
- ~TCoverageFormat1() override;
-
- uint16_t GlyphCount;
- std::unique_ptr<uint16_t[]> GlyphArray;
-
- private:
- TCoverageFormat1(const TCoverageFormat1&);
- TCoverageFormat1& operator=(const TCoverageFormat1&);
- };
- struct TRangeRecord {
- TRangeRecord();
-
- friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) {
- return r1.Start > r2.Start;
- }
-
- uint16_t Start;
- uint16_t End;
- uint16_t StartCoverageIndex;
-
- private:
- TRangeRecord(const TRangeRecord&);
- };
- struct TCoverageFormat2 : public TCoverageFormatBase {
- TCoverageFormat2();
- ~TCoverageFormat2() override;
-
- uint16_t RangeCount;
- std::unique_ptr<TRangeRecord[]> RangeRecord;
-
- private:
- TCoverageFormat2(const TCoverageFormat2&);
- TCoverageFormat2& operator=(const TCoverageFormat2&);
- };
- struct TDevice {
- TDevice() : StartSize(0), EndSize(0), DeltaFormat(0) {}
-
- uint16_t StartSize;
- uint16_t EndSize;
- uint16_t DeltaFormat;
-
- private:
- TDevice(const TDevice&);
- TDevice& operator=(const TDevice&);
- };
- struct TSubTableBase {
- TSubTableBase() : SubstFormat(0) {}
- explicit TSubTableBase(uint16_t format) : SubstFormat(format) {}
- virtual ~TSubTableBase() {}
-
- uint16_t SubstFormat;
-
- private:
- TSubTableBase(const TSubTableBase&);
- TSubTableBase& operator=(const TSubTableBase&);
- };
- struct TSingleSubstFormat1 : public TSubTableBase {
- TSingleSubstFormat1();
- ~TSingleSubstFormat1() override;
-
- std::unique_ptr<TCoverageFormatBase> Coverage;
- int16_t DeltaGlyphID;
-
- private:
- TSingleSubstFormat1(const TSingleSubstFormat1&);
- TSingleSubstFormat1& operator=(const TSingleSubstFormat1&);
- };
- struct TSingleSubstFormat2 : public TSubTableBase {
- TSingleSubstFormat2();
- ~TSingleSubstFormat2() override;
-
- std::unique_ptr<TCoverageFormatBase> Coverage;
- uint16_t GlyphCount;
- std::unique_ptr<uint16_t[]> Substitute;
-
- private:
- TSingleSubstFormat2(const TSingleSubstFormat2&);
- TSingleSubstFormat2& operator=(const TSingleSubstFormat2&);
- };
- struct TLookup {
- TLookup();
- ~TLookup();
-
- uint16_t LookupType;
- uint16_t LookupFlag;
- uint16_t SubTableCount;
- std::unique_ptr<TSubTableBase* []> SubTable;
-
- private:
- TLookup(const TLookup&);
- TLookup& operator=(const TLookup&);
- };
- struct TLookupList {
- TLookupList();
- ~TLookupList();
-
- int LookupCount;
- std::unique_ptr<TLookup[]> Lookup;
-
- private:
- TLookupList(const TLookupList&);
- TLookupList& operator=(const TLookupList&);
- };
-
- bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist);
- void ParseScriptList(FT_Bytes raw, TScriptList* rec);
- void ParseScript(FT_Bytes raw, TScript* rec);
- void ParseLangSys(FT_Bytes raw, TLangSys* rec);
- void ParseFeatureList(FT_Bytes raw, TFeatureList* rec);
- void ParseFeature(FT_Bytes raw, TFeature* rec);
- void ParseLookupList(FT_Bytes raw, TLookupList* rec);
- void ParseLookup(FT_Bytes raw, TLookup* rec);
- TCoverageFormatBase* ParseCoverage(FT_Bytes raw);
- void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec);
- void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec);
- void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec);
- void ParseSingleSubstFormat1(FT_Bytes raw, TSingleSubstFormat1* rec);
- void ParseSingleSubstFormat2(FT_Bytes raw, TSingleSubstFormat2* rec);
-
- bool GetVerticalGlyphSub(uint32_t glyphnum,
- uint32_t* vglyphnum,
- TFeature* Feature) const;
- bool GetVerticalGlyphSub2(uint32_t glyphnum,
- uint32_t* vglyphnum,
- TLookup* Lookup) const;
- int GetCoverageIndex(TCoverageFormatBase* Coverage, uint32_t g) const;
-
- uint8_t GetUInt8(FT_Bytes& p) const;
- int16_t GetInt16(FT_Bytes& p) const;
- uint16_t GetUInt16(FT_Bytes& p) const;
- int32_t GetInt32(FT_Bytes& p) const;
- uint32_t GetUInt32(FT_Bytes& p) const;
-
- std::map<uint32_t, uint32_t> m_featureMap;
- FX_BOOL m_bFeautureMapLoad;
- bool loaded;
- tt_gsub_header header;
- TScriptList ScriptList;
- TFeatureList FeatureList;
- TLookupList LookupList;
-};
-
-#endif // CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_