mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
110 lines
3 KiB
Plaintext
110 lines
3 KiB
Plaintext
//========================================================================
|
|
//
|
|
// FontInfo.h
|
|
//
|
|
// Copyright (C) 2005 Kristian Høgsberg <krh@redhat.com>
|
|
// Copyright (C) 2005-2008, 2010, 2011, 2018, 2019, 2021 Albert Astals Cid <aacid@kde.org>
|
|
// Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
|
|
// Copyright (C) 2009 Pino Toscano <pino@kde.org>
|
|
// Copyright (C) 2012 Adrian Johnson <ajohnson@redneon.com>
|
|
// Copyright (C) 2013 Thomas Freitag <Thomas.Freitag@alfa.de>
|
|
// Copyright (C) 2019, 2021, 2022 Oliver Sander <oliver.sander@tu-dresden.de>
|
|
// Copyright (C) 2019 Adam Reichold <adam.reichold@t-online.de>
|
|
//
|
|
// To see a description of the changes please see the Changelog file that
|
|
// came with your tarball or type make ChangeLog if you are building from git
|
|
//
|
|
//========================================================================
|
|
|
|
//========================================================================
|
|
//
|
|
// Based on code from pdffonts.cc
|
|
//
|
|
// Copyright 2001-2007 Glyph & Cog, LLC
|
|
//
|
|
//========================================================================
|
|
|
|
#ifndef FONT_INFO_H
|
|
#define FONT_INFO_H
|
|
|
|
#include "Object.h"
|
|
#include "poppler_private_export.h"
|
|
|
|
#include <optional>
|
|
#include <string>
|
|
#include <unordered_set>
|
|
|
|
class GfxFont;
|
|
class PDFDoc;
|
|
|
|
class POPPLER_PRIVATE_EXPORT FontInfo
|
|
{
|
|
public:
|
|
enum Type
|
|
{
|
|
unknown,
|
|
Type1,
|
|
Type1C,
|
|
Type1COT,
|
|
Type3,
|
|
TrueType,
|
|
TrueTypeOT,
|
|
CIDType0,
|
|
CIDType0C,
|
|
CIDType0COT,
|
|
CIDTrueType,
|
|
CIDTrueTypeOT
|
|
};
|
|
|
|
// Constructor.
|
|
FontInfo(GfxFont *fontA, XRef *xrefA);
|
|
// Copy constructor
|
|
FontInfo(const FontInfo &f) = default;
|
|
|
|
FontInfo &operator=(const FontInfo &) = delete;
|
|
|
|
const std::optional<std::string> &getName() const { return name; };
|
|
const std::optional<std::string> &getSubstituteName() const { return substituteName; };
|
|
const std::optional<std::string> &getFile() const { return file; };
|
|
const std::string &getEncoding() const { return encoding; };
|
|
Type getType() const { return type; };
|
|
bool getEmbedded() const { return emb; };
|
|
bool getSubset() const { return subset; };
|
|
bool getToUnicode() const { return hasToUnicode; };
|
|
Ref getRef() const { return fontRef; };
|
|
Ref getEmbRef() const { return embRef; };
|
|
|
|
private:
|
|
std::optional<std::string> name;
|
|
std::optional<std::string> substituteName;
|
|
std::optional<std::string> file;
|
|
std::string encoding;
|
|
Type type;
|
|
bool emb;
|
|
bool subset;
|
|
bool hasToUnicode;
|
|
Ref fontRef;
|
|
Ref embRef;
|
|
};
|
|
|
|
class POPPLER_PRIVATE_EXPORT FontInfoScanner
|
|
{
|
|
public:
|
|
// Constructor.
|
|
explicit FontInfoScanner(PDFDoc *doc, int firstPage = 0);
|
|
// Destructor.
|
|
~FontInfoScanner();
|
|
|
|
std::vector<FontInfo *> scan(int nPages);
|
|
|
|
private:
|
|
PDFDoc *doc;
|
|
int currentPage;
|
|
std::unordered_set<int> fonts;
|
|
std::unordered_set<int> visitedObjects;
|
|
|
|
void scanFonts(XRef *xrefA, Dict *resDict, std::vector<FontInfo *> *fontsList);
|
|
};
|
|
|
|
#endif
|