XFontCombo - 支持 OpenType 的字体组合框






4.79/5 (18投票s)
XFontCombo 演示了 IsOpenType() 的使用,该函数用于确定字体是否为 OpenType
引言
我记得当我第一次在字体选择对话框中看到斜体的O出现时,我想“这可能是什么?是某种开源字体技术吗?” 然后我意识到我正在看微软的产品,所以我很快就断定它一定是别的东西。 事实上,我后来了解到O代表 OpenType,这是一种由微软和 Adobe 在 1996 年推出的通用字体格式,它结合了微软的 TrueType 和 Adobe 的 Type 1 字体技术。 你可以在这里了解更多关于 OpenType 的信息。当然,我的下一个问题是“你怎么知道它是不是 OpenType?” 答案在于深入研究字体文件。 感谢 Philip Patrick 的工作,很容易构建一个函数来确定字体是否为 OpenType。
IsOpenType() 函数
如果指定的字体文件是 OpenType,则IsOpenType()
返回 TRUE。 在内部,IsOpenType()
将字体文件读取为内存映射文件,并扫描字体文件的表以查找 OpenType 标记。///////////////////////////////////////////////////////////////////////////// // // IsOpenType() // // Purpose: Determine if font file is OpenType. // // Parameters: lpszFilePath - file path of font file // // Returns: BOOL - TRUE = font file is OpenType //
如何使用
要将 IsOpenType()
集成到您的应用程序中,您首先需要将以下文件添加到您的项目中
- IsOpenType.cpp
- IsOpenType.h
如果您在使用了预编译头的项目中包含 IsOpenType.cpp,您必须将 IsOpenType.cpp 的 C/C++ 预编译头 设置更改为 不使用预编译头。
接下来,在适当的项目文件中包含头文件 IsOpenType.h。 现在您可以开始使用 IsOpenType()
了。
演示应用
XFontComboTest.exe 演示了如何使用IsOpenType()
函数。 因为您可能只有字体名称(即,显示名称)而不是字体文件的名称,您可能还需要使用我的 GetFontFile()
函数。作为一个测试平台,我使用了 Chris Losinger 出色的 Font Combo。 随着 IsOpenType()
的加入,您现在可以看到哪些字体是 OpenType。 为了比较,我还包括一个按钮来显示标准的 CFontDialog。
致谢
- 从 TTF 文件检索字体名称 By Philip Patrick
- Font Combo By Chris Losinger
- XFont - 获取字体名称和文件信息 By Hans Dietrich
参考文献
修订历史
版本 1.0 - 2003 年 5 月 27 日
- 首次公开发布。
用法
此软件发布到公共领域。 您可以随意使用它。 如果您修改或扩展它,请考虑在此处发布新代码以供所有人共享。 本软件按“原样”提供,不提供任何明示或暗示的保证。 我不承担本软件可能造成的任何损害或业务损失的责任。