本帖最后由 梦寻简单 于 2024-3-25 20:55 编辑
来自于问答区的一个问题:https://bbs.125.la/thread-14815784-1-1.html。 调试输出 (判断字体是否存在 (“Avenir LT Pro 55 Roman”, “AvenirLTPro-Oblique”)) |
判断字体是否存在 | 逻辑型 | | |
字体名称 | 文本型 | | | | 字体全称 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hdc | 整数型 | | | lpLogfont | 整数型 | | | lfFaceName | 字节集 | | | ret | 整数型 | | | i | 整数型 | | |
lfFaceName = 编码_Ansi到Unicode (字体名称 )hdc = GetDC (0 )lpLogfont = LocalAlloc (64, 92 ) __set_byte (lpLogfont, 23, 1 ) 计次循环首 (取字节集长度 (lfFaceName ), i )__set_byte (lpLogfont, 28 + i - 1, lfFaceName [i ])计次循环尾 ()ret = EnumFontFamiliesExW (hdc, lpLogfont, 到整数 (&EnumFontFamProc ), 取变量数据地址 (字体全称 ), 0 )LocalFree (lpLogfont )ReleaseDC (0, hdc )返回 (选择 (ret = 0, 真, 假)) |
EnumFontFamProc | 整数型 | | |
lpelfe | 整数型 | | | | lpntme | 整数型 | | | | FontType | 整数型 | | | | lParam | 整数型 | | | |
字体全称 = 指针到文本 (lParam )如果真 (取文本长度 (字体全称 ) = 0 )返回 (0 )如果真 (编码_Unicode到Ansi (指针_到字节集W (lpelfe + 92 )) = 字体全称 ) 返回 (0 )返回 (1)
引用了精易模块,下载入口:https://bbs.125.la/forum-125-1.html。
文档参考:EnumFontFamiliesExW 函数 (wingdi.h) - Win32 apps | Microsoft Learn
|