Click here to Skip to main content
13,256,123 members (26,572 online)
Click here to Skip to main content
Add your own
alternative version


18 bookmarked
Posted 21 May 2003

XFont - Get font name and file information

, 21 May 2003
Rate this:
Please Sign up or sign in to vote.
XFont retrieves the name of the font file from the regsitry, and the font name from the font file


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 introduced GetFontFile() 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:

XFont screenshot

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 and GetFontProperties


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.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Hans Dietrich
Software Developer (Senior) Hans Dietrich Software
United States United States
I attended St. Michael's College of the University of Toronto, with the intention of becoming a priest. A friend in the University's Computer Science Department got me interested in programming, and I have been hooked ever since.

Recently, I have moved to Los Angeles where I am doing consulting and development work.

For consulting and custom software development, please see

You may also be interested in...

Comments and Discussions

GeneralMy vote of 4 Pin
brianbacon8-Jan-11 4:36
memberbrianbacon8-Jan-11 4:36 
GeneralXFont on Vista 64bits Pin
Mirco Babin1-Jul-09 2:40
memberMirco Babin1-Jul-09 2:40 
GeneralXFont on Vista Pin
shanem2-Oct-07 2:06
membershanem2-Oct-07 2:06 
QuestionCan I copy font data? Pin
dzungthenguyen@yahoo.com17-Jun-05 2:14
memberdzungthenguyen@yahoo.com17-Jun-05 2:14 
GeneralRegestry Path for Type 1 Fonts Pin
King Nak2-Mar-04 2:30
memberKing Nak2-Mar-04 2:30 
GeneralA little bug in the GetNextNameValue Pin
Zwer2k3-Dec-03 0:07
memberZwer2k3-Dec-03 0:07 
GeneralPostscript outline Opentype fonts Pin
rajendra chaturvedi29-Oct-03 7:27
sussrajendra chaturvedi29-Oct-03 7:27 
GeneralPostscript outline Opentype fonts Pin
rajendra chaturvedi29-Oct-03 7:27
memberrajendra chaturvedi29-Oct-03 7:27 
Questionttf font character set ??? Pin
Manikandan31-Aug-03 17:29
memberManikandan31-Aug-03 17:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.171114.1 | Last Updated 21 May 2003
Article Copyright 2003 by Hans Dietrich
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid