Click here to Skip to main content
Click here to Skip to main content

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

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

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.

License

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 www.hdsoft.org.






Comments and Discussions

 
GeneralMy vote of 4 Pinmemberbrianbacon8-Jan-11 3:36 
GeneralXFont on Vista 64bits PinmemberMirco Babin1-Jul-09 1:40 
GeneralXFont on Vista Pinmembershanem2-Oct-07 1:06 
QuestionCan I copy font data? Pinmemberdzungthenguyen@yahoo.com17-Jun-05 1:14 
GeneralRegestry Path for Type 1 Fonts PinmemberKing Nak2-Mar-04 1:30 
GeneralA little bug in the GetNextNameValue PinmemberZwer2k2-Dec-03 23:07 
GeneralPostscript outline Opentype fonts Pinsussrajendra chaturvedi29-Oct-03 6:27 
GeneralPostscript outline Opentype fonts Pinmemberrajendra chaturvedi29-Oct-03 6:27 
Questionttf font character set ??? PinmemberManikandan31-Aug-03 16:29 

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

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

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