XFont - Get font name and file information






4.73/5 (13 votes)
XFont retrieves the name of the font file from the regsitry, and the font name from the font file
Introduction
XFont comprises two functions that are useful when trying to determine the name of the font file given the font name, and conversely when trying to find the font name from the font file. I have already introducedGetFontFile()
in a previous article. This article presents a new non-MFC version of GetFontFile()
and also GetFontProperties()
, which together allow you to find the name of the font or the name of the font file.
First, let me acknowledge the work of Philip Patrick, who researched the font file format to come up with GetFontProperties()
. I have taken his code and removed the MFC dependencies, added Unicode support, and converted the CFile file I/O to a memory-mapped file.
XFont Functions
- GetFontFile() - Find the name of font file.
/////////////////////////////////////////////////////////////////////////////// // // GetFontFile() // // Purpose: Find the name of font file from the font name // // Parameters: lpszFontName - name of font // lpszDisplayName - pointer to buffer where font display name // will be copied // nDisplayNameSize - size of display name buffer in TCHARs // lpszFontFile - pointer to buffer where font file name // will be copied // nFontFileSize - size of font file buffer in TCHARs // // Returns: BOOL - TRUE = success // // Notes: This is *not* a foolproof method for finding the name of a // font file. If a font has been installed in a normal manner, // and if it is in the Windows "Font" directory, then this method // will probably work. It will probably work for most screen // fonts and TrueType fonts. However, this method might not work // for fonts that are created or installed dynamically, or that // are specific to a particular device, or that are not installed // into the font directory. //
- GetFontProperties() - Get font name from font file.
/////////////////////////////////////////////////////////////////////////////// // // GetFontProperties() // // Purpose: Get font name from font file // // Parameters: lpszFilePath - file path of font file // lpFontPropsX - pointer to font properties struct // // Returns: BOOL - TRUE = success //
How To Use
To integrate XFont into your app, you first need to add following files to your project:
- XFont.cpp
- XFont.h
If you include XFont in project that uses precompiled headers, you must change C/C++ Precompiled Headers settings to Not using precompiled headers for XFont.cpp.
Next, include the header file XFont.h in appropriate project files. Now you are ready to start using XFont. The two XFont functions are demonstrated fully in the XFont demo app.
Demo App
The XFontTest.exe demo tests the APIs in XFont. Here is some of the output:
Revision History
Version 1.1 - 2003 May 21
- Removed MFC dependency from
GetFontProperties
- Converted
CFile
file I/O to memory mapped file - Added Unicode support
- Combined with my
GetFontFile
routine
Version 1.0
- Initial (separate) release of
GetFontFile
andGetFontProperties
Usage
This software is released into the public domain. You are free to use it in any way you like. If you modify it or extend it, please to consider posting new code here for everyone to share. This software is provided "as is" with no expressed or implied warranty. I accept no liability for any damage or loss of business that this software may cause.