## PangoFcFontMap

PangoFcFontMap — Base fontmap class for Fontconfig-based backends

## Synopsis

    struct      PangoFcFontMap;
    struct      PangoFcFontMapClass;
    PangoFontDescription* pango_fc_font_description_from_pattern
                                                (FcPattern *pattern,
                                                 gboolean include_size);
    void        pango_fc_font_map_cache_clear   (PangoFcFontMap *fcfontmap);
    PangoContext* pango_fc_font_map_create_context
                                                (PangoFcFontMap *fcfontmap);
    void        pango_fc_font_map_shutdown      (PangoFcFontMap *fcfontmap);
    void        pango_fc_font_map_add_decoder_find_func
                                                (PangoFcFontMap *fcfontmap,
                                                 PangoFcDecoderFindFunc findfunc,
                                                 gpointer user_data,
                                                 GDestroyNotify dnotify);
    PangoFcDecoder* (*PangoFcDecoderFindFunc)   (FcPattern *pattern,
                                                 gpointer user_data);

## Object Hierarchy

      GObject
       +----PangoFontMap
             +----PangoFcFontMap
                   +----PangoFT2FontMap

## Description

PangoFcFontMap is a base class for font map implementations using the FontConfig and FreeType libraries. It is used in the Xft and FreeType backends shipped with Pango, but can also be used when creating new backends. Any backend deriving from this base class will take advantage of the wide range of shapers implemented using FreeType that come with Pango.

## Details

### struct PangoFcFontMap

    struct PangoFcFontMap;

PangoFcFontMap is a base class for font map implementations using the FontConfig and FreeType libraries. To create a new backend using Fontconfig and FreeType, you derive from this class and implement a `new_font()` virtual function that creates an instance deriving from PangoFcFont.

### struct PangoFcFontMapClass

    struct PangoFcFontMapClass {

      void         (*default_substitute) (PangoFcFontMap   *fontmap,
    			              FcPattern        *pattern);
      PangoFcFont  *(*new_font)          (PangoFcFontMap  *fontmap,
    			              FcPattern       *pattern);

    };

Class structure for PangoFcFontMap.

void (*`default_substitute`) (PangoFcFontMap *fontmap, FcPattern *pattern) | Substitutes in default values for unspecified fields in a FcPattern. This will be called prior to creating a font for the pattern. May be `NULL`.
PangoFcFont* (*`new_font`) (PangoFcFontMap *fontmap, FcPattern *pattern) | Creates a new PangoFcFont for the specified pattern of the appropriate type for this font map. The `pattern` argument must be passed to the "pattern" property of PangoFcFont when you call `g_object_new()`

### pango_fc_font_description_from_pattern ()

    PangoFontDescription* pango_fc_font_description_from_pattern
                                                (FcPattern *pattern,
                                                 gboolean include_size);

Creates a PangoFontDescription that matches the specified Fontconfig pattern as closely as possible. Many possible Fontconfig pattern values, such as `FC_RASTERIZER` or `FC_DPI`, don't make sense in the context of PangoFontDescription, so will be ignored.

`pattern` : | a FcPattern
`include_size` : | if `TRUE`, the pattern will include the size from the `pattern`; otherwise the resulting pattern will be unsized.
Returns : | a new PangoFontDescription. Free with `pango_font_description_free()`.

Since 1.4

### pango_fc_font_map_cache_clear ()

    void        pango_fc_font_map_cache_clear   (PangoFcFontMap *fcfontmap);

Clear all cached information and fontsets for this font map; this should be called whenever there is a change in the output of the `default_substitute()` virtual function.

This function is intended to be used only by backend implementations deriving from PangoFcFontmap.

`fcfontmap` : | a PangoFcFontmap

Since 1.4

### pango_fc_font_map_create_context ()

    PangoContext* pango_fc_font_map_create_context
                                                (PangoFcFontMap *fcfontmap);

Creates a new context for this fontmap. This function is intended only for backend implementations deriving from PangoFcFontmap; it is possible that a backend will store additional information needed for correct operation on the PangoContext after calling this function.

`fcfontmap` : | a PangoFcFontMap
Returns : | a new PangoContext

Since 1.4

### pango_fc_font_map_shutdown ()

    void        pango_fc_font_map_shutdown      (PangoFcFontMap *fcfontmap);

Clears all cached information for the fontmap and marks all fonts open for the fontmap as dead. (See the `shutdown()` virtual function of PangoFcFont.) This function might be used by a backend when the underlying windowing system for the font map exits. This function is only intended to be called from only for backend implementations deriving from PangoFcFontmap.

`fcfontmap` : | a PangoFcFontmap

Since 1.4

### pango_fc_font_map_add_decoder_find_func ()

    void        pango_fc_font_map_add_decoder_find_func
                                                (PangoFcFontMap *fcfontmap,
                                                 PangoFcDecoderFindFunc findfunc,
                                                 gpointer user_data,
                                                 GDestroyNotify dnotify);

This function saves a callback method in the PangoFcFontMap that will be called whenever new fonts are created. If the function returns a PangoFcDecoder, that decoder will be used to determine both coverage via a FcCharSet and a one-to-one mapping of characters to glyphs. This will allow applications to have application-specific encodings for various fonts.

`fcfontmap` : | The PangoFcFontMap to add this method to.
`findfunc` : | The PangoFcDecoderFindFunc callback function
`user_data` : | User data.
`dnotify` : | A GDestroyNotify callback that will be called when the fontmap is finalized and the decoder is released.

Since 1.6.

### PangoFcDecoderFindFunc ()

    PangoFcDecoder* (*PangoFcDecoderFindFunc)   (FcPattern *pattern,
                                                 gpointer user_data);

Callback function passed to `pango_fc_font_map_add_decoder_find_func()`.

`pattern` : | a fully resolved FcPattern specifying the font on the system
`user_data` : | user data passed to `pango_fc_font_map_add_decoder_find_func()`
Returns : | a new reference to a custom decoder for this pattern, or `NULL` if the default decoder handling should be used.

## See Also

PangoFcFont | The base class for fonts; creating a new Fontconfig-based backend involves deriving from both PangoFcFontMap and PangoFcFont.