代码之家  ›  专栏  ›  技术社区  ›  Penachia

PDF FontDescriptor标志

  •  0
  • Penachia  · 技术社区  · 6 年前

    如何获取有关TrueType字体的信息,以便填写 PDF flags 在MFC应用程序中。

    在我的MFC应用程序中,我正在创建PDF并尝试嵌入用户选择的字体。我已经有了 OUTLINETEXTMETRIC 我的字体的结构,但我仍然不知道如何,例如,检查字体是否 衬线、符号或脚本。

    任何帮助都将不胜感激。
    感谢并抱歉我的英语。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Barmak Shemirani    6 年前

    OUTLINETEXTMETRIC otmTextMetrics 成员,显示音高和家庭 tmPitchAndFamily

    从…起 MSDN

    lfPitchAndFamily公司
    成员的第4位到第7位指定字体系列,可以是一个 以下值之一。

    FF_DECORATIVE
    FF_DONTCARE
    FF_MODERN
    FF_ROMAN
    FF_SCRIPT
    FF_SWISS
    

    lfPitchAndFamily 应该和使用 0xF0 要获取族构件,请执行以下操作:

    String family;
    OUTLINETEXTMETRIC otm = { sizeof(OUTLINETEXTMETRIC) };
    if(GetOutlineTextMetrics(hdc, otm.otmSize, &otm))
    {
        switch(otm.otmTextMetrics.tmPitchAndFamily & 0xF0)
        {
        case FF_ROMAN: family = "FF_ROMAN"; break;
        case FF_SWISS: family = "FF_SWISS"; break;
        case FF_MODERN: family = "FF_MODERN"; break;
        case FF_SCRIPT: family = "FF_SCRIPT"; break;
        case FF_DECORATIVE: family = "FF_DECORATIVE"; break;
        }
    }
    

    预期输出:

    "Arial": FF_SWISS
    "Times New Roman": FF_ROMAN
    "Old English Text MT": FF_SCRIPT