#pragma once

#include "FontItem.h"

#include <memory>
#include <filesystem>

class FontGlyph;

class IFontEngine
{
public:
    IFontEngine() = default;
    virtual ~IFontEngine() = default;

    virtual void initialize(){};

    virtual void loadFontFace(const std::filesystem::path& fontFile, float penSize = 16) = 0;

    virtual std::unique_ptr<FontGlyph> loadGlyph(uint32_t charCode) = 0;

    virtual double getHorizontalAdvance(const FontItem& fontItem, const std::string& content) = 0;
};
