#include "Font.h"
#include "IosevkaExtended.h"

#include "imgui.h"

namespace kte::Fonts {
void
Font::Load(const float size) const
{
	const ImGuiIO &io = ImGui::GetIO();
	io.Fonts->Clear();

	ImFontConfig config;
	config.MergeMode = false;

	// Load Basic Latin + Latin Supplement
	io.Fonts->AddFontFromMemoryCompressedTTF(
		this->data_,
		this->size_,
		size,
		&config,
		io.Fonts->GetGlyphRangesDefault());

	// Merge Greek and Mathematical symbols from IosevkaExtended as fallback
	config.MergeMode                       = true;
	static const ImWchar extended_ranges[] = {
		0x0370, 0x03FF, // Greek and Coptic
		0x2200, 0x22FF, // Mathematical Operators
		0,
	};
	io.Fonts->AddFontFromMemoryCompressedTTF(
		kte::Fonts::IosevkaExtended::DefaultFontRegularCompressedData,
		kte::Fonts::IosevkaExtended::DefaultFontRegularCompressedSize,
		size,
		&config,
		extended_ranges);

	io.Fonts->Build();
}
} // namespace kte::Fonts
