65.9K
CodeProject 正在变化。 阅读更多。
Home

XFontCombo - 支持 OpenType 的字体组合框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (18投票s)

2003年5月27日

CPOL

2分钟阅读

viewsIcon

77903

downloadIcon

1753

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.cppC/C++ 预编译头 设置更改为 不使用预编译头

接下来,在适当的项目文件中包含头文件 IsOpenType.h。 现在您可以开始使用 IsOpenType() 了。

演示应用

XFontComboTest.exe 演示了如何使用 IsOpenType() 函数。 因为您可能只有字体名称(即,显示名称)而不是字体文件的名称,您可能还需要使用我的 GetFontFile() 函数。

作为一个测试平台,我使用了 Chris Losinger 出色的 Font Combo。 随着 IsOpenType() 的加入,您现在可以看到哪些字体是 OpenType。 为了比较,我还包括一个按钮来显示标准的 CFontDialog

XFontCombo screenshot

致谢

参考文献

修订历史

版本 1.0 - 2003 年 5 月 27 日

  • 首次公开发布。

用法

此软件发布到公共领域。 您可以随意使用它。 如果您修改或扩展它,请考虑在此处发布新代码以供所有人共享。 本软件按“原样”提供,不提供任何明示或暗示的保证。 我不承担本软件可能造成的任何损害或业务损失的责任。

© . All rights reserved.