wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了winapi – 在Windows上检索可用的字体大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

当我打开 Windows公共字体对话框时,它会为每种字体列出一堆大小.对于所有OpenType / TrueType字体,它具有相同的列表 – 9,10,11,12,14,16,18 …对于位图字体,列表根据可用位图而变化. “小字体”有2,3,4,5,6,7,而普通的Courier有10,12,15.我不知道,但我从以前的阅读中领先,相信即使对于TrueType字体,某些尺寸将被暗示并且看起来比
当我打开 Windows公共字体对话框时,它会为每种字体列出一堆大小.对于所有OpenType / TrueType字体,它具有相同的列表 – 9,10,11,12,14,16,18 …对于位图字体,列表根据可用位图而变化. “小字体”有2,3,4,5,6,7,而普通的Courier有10,15.我不知道,但我从以前的阅读中领先,相信即使对于TrueType字体,某些尺寸将被暗示并且看起来比所有其他尺寸更好,所以我可能还会看到一个尺寸更为有限的TrueType字体.

我正在我的应用程序中实现一个功能,Ctrl Mousewheel将在浏览器中上下调整字体大小.我想确定一个字体的可用大小列表,这样如果我目前的大小为12,我的应用程序知道对于Courier New,下一个合适的较大尺寸是14,而对于普通的Courier,它是15.

我该怎么做呢?

解决方法

有关如何枚举特定字体的字体/字体大小的说明,请参阅 here.请注意,TrueType字体可以以任何大小显示(而不仅仅是预定的字体),因为它们是基于矢量的.

int EnumFontSizes(char *fontName)
{
    LOGFONT logfont;

    ZeroMemory(&logfont,sizeof logfont);

    logfont.lfHeight = 0;
    logfont.lfCharSet = DEFAULT_CHARSET;
    logfont.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;

    lstrcpy(logfont.lfFacename,fontName);

    EnumFontFamiliesEx(hdc,&logfont,(FONTENUMPROC)FontSizesProc,0);

    return 0;
}

int CALLBACK FontSizesProc(
    LOGFONT *plf,/* pointer to logical-font data */
    TEXTMETRIC *ptm,/* pointer to physical-font data */
    DWORD FontType,/* font type */
    LPARAM lParam      /* pointer to application-defined data */
    )
{
    static int truetypesize[] = { 8,9,18,20,22,24,26,28,36,48,72 };

    int i;

    if(FontType != TRUETYPE_FONTTYPE)
    {
        int  logsize    = ptm->tmHeight - ptm->tmInternalLeading;
        long pointsize  = MulDiv(logsize,72,GetDeviceCaps(hdc,LOGPIXELSY));

        for(i = 0; i < cursize; i++)
            if(currentsizes[i] == pointsizE)
                return 1;

        printf("%d ",pointsizE);

        currentsizes[cursize] = pointsize;

        if(++cursize == 200) return 0;
        return 1;   
    }
    else
    {

        for(i = 0; i < (sizeof(truetypesizE) / sizeof(truetypesize[0])); i++)
        {
            printf("%d ",truetypesize[i]);
        }

        return 0;
    }
}
@H_489_40@

大佬总结

以上是大佬教程为你收集整理的winapi – 在Windows上检索可用的字体大小全部内容,希望文章能够帮你解决winapi – 在Windows上检索可用的字体大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。