You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fw-daemon/vendor/github.com/gotk3/gotk3.old/pango/pango-font.go

707 lines
25 KiB

/*
* Copyright (c) 2015- terrak <terrak1975@gmail.com>
*
* This file originated from: http://www.terrak.net/
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
package pango
// #cgo pkg-config: pango
// #include <pango/pango.h>
// #include "pango.go.h"
import "C"
import (
// "github.com/andre-hub/gotk3/glib"
// "github.com/andre-hub/gotk3/cairo"
"unsafe"
"github.com/gotk3/gotk3/glib"
)
func init() {
tm := []glib.TypeMarshaler{
// Enums
// Objects/Interfaces
{glib.Type(C.pango_font_description_get_type()), marshalFontDescription},
}
glib.RegisterGValueMarshalers(tm)
}
// FontDescription is a representation of PangoFontDescription.
type FontDescription struct {
pangoFontDescription *C.PangoFontDescription
}
// Native returns a pointer to the underlying PangoLayout.
func (v *FontDescription) Native() uintptr {
return uintptr(unsafe.Pointer(v.native()))
}
func (v *FontDescription) native() *C.PangoFontDescription {
return (*C.PangoFontDescription)(unsafe.Pointer(v.pangoFontDescription))
}
// FontMetrics is a representation of PangoFontMetrics.
type FontMetrics struct {
pangoFontMetrics *C.PangoFontMetrics
}
// Native returns a pointer to the underlying PangoLayout.
func (v *FontMetrics) Native() uintptr {
return uintptr(unsafe.Pointer(v.native()))
}
func (v *FontMetrics) native() *C.PangoFontMetrics {
return (*C.PangoFontMetrics)(unsafe.Pointer(v.pangoFontMetrics))
}
const (
PANGO_SCALE = C.PANGO_SCALE
)
type Style int
const (
STYLE_NORMAL Style = C.PANGO_STYLE_NORMAL
STYLE_OBLIQUE Style = C.PANGO_STYLE_OBLIQUE
STYLE_ITALIC Style = C.PANGO_STYLE_ITALIC
)
type Variant int
const (
VARIANT_NORMAL Variant = C.PANGO_VARIANT_NORMAL
VARIANT_SMALL_CAPS Variant = C.PANGO_VARIANT_SMALL_CAPS
)
type Weight int
const (
WEIGHT_THIN Weight = C.PANGO_WEIGHT_THIN /* 100 */
WEIGHT_ULTRALIGHT Weight = C.PANGO_WEIGHT_ULTRALIGHT /* 200 */
WEIGHT_LIGHT Weight = C.PANGO_WEIGHT_LIGHT /* 300 */
WEIGHT_SEMILIGHT Weight = 350 /* 350 */
WEIGHT_BOOK Weight = C.PANGO_WEIGHT_BOOK /* 380 */
WEIGHT_NORMAL Weight = C.PANGO_WEIGHT_NORMAL /* 400 */
WEIGHT_MEDIUM Weight = C.PANGO_WEIGHT_MEDIUM /* 500 */
WEIGHT_SEMIBOLD Weight = C.PANGO_WEIGHT_SEMIBOLD /* 600 */
WEIGHT_BOLD Weight = C.PANGO_WEIGHT_BOLD /* 700 */
WEIGHT_ULTRABOLD Weight = C.PANGO_WEIGHT_ULTRABOLD /* 800 */
WEIGHT_HEAVY Weight = C.PANGO_WEIGHT_HEAVY /* 900 */
WEIGHT_ULTRAHEAVY Weight = C.PANGO_WEIGHT_ULTRAHEAVY /* 1000 */
)
type Stretch int
const (
STRETCH_ULTRA_CONDENSED Stretch = C.PANGO_STRETCH_ULTRA_CONDENSED
STRETCH_EXTRA_CONDENSEDStretch Stretch = C.PANGO_STRETCH_EXTRA_CONDENSED
STRETCH_CONDENSEDStretch Stretch = C.PANGO_STRETCH_CONDENSED
STRETCH_SEMI_CONDENSEDStretch Stretch = C.PANGO_STRETCH_SEMI_CONDENSED
STRETCH_NORMALStretch Stretch = C.PANGO_STRETCH_NORMAL
STRETCH_SEMI_EXPANDEDStretch Stretch = C.PANGO_STRETCH_SEMI_EXPANDED
STRETCH_EXPANDEDStretch Stretch = C.PANGO_STRETCH_EXPANDED
STRETCH_EXTRA_EXPANDEDStretch Stretch = C.PANGO_STRETCH_EXTRA_EXPANDED
STRETCH_ULTRA_EXPANDEDStretch Stretch = C.PANGO_STRETCH_ULTRA_EXPANDED
)
type FontMask int
const (
FONT_MASK_FAMILY FontMask = C.PANGO_FONT_MASK_FAMILY /* 1 << 0 */
FONT_MASK_STYLEFontMask FontMask = C.PANGO_FONT_MASK_STYLE /* 1 << 1 */
FONT_MASK_VARIANTFontMask FontMask = C.PANGO_FONT_MASK_VARIANT /* 1 << 2 */
FONT_MASK_WEIGHTFontMask FontMask = C.PANGO_FONT_MASK_WEIGHT /* 1 << 3 */
FONT_MASK_STRETCHFontMask FontMask = C.PANGO_FONT_MASK_STRETCH /* 1 << 4 */
FONT_MASK_SIZEFontMask FontMask = C.PANGO_FONT_MASK_SIZE /* 1 << 5 */
FONT_MASK_GRAVITYFontMask FontMask = C.PANGO_FONT_MASK_GRAVITY /* 1 << 6 */
)
type Scale float64
const (
SCALE_XX_SMALL Scale = /* C.PANGO_SCALE_XX_SMALL */ 0.5787037037037
SCALE_X_SMALL Scale = /*C.PANGO_SCALE_X_SMALL */ 0.6444444444444
SCALE_SMALL Scale = /*C.PANGO_SCALE_SMALL */ 0.8333333333333
SCALE_MEDIUM Scale = /*C.PANGO_SCALE_MEDIUM */ 1.0
SCALE_LARGE Scale = /*C.PANGO_SCALE_LARGE */ 1.2
SCALE_X_LARGE Scale = /*C.PANGO_SCALE_X_LARGE */ 1.4399999999999
SCALE_XX_LARGE Scale = /*C.PANGO_SCALE_XX_LARGE */ 1.728
)
/*
* PangoFontDescription
*/
func marshalFontDescription(p uintptr) (interface{}, error) {
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
c2 := (*C.PangoFontDescription)(unsafe.Pointer(c))
return wrapFontDescription(c2), nil
}
func wrapFontDescription(obj *C.PangoFontDescription) *FontDescription {
return &FontDescription{obj}
}
//PangoFontDescription *pango_font_description_new (void);
func FontDescriptionNew() *FontDescription {
c := C.pango_font_description_new()
v := new(FontDescription)
v.pangoFontDescription = c
return v
}
//PangoFontDescription *pango_font_description_copy (const PangoFontDescription *desc);
func (v *FontDescription) Copy() *FontDescription {
c := C.pango_font_description_copy(v.native())
v2 := new(FontDescription)
v2.pangoFontDescription = c
return v2
}
//PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription *desc);
func (v *FontDescription) CopyStatic() *FontDescription {
c := C.pango_font_description_copy_static(v.native())
v2 := new(FontDescription)
v2.pangoFontDescription = c
return v2
}
//guint pango_font_description_hash (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) Hash() uint {
c := C.pango_font_description_hash(v.native())
return uint(c)
}
//gboolean pango_font_description_equal (const PangoFontDescription *desc1,
// const PangoFontDescription *desc2) G_GNUC_PURE;
func (v *FontDescription) Equal(v2 *FontDescription) bool {
c := C.pango_font_description_equal(v.native(), v2.native())
return gobool(c)
}
//void pango_font_description_free (PangoFontDescription *desc);
func (v *FontDescription) Free() {
C.pango_font_description_free(v.native())
}
//void pango_font_descriptions_free (PangoFontDescription **descs,
// int n_descs);
//func (v *FontDescription) FontDescriptionsFree(n_descs int) {
// C.pango_font_descriptions_free(v.native(), C.int(n_descs))
//}
//void pango_font_description_set_family (PangoFontDescription *desc,
// const char *family);
func (v *FontDescription) SetFamily(family string) {
cstr := C.CString(family)
defer C.free(unsafe.Pointer(cstr))
C.pango_font_description_set_family(v.native(), (*C.char)(cstr))
}
//void pango_font_description_set_family_static (PangoFontDescription *desc,
// const char *family);
func (v *FontDescription) SetFamilyStatic(family string) {
cstr := C.CString(family)
defer C.free(unsafe.Pointer(cstr))
C.pango_font_description_set_family_static(v.native(), (*C.char)(cstr))
}
//const char *pango_font_description_get_family (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetFamily() string {
c := C.pango_font_description_get_family(v.native())
return C.GoString((*C.char)(c))
}
//void pango_font_description_set_style (PangoFontDescription *desc,
// PangoStyle style);
func (v *FontDescription) SetStyle(style Style) {
C.pango_font_description_set_style(v.native(), (C.PangoStyle)(style))
}
//PangoStyle pango_font_description_get_style (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetStyle() Style {
c := C.pango_font_description_get_style(v.native())
return Style(c)
}
//void pango_font_description_set_variant (PangoFontDescription *desc,
// PangoVariant variant);
//PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc) G_GNUC_PURE;
//void pango_font_description_set_weight (PangoFontDescription *desc,
// PangoWeight weight);
func (v *FontDescription) SetWeight(weight Weight) {
C.pango_font_description_set_weight(v.native(), (C.PangoWeight)(weight))
}
//PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetWeight() Weight {
c := C.pango_font_description_get_weight(v.native())
return Weight(c)
}
//void pango_font_description_set_stretch (PangoFontDescription *desc,
// PangoStretch stretch);
func (v *FontDescription) SetStretch(stretch Stretch) {
C.pango_font_description_set_stretch(v.native(), (C.PangoStretch)(stretch))
}
//PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetStretch() Stretch {
c := C.pango_font_description_get_stretch(v.native())
return Stretch(c)
}
//void pango_font_description_set_size (PangoFontDescription *desc,
// gint size);
func (v *FontDescription) SetSize(size int) {
C.pango_font_description_set_size(v.native(), (C.gint)(size))
}
//gint pango_font_description_get_size (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSize() int {
c := C.pango_font_description_get_size(v.native())
return int(c)
}
//void pango_font_description_set_absolute_size (PangoFontDescription *desc,
// double size);
func (v *FontDescription) SetAbsoluteSize(size float64) {
C.pango_font_description_set_absolute_size(v.native(), (C.double)(size))
}
//gboolean pango_font_description_get_size_is_absolute (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSizeIsAbsolute() bool {
c := C.pango_font_description_get_size_is_absolute(v.native())
return gobool(c)
}
//void pango_font_description_set_gravity (PangoFontDescription *desc,
// PangoGravity gravity);
func (v *FontDescription) SetGravity(gravity Gravity) {
C.pango_font_description_set_gravity(v.native(), (C.PangoGravity)(gravity))
}
//PangoGravity pango_font_description_get_gravity (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetGravity() Gravity {
c := C.pango_font_description_get_gravity(v.native())
return Gravity(c)
}
//PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSetFields() FontMask {
c := C.pango_font_description_get_set_fields(v.native())
return FontMask(c)
}
//void pango_font_description_unset_fields (PangoFontDescription *desc,
// PangoFontMask to_unset);
func (v *FontDescription) GetUnsetFields(to_unset FontMask) {
C.pango_font_description_unset_fields(v.native(), (C.PangoFontMask)(to_unset))
}
//void pango_font_description_merge (PangoFontDescription *desc,
// const PangoFontDescription *desc_to_merge,
// gboolean replace_existing);
func (v *FontDescription) Merge(desc_to_merge *FontDescription, replace_existing bool) {
C.pango_font_description_merge(v.native(), desc_to_merge.native(), gbool(replace_existing))
}
//void pango_font_description_merge_static (PangoFontDescription *desc,
// const PangoFontDescription *desc_to_merge,
// gboolean replace_existing);
func (v *FontDescription) MergeStatic(desc_to_merge *FontDescription, replace_existing bool) {
C.pango_font_description_merge_static(v.native(), desc_to_merge.native(), gbool(replace_existing))
}
//gboolean pango_font_description_better_match (const PangoFontDescription *desc,
// const PangoFontDescription *old_match,
// const PangoFontDescription *new_match) G_GNUC_PURE;
func (v *FontDescription) BetterMatch(old_match, new_match *FontDescription) bool {
c := C.pango_font_description_better_match(v.native(), old_match.native(), new_match.native())
return gobool(c)
}
//PangoFontDescription *pango_font_description_from_string (const char *str);
func FontDescriptionFromString(str string) *FontDescription {
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
c := C.pango_font_description_from_string((*C.char)(cstr))
v := new(FontDescription)
v.pangoFontDescription = c
return v
}
//char * pango_font_description_to_string (const PangoFontDescription *desc);
func (v *FontDescription) ToString() string {
c := C.pango_font_description_to_string(v.native())
return C.GoString((*C.char)(c))
}
//char * pango_font_description_to_filename (const PangoFontDescription *desc);
func (v *FontDescription) ToFilename() string {
c := C.pango_font_description_to_filename(v.native())
return C.GoString((*C.char)(c))
}
///*
// * PangoFontMetrics
// */
//
///**
// * PANGO_TYPE_FONT_METRICS:
// *
// * The #GObject type for #PangoFontMetrics.
// */
//#define PANGO_TYPE_FONT_METRICS (pango_font_metrics_get_type ())
//GType pango_font_metrics_get_type (void) G_GNUC_CONST;
//PangoFontMetrics *pango_font_metrics_ref (PangoFontMetrics *metrics);
//void pango_font_metrics_unref (PangoFontMetrics *metrics);
//int pango_font_metrics_get_ascent (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_descent (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_underline_position (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_underline_thickness (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_strikethrough_position (PangoFontMetrics *metrics) G_GNUC_PURE;
//int pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//PangoFontMetrics *pango_font_metrics_new (void);
//
//struct _PangoFontMetrics
//{
// guint ref_count;
//
// int ascent;
// int descent;
// int approximate_char_width;
// int approximate_digit_width;
// int underline_position;
// int underline_thickness;
// int strikethrough_position;
// int strikethrough_thickness;
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFontFamily
// */
//
///**
// * PANGO_TYPE_FONT_FAMILY:
// *
// * The #GObject type for #PangoFontFamily.
// */
///**
// * PANGO_FONT_FAMILY:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFontFamily.
// */
///**
// * PANGO_IS_FONT_FAMILY:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFontFamily.
// */
//#define PANGO_TYPE_FONT_FAMILY (pango_font_family_get_type ())
//#define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily))
//#define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY))
//
//typedef struct _PangoFontFamily PangoFontFamily;
//typedef struct _PangoFontFace PangoFontFace;
//
//GType pango_font_family_get_type (void) G_GNUC_CONST;
//
//void pango_font_family_list_faces (PangoFontFamily *family,
// PangoFontFace ***faces,
// int *n_faces);
//const char *pango_font_family_get_name (PangoFontFamily *family) G_GNUC_PURE;
//gboolean pango_font_family_is_monospace (PangoFontFamily *family) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
//#define PANGO_IS_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FAMILY))
//#define PANGO_FONT_FAMILY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
//
//typedef struct _PangoFontFamilyClass PangoFontFamilyClass;
//
//
///**
// * PangoFontFamily:
// *
// * The #PangoFontFamily structure is used to represent a family of related
// * font faces. The faces in a family share a common design, but differ in
// * slant, weight, width and other aspects.
// */
//struct _PangoFontFamily
//{
// GObject parent_instance;
//};
//
//struct _PangoFontFamilyClass
//{
// GObjectClass parent_class;
//
// /*< public >*/
//
// void (*list_faces) (PangoFontFamily *family,
// PangoFontFace ***faces,
// int *n_faces);
// const char * (*get_name) (PangoFontFamily *family);
// gboolean (*is_monospace) (PangoFontFamily *family);
//
// /*< private >*/
//
// /* Padding for future expansion */
// void (*_pango_reserved2) (void);
// void (*_pango_reserved3) (void);
// void (*_pango_reserved4) (void);
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFontFace
// */
//
///**
// * PANGO_TYPE_FONT_FACE:
// *
// * The #GObject type for #PangoFontFace.
// */
///**
// * PANGO_FONT_FACE:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFontFace.
// */
///**
// * PANGO_IS_FONT_FACE:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFontFace.
// */
//#define PANGO_TYPE_FONT_FACE (pango_font_face_get_type ())
//#define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace))
//#define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE))
//
//GType pango_font_face_get_type (void) G_GNUC_CONST;
//
//PangoFontDescription *pango_font_face_describe (PangoFontFace *face);
//const char *pango_font_face_get_face_name (PangoFontFace *face) G_GNUC_PURE;
//void pango_font_face_list_sizes (PangoFontFace *face,
// int **sizes,
// int *n_sizes);
//gboolean pango_font_face_is_synthesized (PangoFontFace *face) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
//#define PANGO_IS_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FACE))
//#define PANGO_FONT_FACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
//
//typedef struct _PangoFontFaceClass PangoFontFaceClass;
//
///**
// * PangoFontFace:
// *
// * The #PangoFontFace structure is used to represent a group of fonts with
// * the same family, slant, weight, width, but varying sizes.
// */
//struct _PangoFontFace
//{
// GObject parent_instance;
//};
//
//struct _PangoFontFaceClass
//{
// GObjectClass parent_class;
//
// /*< public >*/
//
// const char * (*get_face_name) (PangoFontFace *face);
// PangoFontDescription * (*describe) (PangoFontFace *face);
// void (*list_sizes) (PangoFontFace *face,
// int **sizes,
// int *n_sizes);
// gboolean (*is_synthesized) (PangoFontFace *face);
//
// /*< private >*/
//
// /* Padding for future expansion */
// void (*_pango_reserved3) (void);
// void (*_pango_reserved4) (void);
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFont
// */
//
///**
// * PANGO_TYPE_FONT:
// *
// * The #GObject type for #PangoFont.
// */
///**
// * PANGO_FONT:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFont.
// */
///**
// * PANGO_IS_FONT:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFont.
// */
//#define PANGO_TYPE_FONT (pango_font_get_type ())
//#define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont))
//#define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT))
//
//GType pango_font_get_type (void) G_GNUC_CONST;
//
//PangoFontDescription *pango_font_describe (PangoFont *font);
//PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont *font);
//PangoCoverage * pango_font_get_coverage (PangoFont *font,
// PangoLanguage *language);
//PangoEngineShape * pango_font_find_shaper (PangoFont *font,
// PangoLanguage *language,
// guint32 ch);
//PangoFontMetrics * pango_font_get_metrics (PangoFont *font,
// PangoLanguage *language);
//void pango_font_get_glyph_extents (PangoFont *font,
// PangoGlyph glyph,
// PangoRectangle *ink_rect,
// PangoRectangle *logical_rect);
//PangoFontMap *pango_font_get_font_map (PangoFont *font);
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass))
//#define PANGO_IS_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT))
//#define PANGO_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT, PangoFontClass))
//
//typedef struct _PangoFontClass PangoFontClass;
//
///**
// * PangoFont:
// *
// * The #PangoFont structure is used to represent
// * a font in a rendering-system-independent matter.
// * To create an implementation of a #PangoFont,
// * the rendering-system specific code should allocate
// * a larger structure that contains a nested
// * #PangoFont, fill in the <structfield>klass</structfield> member of
// * the nested #PangoFont with a pointer to
// * a appropriate #PangoFontClass, then call
// * pango_font_init() on the structure.
// *
// * The #PangoFont structure contains one member
// * which the implementation fills in.
// */
//struct _PangoFont
//{
// GObject parent_instance;
//};
//
//struct _PangoFontClass
//{
// GObjectClass parent_class;
//
// /*< public >*/
//
// PangoFontDescription *(*describe) (PangoFont *font);
// PangoCoverage * (*get_coverage) (PangoFont *font,
// PangoLanguage *lang);
// PangoEngineShape * (*find_shaper) (PangoFont *font,
// PangoLanguage *lang,
// guint32 ch);
// void (*get_glyph_extents) (PangoFont *font,
// PangoGlyph glyph,
// PangoRectangle *ink_rect,
// PangoRectangle *logical_rect);
// PangoFontMetrics * (*get_metrics) (PangoFont *font,
// PangoLanguage *language);
// PangoFontMap * (*get_font_map) (PangoFont *font);
// PangoFontDescription *(*describe_absolute) (PangoFont *font);
// /*< private >*/
//
// /* Padding for future expansion */
// void (*_pango_reserved1) (void);
// void (*_pango_reserved2) (void);
//};
//
///* used for very rare and miserable situtations that we cannot even
// * draw a hexbox
// */
//#define PANGO_UNKNOWN_GLYPH_WIDTH 10
//#define PANGO_UNKNOWN_GLYPH_HEIGHT 14
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///**
// * PANGO_GLYPH_EMPTY:
// *
// * The %PANGO_GLYPH_EMPTY macro represents a #PangoGlyph value that has a
// * special meaning, which is a zero-width empty glyph. This is useful for
// * example in shaper modules, to use as the glyph for various zero-width
// * Unicode characters (those passing pango_is_zero_width()).
// */
///**
// * PANGO_GLYPH_INVALID_INPUT:
// *
// * The %PANGO_GLYPH_INVALID_INPUT macro represents a #PangoGlyph value that has a
// * special meaning of invalid input. #PangoLayout produces one such glyph
// * per invalid input UTF-8 byte and such a glyph is rendered as a crossed
// * box.
// *
// * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG
// * on.
// *
// * Since: 1.20
// */
///**
// * PANGO_GLYPH_UNKNOWN_FLAG:
// *
// * The %PANGO_GLYPH_UNKNOWN_FLAG macro is a flag value that can be added to
// * a #gunichar value of a valid Unicode character, to produce a #PangoGlyph
// * value, representing an unknown-character glyph for the respective #gunichar.
// */
///**
// * PANGO_GET_UNKNOWN_GLYPH:
// * @wc: a Unicode character
// *
// * The way this unknown glyphs are rendered is backend specific. For example,
// * a box with the hexadecimal Unicode code-point of the character written in it
// * is what is done in the most common backends.
// *
// * Returns: a #PangoGlyph value that means no glyph was found for @wc.
// */
//#define PANGO_GLYPH_EMPTY ((PangoGlyph)0x0FFFFFFF)
//#define PANGO_GLYPH_INVALID_INPUT ((PangoGlyph)0xFFFFFFFF)
//#define PANGO_GLYPH_UNKNOWN_FLAG ((PangoGlyph)0x10000000)
//#define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG)
//
//