Вы можете вызвать GetFontData (...) без окна или графического интерфейса, например, из программы командной строки, просто сделав фиктивный контекст устройства на лету и выбрав в нем шрифт
#include <Windows.h>
#include <vector>
std::vector<unsigned char> GetFontDataByName(const wchar_t* font_name)
{
HDC hdc = CreateCompatibleDC(NULL);
auto font = CreateFont(0, 0, 0, 0,
FW_NORMAL, FALSE, FALSE, FALSE,
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH,
font_name);
SelectObject(hdc, font);
auto num_bytes = GetFontData(hdc, 0, 0, NULL, 0);
std::vector<unsigned char> font_data(num_bytes);
auto result = GetFontData(hdc, 0, 0, &(font_data[0]), num_bytes);
DeleteDC(hdc);
return font_data;
}
int main()
{
auto font_data = GetFontDataByName(L"Times New Roman");
return 0;
}