## Win32 Fonts and Rendering

Win32 Fonts and Rendering — Functions for shape engines to manipulate Win32 fonts

## Synopsis

    #define     PANGO_RENDER_TYPE_WIN32
    PangoContext* pango_win32_get_context       (void);
    void        pango_win32_render              (HDC hdc,
                                                 PangoFont *font,
                                                 PangoGlyphString *glyphs,
                                                 gint x,
                                                 gint y);
    void        pango_win32_render_layout_line  (HDC hdc,
                                                 PangoLayoutLine *line,
                                                 int x,
                                                 int y);
    void        pango_win32_render_layout       (HDC hdc,
                                                 PangoLayout *layout,
                                                 int x,
                                                 int y);
    PangoGlyph  pango_win32_get_unknown_glyph   (PangoFont *font,
                                                 gunichar wc);
    gint        pango_win32_font_get_glyph_index
                                                (PangoFont *font,
                                                 gunichar wc);
    gboolean    pango_win32_get_debug_flag      (void);
    HDC         pango_win32_get_dc              (void);
    struct      PangoWin32FontCache;
    PangoWin32FontCache* pango_win32_font_cache_new
                                                (void);
    void        pango_win32_font_cache_free     (PangoWin32FontCache *cache);
    HFONT       pango_win32_font_cache_load     (PangoWin32FontCache *cache,
                                                 const LOGFONT *logfont);
    void        pango_win32_font_cache_unload   (PangoWin32FontCache *cache,
                                                 HFONT hfont);
    PangoFontMap* pango_win32_font_map_for_display
                                                (void);
    void        pango_win32_shutdown_display    (void);
    PangoWin32FontCache* pango_win32_font_map_get_font_cache
                                                (PangoFontMap *font_map);
    LOGFONT*    pango_win32_font_logfont        (PangoFont *font);

## Description

## Details

### PANGO_RENDER_TYPE_WIN32

    #define PANGO_RENDER_TYPE_WIN32 "PangoRenderWin32"

A string constant identifying the Win32 renderer. The associated quark (see `g_quark_from_string()`) is used to identify the renderer in `pango_find_map()`.

### pango_win32_get_context ()

    PangoContext* pango_win32_get_context       (void);

Retrieves a PangoContext appropriate for rendering with Windows fonts.

Returns : | the new PangoContext

### pango_win32_render ()

    void        pango_win32_render              (HDC hdc,
                                                 PangoFont *font,
                                                 PangoGlyphString *glyphs,
                                                 gint x,
                                                 gint y);

Render a PangoGlyphString onto a Windows DC

`hdc` : | the device context
`font` : | the font in which to draw the string
`glyphs` : | the glyph string to draw
`x` : | the x position of start of string (in pixels)
`y` : | the y position of baseline (in pixels)

### pango_win32_render_layout_line ()

    void        pango_win32_render_layout_line  (HDC hdc,
                                                 PangoLayoutLine *line,
                                                 int x,
                                                 int y);

Render a PangoLayoutLine onto a device context

`hdc` : | HDC to use for uncolored drawing
`line` : | a PangoLayoutLine
`x` : | the x position of start of string (in pixels)
`y` : | the y position of baseline (in pixels)

### pango_win32_render_layout ()

    void        pango_win32_render_layout       (HDC hdc,
                                                 PangoLayout *layout,
                                                 int x,
                                                 int y);

Render a PangoLayoutLine onto an X drawable

`hdc` : | HDC to use for uncolored drawing
`layout` : | a PangoLayout
`x` : | the X position of the left of the layout (in pixels)
`y` : | the Y position of the top of the layout (in pixels)

### pango_win32_get_unknown_glyph ()

    PangoGlyph  pango_win32_get_unknown_glyph   (PangoFont *font,
                                                 gunichar wc);

Returns the index of a glyph suitable for drawing `wc` as an unknown character.

`font` : | a PangoFont
`wc` : | the Unicode character for which a glyph is needed.
Returns : | a glyph index into `font`

### pango_win32_font_get_glyph_index ()

    gint        pango_win32_font_get_glyph_index
                                                (PangoFont *font,
                                                 gunichar wc);

Obtains the index of the glyph for `wc` in `font`.

`font` : | a PangoFont.
`wc` : | a Unicode character.
Returns : | the glyph index for `wc`.

### pango_win32_get_debug_flag ()

    gboolean    pango_win32_get_debug_flag      (void);

Returns wether debugging is turned on.

Returns : | `TRUE` if debugging is turned on.

Since 1.2

### pango_win32_get_dc ()

    HDC         pango_win32_get_dc              (void);

Obtains a handle to the Windows device context that is used by Pango.

Returns : | A handle to the Windows device context that is used by Pango.

### struct PangoWin32FontCache

    struct PangoWin32FontCache;

A PangoWin32FontCache caches HFONTs by their LOGFONT descriptions.

### pango_win32_font_cache_new ()

    PangoWin32FontCache* pango_win32_font_cache_new
                                                (void);

Creates a font cache.

Returns : | The new font cache. This must be freed with `pango_win32_font_cache_free()`.

### pango_win32_font_cache_free ()

    void        pango_win32_font_cache_free     (PangoWin32FontCache *cache);

Frees a PangoWin32FontCache and all associated memory. All fonts loaded through this font cache will be freed along with the cache.

`cache` : | a PangoWin32FontCache

### pango_win32_font_cache_load ()

    HFONT       pango_win32_font_cache_load     (PangoWin32FontCache *cache,
                                                 const LOGFONT *logfont);

Creates a HFONT from a LOGFONT. The result may be newly loaded, or it may have been previously stored

`cache` : | a PangoWin32FontCache
`logfont` : | a pointer to a LOGFONT structure describing the font to load.
Returns : | The font structure, or `NULL` if the font could not be loaded. In order to free this structure, you must call `pango_win32_font_cache_unload()`.

### pango_win32_font_cache_unload ()

    void        pango_win32_font_cache_unload   (PangoWin32FontCache *cache,
                                                 HFONT hfont);

Frees a font structure previously loaded with `pango_win32_font_cache_load()`.

`cache` : | a PangoWin32FontCache
`hfont` : | the HFONT to unload

### pango_win32_font_map_for_display ()

    PangoFontMap* pango_win32_font_map_for_display
                                                (void);

Returns a PangoWin32FontMap. Font maps are cached and should not be freed. If the font map is no longer needed, it can be released with `pango_win32_shutdown_display()`.

Returns : | a PangoFontMap.

### pango_win32_shutdown_display ()

    void        pango_win32_shutdown_display    (void);

Free cached resources.

### pango_win32_font_map_get_font_cache ()

    PangoWin32FontCache* pango_win32_font_map_get_font_cache
                                                (PangoFontMap *font_map);

Obtains the font cache associated with the given font map.

`font_map` : | a PangoWin32FontMap.
Returns : | the PangoWin32FontCache of `font_map`.

### pango_win32_font_logfont ()

    LOGFONT*    pango_win32_font_logfont        (PangoFont *font);

Determine the LOGFONT struct for the specified bfont.

`font` : | a PangoFont which must be from the Win32 backend
Returns : | A newly allocated LOGFONT struct. It must be freed with `g_free()`.