Skip to content

FreeType » Docs » Format-Specific API » Window FNT Files

# Window FNT Files

## Synopsis

This section contains the declaration of Windows FNT-specific functions.

## FT_WinFNT_ID_XXX

Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).

    #define FT_WinFNT_ID_CP1252    0
    #define FT_WinFNT_ID_DEFAULT   1
    #define FT_WinFNT_ID_SYMBOL    2
    #define FT_WinFNT_ID_MAC      77
    #define FT_WinFNT_ID_CP932   128
    #define FT_WinFNT_ID_CP949   129
    #define FT_WinFNT_ID_CP1361  130
    #define FT_WinFNT_ID_CP936   134
    #define FT_WinFNT_ID_CP950   136
    #define FT_WinFNT_ID_CP1253  161
    #define FT_WinFNT_ID_CP1254  162
    #define FT_WinFNT_ID_CP1258  163
    #define FT_WinFNT_ID_CP1255  177
    #define FT_WinFNT_ID_CP1256  178
    #define FT_WinFNT_ID_CP1257  186
    #define FT_WinFNT_ID_CP1251  204
    #define FT_WinFNT_ID_CP874   222
    #define FT_WinFNT_ID_CP1250  238
    #define FT_WinFNT_ID_OEM     255

A list of valid values for the `charset` byte in `FT_WinFNT_HeaderRec`. Exact mapping tables for the various ‘cpXXXX’ encodings (except for ‘cp1361’) can be found at ‘ftp://ftp.unicode.org/Public/’ in the `MAPPINGS/VENDORS/MICSFT/WINDOWS` subdirectory. ‘cp1361’ is roughly a superset of `MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT`.

#### values

FT_WinFNT_ID_DEFAULT | This is used for font enumeration and font creation as a ‘don't care’ value. Valid font files don't contain this value. When querying for information about the character set of the font that is currently selected into a specified device context, this return value (of the related Windows API) simply denotes failure.
FT_WinFNT_ID_SYMBOL | There is no known mapping table available.
FT_WinFNT_ID_MAC | Mac Roman encoding.

FT_WinFNT_ID_OEM

From Michael Poettgen <michael@poettgen.de>:

The ‘Windows Font Mapping’ article says that `FT_WinFNT_ID_OEM` is used for the charset of vector fonts, like `modern.fon`, `roman.fon`, and `script.fon` on Windows.

The ‘CreateFont’ documentation says: The `FT_WinFNT_ID_OEM` value specifies a character set that is operating-system dependent.

The ‘IFIMETRICS’ documentation from the ‘Windows Driver Development Kit’ says: This font supports an OEM-specific character set. The OEM character set is system dependent.

In general OEM, as opposed to ANSI (i.e., ‘cp1252’), denotes the second default codepage that most international versions of Windows have. It is one of the OEM codepages from

https://learn.microsoft.com/windows/win32/intl/code-page-identifiers ,

and is used for the ‘DOS boxes’, to support legacy applications. A German Windows version for example usually uses ANSI codepage 1252 and OEM codepage 850.

FT_WinFNT_ID_CP874 | A superset of Thai TIS 620 and ISO 8859-11.
FT_WinFNT_ID_CP932 | A superset of Japanese Shift-JIS (with minor deviations).
FT_WinFNT_ID_CP936 | A superset of simplified Chinese GB 2312-1980 (with different ordering and minor deviations).
FT_WinFNT_ID_CP949 | A superset of Korean Hangul KS C 5601-1987 (with different ordering and minor deviations).
FT_WinFNT_ID_CP950 | A superset of traditional Chinese Big 5 ETen (with different ordering and minor deviations).
FT_WinFNT_ID_CP1250 | A superset of East European ISO 8859-2 (with slightly different ordering).
FT_WinFNT_ID_CP1251 | A superset of Russian ISO 8859-5 (with different ordering).
FT_WinFNT_ID_CP1252 | ANSI encoding. A superset of ISO 8859-1.
FT_WinFNT_ID_CP1253 | A superset of Greek ISO 8859-7 (with minor modifications).
FT_WinFNT_ID_CP1254 | A superset of Turkish ISO 8859-9.
FT_WinFNT_ID_CP1255 | A superset of Hebrew ISO 8859-8 (with some modifications).
FT_WinFNT_ID_CP1256 | A superset of Arabic ISO 8859-6 (with different ordering).
FT_WinFNT_ID_CP1257 | A superset of Baltic ISO 8859-13 (with some deviations).
FT_WinFNT_ID_CP1258 | For Vietnamese. This encoding doesn't cover all necessary characters.
FT_WinFNT_ID_CP1361 | Korean (Johab).

## FT_WinFNT_HeaderRec

Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).

      typedef struct  FT_WinFNT_HeaderRec_
      {
        FT_UShort  version;
        FT_ULong   file_size;
        FT_Byte    copyright[60];
        FT_UShort  file_type;
        FT_UShort  nominal_point_size;
        FT_UShort  vertical_resolution;
        FT_UShort  horizontal_resolution;
        FT_UShort  ascent;
        FT_UShort  internal_leading;
        FT_UShort  external_leading;
        FT_Byte    italic;
        FT_Byte    underline;
        FT_Byte    strike_out;
        FT_UShort  weight;
        FT_Byte    charset;
        FT_UShort  pixel_width;
        FT_UShort  pixel_height;
        FT_Byte    pitch_and_family;
        FT_UShort  avg_width;
        FT_UShort  max_width;
        FT_Byte    first_char;
        FT_Byte    last_char;
        FT_Byte    default_char;
        FT_Byte    break_char;
        FT_UShort  bytes_per_row;
        FT_ULong   device_offset;
        FT_ULong   face_name_offset;
        FT_ULong   bits_pointer;
        FT_ULong   bits_offset;
        FT_Byte    reserved;
        FT_ULong   flags;
        FT_UShort  A_space;
        FT_UShort  B_space;
        FT_UShort  C_space;
        FT_UShort  color_table_offset;
        FT_ULong   reserved1[4];

      } FT_WinFNT_HeaderRec;

Windows FNT Header info.

## FT_WinFNT_Header

Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).

      typedef struct FT_WinFNT_HeaderRec_*  FT_WinFNT_Header;

A handle to an `FT_WinFNT_HeaderRec` structure.

## FT_Get_WinFNT_Header

Defined in FT_WINFONTS_H (freetype/ftwinfnt.h).

      FT_EXPORT( FT_Error )
      FT_Get_WinFNT_Header( FT_Face               face,
                            FT_WinFNT_HeaderRec  *aheader );

Retrieve a Windows FNT font info header.

#### input

face | A handle to the input face.

#### output

aheader | The WinFNT header.

#### return

FreeType error code. 0 means success.

#### note

This function only works with Windows FNT faces, returning an error otherwise.