从字体名称获取 TrueType 字体 "post" table

Getting TrueType font "post" table from font name

我正在尝试从已安装的 TrueType 字体中提取 "post" table,我只知道它的名字。我怎样才能做到这一点?

我看过 GetFontData 函数,它似乎几乎完全符合我的要求,只是它从设备上下文当前加载的字体中获取字体数据。就我而言,虽然我没有设备上下文,但只有字体名称。
此外,我还看到类似的查询,例如 this,用于查找和检索整个字体文件,但这似乎不必要地低效和冗长,因为 Windows can 已经加载并解析了字体数据(正如我们在 GetFontData 中看到的那样)。此外,我不需要整个文件,只需要 "post" table。真的没有办法,只能自己实现吗?

可以 调用 GetFontData(...) 而无需 window 或 GUI,例如从命令行程序,只需动态创建一个虚拟设备上下文并在其中选择一种字体

#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;
}