⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pangoxft-font.c

📁 GTK+-2.0源码之pango-1.15.6.tar.gz
💻 C
📖 第 1 页 / 共 2 页
字号:
  if (ink_rect)    *ink_rect = extents->ink_rect;  if (logical_rect)    *logical_rect = extents->logical_rect;}static voidpango_xft_font_get_glyph_extents (PangoFont        *font,				  PangoGlyph        glyph,				  PangoRectangle   *ink_rect,				  PangoRectangle   *logical_rect){  PangoXftFont *xfont = (PangoXftFont *)font;  PangoFcFont *fcfont = PANGO_FC_FONT (font);  if (!fcfont->fontmap)		/* Display closed */    goto fallback;  if (glyph == PANGO_GLYPH_EMPTY)    {    fallback:      if (ink_rect)	ink_rect->x = ink_rect->width = ink_rect->y = ink_rect->height = 0;      if (logical_rect)	logical_rect->x = logical_rect->width = logical_rect->y = logical_rect->height = 0;      return;    }  if (glyph & PANGO_GLYPH_UNKNOWN_FLAG)    {      get_glyph_extents_missing (xfont, glyph, ink_rect, logical_rect);    }  else    {      if (!fcfont->is_transformed)	get_glyph_extents_xft (fcfont, glyph, ink_rect, logical_rect);      else	get_glyph_extents_raw (xfont, glyph, ink_rect, logical_rect);    }}static voidload_fallback_font (PangoXftFont *xfont){  PangoFcFont *fcfont = PANGO_FC_FONT (xfont);  Display *display;  int screen;  XftFont *xft_font;  gboolean size_is_absolute;  double size;  _pango_xft_font_map_get_info (fcfont->fontmap, &display, &screen);  size_is_absolute = pango_font_description_get_size_is_absolute (fcfont->description);  size = pango_font_description_get_size (fcfont->description) / PANGO_SCALE;  xft_font = XftFontOpen (display,  screen,			  FC_FAMILY, FcTypeString, "sans",			  size_is_absolute ? FC_PIXEL_SIZE : FC_SIZE, FcTypeDouble, size,			  NULL);  if (!xft_font)    {      g_warning ("Cannot open fallback font, nothing to do");      exit (1);    }  xfont->xft_font = xft_font;}static XftFont *xft_font_get_font (PangoFont *font){  PangoXftFont *xfont;  PangoFcFont *fcfont;  Display *display;  int screen;  xfont = (PangoXftFont *)font;  fcfont = (PangoFcFont *)font;  if (G_UNLIKELY (xfont->xft_font == NULL))    {      FcPattern *pattern = FcPatternDuplicate (fcfont->font_pattern);      FcPatternDel (pattern, FC_SPACING);      _pango_xft_font_map_get_info (fcfont->fontmap, &display, &screen);      xfont->xft_font = XftFontOpenPattern (display, pattern);      if (!xfont->xft_font)	{	  gchar *name = pango_font_description_to_string (fcfont->description);	  g_warning ("Cannot open font file for font %s", name);	  g_free (name);	  load_fallback_font (xfont);	}    }  return xfont->xft_font;}static FT_Facepango_xft_font_real_lock_face (PangoFcFont *font){  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);  return XftLockFace (xft_font);}static voidpango_xft_font_real_unlock_face (PangoFcFont *font){  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);  XftUnlockFace (xft_font);}static gbooleanpango_xft_font_real_has_char (PangoFcFont *font,			      gunichar     wc){  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);  return XftCharExists (NULL, xft_font, wc);}static guintpango_xft_font_real_get_glyph (PangoFcFont *font,			       gunichar     wc){  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);  return XftCharIndex (NULL, xft_font, wc);}static voidpango_xft_font_real_shutdown (PangoFcFont *fcfont){  PangoXftFont *xfont = PANGO_XFT_FONT (fcfont);  if (xfont->xft_font)    {      Display *display;      _pango_xft_font_map_get_info (fcfont->fontmap, &display, NULL);      XftFontClose (display, xfont->xft_font);      xfont->xft_font = NULL;    }}/** * pango_xft_font_get_font: * @font: a #PangoFont. * * Returns the XftFont of a font. * * Return value: the XftFont associated to @font. **/XftFont *pango_xft_font_get_font (PangoFont *font){  if (G_UNLIKELY (!PANGO_XFT_IS_FONT (font)))    {      if (!_pango_xft_warning_history.get_font)	{	  _pango_xft_warning_history.get_font = TRUE;	  g_warning ("pango_xft_font_get_font called with bad font, expect ugly output");	}      return NULL;    }  return xft_font_get_font (font);}/** * pango_xft_font_get_display: * @font: a #PangoFont. * * Returns the X display of the XftFont of a font. * * Return value: the X display of the XftFont associated to @font. **/Display *pango_xft_font_get_display (PangoFont *font){  PangoFcFont *fcfont;  Display *display;  g_return_val_if_fail (PANGO_XFT_IS_FONT (font), NULL);  fcfont = PANGO_FC_FONT (font);  _pango_xft_font_map_get_info (fcfont->fontmap, &display, NULL);  return display;}/** * pango_xft_font_get_unknown_glyph: * @font: a #PangoFont. * @wc: the Unicode character for which a glyph is needed. * * Returns the index of a glyph suitable for drawing @wc as an * unknown character. * * Use PANGO_GET_UNKNOWN_GLYPH() instead. * * Return value: a glyph index into @font. **/PangoGlyphpango_xft_font_get_unknown_glyph (PangoFont *font,				  gunichar   wc){  g_return_val_if_fail (PANGO_XFT_IS_FONT (font), PANGO_GLYPH_EMPTY);  return pango_fc_font_get_unknown_glyph (PANGO_FC_FONT (font), wc);}/** * pango_xft_font_lock_face: * @font: a #PangoFont. * * Gets the FreeType <type>FT_Face</type> associated with a font, * This face will be kept around until you call * pango_xft_font_unlock_face(). * * Use pango_fc_font_lock_face() instead. * * Return value: the FreeType <type>FT_Face</type> associated with @font. * * Since: 1.2 **/FT_Facepango_xft_font_lock_face (PangoFont *font){  g_return_val_if_fail (PANGO_XFT_IS_FONT (font), NULL);  return pango_fc_font_lock_face (PANGO_FC_FONT (font));}/** * pango_xft_font_unlock_face: * @font: a #PangoFont. * * Releases a font previously obtained with * pango_xft_font_lock_face(). * * Use pango_fc_font_unlock_face() instead. * * Since: 1.2 **/voidpango_xft_font_unlock_face (PangoFont *font){  g_return_if_fail (PANGO_XFT_IS_FONT (font));  pango_fc_font_unlock_face (PANGO_FC_FONT (font));}/** * pango_xft_font_get_glyph: * @font: a #PangoFont for the Xft backend * @wc: Unicode codepoint to look up * * Gets the glyph index for a given Unicode character * for @font. If you only want to determine * whether the font has the glyph, use pango_xft_font_has_char(). * * Use pango_fc_font_get_glyph() instead. * * Return value: the glyph index, or 0, if the Unicode *  character does not exist in the font. * * Since: 1.2 **/guintpango_xft_font_get_glyph (PangoFont *font,			  gunichar   wc){  g_return_val_if_fail (PANGO_XFT_IS_FONT (font), 0);  return pango_fc_font_get_glyph (PANGO_FC_FONT (font), wc);}/** * pango_xft_font_has_char: * @font: a #PangoFont for the Xft backend * @wc: Unicode codepoint to look up * * Determines whether @font has a glyph for the codepoint @wc. * * Use pango_fc_font_has_char() instead. * * Return value: %TRUE if @font has the requested codepoint. * * Since: 1.2 **/gbooleanpango_xft_font_has_char (PangoFont *font,			 gunichar   wc){  g_return_val_if_fail (PANGO_XFT_IS_FONT (font), 0);  return pango_fc_font_has_char (PANGO_FC_FONT (font), wc);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -