#ifndef XFA_FGAS_FONT_CFGAS_FONTMGR_H_
#define XFA_FGAS_FONT_CFGAS_FONTMGR_H_
#include <array>
#include <deque>
#include <map>
#include <memory>
#include <set>
#include <vector>
#include "build/build_config.h"
#include "core/fxcrt/compiler_specific.h"
#include "core/fxcrt/fx_codepage_forward.h"
#include "core/fxcrt/retain_ptr.h"
#include "core/fxcrt/widestring.h"
#include "core/fxge/cfx_face.h"
class CFGAS_GEFont;
class IFX_SeekableReadStream;
#if BUILDFLAG(IS_WIN)
struct FX_FONTSIGNATURE {
std::array<uint32_t, 4> fsUsb;
std::array<uint32_t, 2> fsCsb;
};
inline bool operator==(const FX_FONTSIGNATURE& left,
const FX_FONTSIGNATURE& right) {
return left.fsUsb[0] == right.fsUsb[0] && left.fsUsb[1] == right.fsUsb[1] &&
left.fsUsb[2] == right.fsUsb[2] && left.fsUsb[3] == right.fsUsb[3] &&
left.fsCsb[0] == right.fsCsb[0] && left.fsCsb[1] == right.fsCsb[1];
}
struct FX_FONTDESCRIPTOR {
wchar_t wsFontFace[32];
uint32_t dwFontStyles;
FX_Charset uCharSet;
FX_FONTSIGNATURE FontSignature;
};
inline bool operator==(const FX_FONTDESCRIPTOR& left,
const FX_FONTDESCRIPTOR& right) {
return left.uCharSet == right.uCharSet &&
left.dwFontStyles == right.dwFontStyles &&
left.FontSignature == right.FontSignature &&
wcscmp(left.wsFontFace, right.wsFontFace) == 0;
}
#else
class CFGAS_FontDescriptor { … };
struct CFGAS_FontDescriptorInfo { … };
#endif
class CFGAS_FontMgr { … };
#endif