Top |
Win32 Fonts and RenderingWin32 Fonts and Rendering — Functions for shape engines to manipulate Win32 fonts |
The macros and functions in this section are used to access fonts natively on Win32 systems and to render text in conjunction with Win32 APIs.
PangoContext *
pango_win32_get_context (void
);
pango_win32_get_context
has been deprecated since version 1.22 and should not be used in newly-written code.
Use pango_win32_font_map_for_display()
followed by
pango_font_map_create_context()
instead.
Retrieves a PangoContext appropriate for rendering with Windows fonts.
void pango_win32_render (HDC hdc
,PangoFont *font
,PangoGlyphString *glyphs
,gint x
,gint y
);
Render a PangoGlyphString onto a Windows DC
void pango_win32_render_transformed (HDC hdc
,const PangoMatrix *matrix
,PangoFont *font
,PangoGlyphString *glyphs
,int x
,int y
);
Renders a PangoGlyphString onto a windows DC, possibly
transforming the layed-out coordinates through a transformation
matrix. Note that the transformation matrix for font
is not
changed, so to produce correct rendering results, the font
must have been loaded using a PangoContext with an identical
transformation matrix to that passed in to this function.
hdc |
a windows device context |
|
matrix |
a PangoMatrix, or |
[nullable] |
font |
the font in which to draw the string |
|
glyphs |
the glyph string to draw |
|
x |
the x position of the start of the string (in Pango units in user space coordinates) |
|
y |
the y position of the baseline (in Pango units in user space coordinates) |
void pango_win32_render_layout_line (HDC hdc
,PangoLayoutLine *line
,int x
,int y
);
Render a PangoLayoutLine onto a device context. For underlining to work property the text alignment of the DC should have TA_BASELINE and TA_LEFT.
void pango_win32_render_layout (HDC hdc
,PangoLayout *layout
,int x
,int y
);
Render a PangoLayoutLine onto an X drawable
PangoGlyph pango_win32_get_unknown_glyph (PangoFont *font
,gunichar wc
);
pango_win32_get_unknown_glyph
is deprecated and should not be used in newly-written code.
Returns the index of a glyph suitable for drawing wc
as an
unknown character.
Use PANGO_GET_UNKNOWN_GLYPH()
instead.
gint pango_win32_font_get_glyph_index (PangoFont *font
,gunichar wc
);
pango_win32_font_get_glyph_index
is deprecated and should not be used in newly-written code.
Obtains the index of the glyph for wc
in font
, or 0, if not
covered.
gboolean pango_win32_font_select_font (PangoFont *font
,HDC hdc
);
Selects the font into the specified DC and changes the mapping mode
and world transformation of the DC appropriately for the font.
You may want to surround the use of this function with calls
to SaveDC()
and RestoreDC()
. Call pango_win32_font_done_font()
when
you are done using the DC to release allocated resources.
See pango_win32_font_get_metrics_factor()
for information about
converting from the coordinate space used by this function
into Pango units.
void
pango_win32_font_done_font (PangoFont *font
);
Releases any resources allocated by pango_win32_font_done_font()
double
pango_win32_font_get_metrics_factor (PangoFont *font
);
Returns the scale factor from logical units in the coordinate
space used by pango_win32_font_select_font()
to Pango units
in user space.
gboolean
pango_win32_get_debug_flag (void
);
Returns whether debugging is turned on.
Since: 1.2
HDC
pango_win32_get_dc (void
);
Obtains a handle to the Windows device context that is used by Pango.
PangoWin32FontCache *
pango_win32_font_cache_new (void
);
Creates a font cache.
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.
HFONT pango_win32_font_cache_load (PangoWin32FontCache *cache
,const LOGFONTA *logfont
);
Creates a HFONT from a LOGFONTA. The result may be newly loaded, or it may have been previously stored
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()
.
[nullable]
HFONT pango_win32_font_cache_loadw (PangoWin32FontCache *cache
,const LOGFONTW *logfont
);
Creates a HFONT from a LOGFONTW. The result may be newly loaded, or it may have been previously stored
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()
.
[nullable]
Since: 1.16
void pango_win32_font_cache_unload (PangoWin32FontCache *cache
,HFONT hfont
);
Frees a font structure previously loaded with pango_win32_font_cache_load()
.
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()
.
PangoWin32FontCache *
pango_win32_font_map_get_font_cache (PangoFontMap *font_map
);
Obtains the font cache associated with the given font map.
LOGFONTA *
pango_win32_font_logfont (PangoFont *font
);
Determine the LOGFONTA struct for the specified font. Note that
Pango internally uses LOGFONTW structs, so if converting the UTF-16
face name in the LOGFONTW struct to system codepage fails, the
returned LOGFONTA will have an emppty face name. To get the
LOGFONTW of a PangoFont, use pango_win32_font_logfontw()
. It
is recommended to do that always even if you don't expect
to come across fonts with odd names.
LOGFONTW *
pango_win32_font_logfontw (PangoFont *font
);
Determine the LOGFONTW struct for the specified font.
Since: 1.16
PangoFontDescription *
pango_win32_font_description_from_logfont
(const LOGFONTA *lfp
);
Creates a PangoFontDescription that matches the specified LOGFONTA.
The face name, italicness and weight fields in the LOGFONTA are used
to set up the resulting PangoFontDescription. If the face name in
the LOGFONTA contains non-ASCII characters the font is temporarily
loaded (using CreateFontIndirect()
) and an ASCII (usually English)
name for it is looked up from the font name tables in the font
data. If that doesn't work, the face name is converted from the
system codepage to UTF-8 and that is used.
the newly allocated PangoFontDescription, which
should be freed using pango_font_description_free()
Since: 1.12
PangoFontDescription *
pango_win32_font_description_from_logfontw
(const LOGFONTW *lfp
);
Creates a PangoFontDescription that matches the specified LOGFONTW.
The face name, italicness and weight fields in the LOGFONTW are used
to set up the resulting PangoFontDescription. If the face name in
the LOGFONTW contains non-ASCII characters the font is temporarily
loaded (using CreateFontIndirect()
) and an ASCII (usually English)
name for it is looked up from the font name tables in the font
data. If that doesn't work, the face name is converted from UTF-16
to UTF-8 and that is used.
the newly allocated PangoFontDescription, which
should be freed using pango_font_description_free()
Since: 1.16
#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()
.
typedef struct _PangoWin32FontCache PangoWin32FontCache;
A PangoWin32FontCache caches HFONTs by their LOGFONT descriptions.