Mercurial > hg > xemacs-beta
view src/font-mgr.h @ 5258:1ed4cefddd12
Add a couple of extra docstring backslashes, #'format-time-string
2010-09-05 Aidan Kehoe <kehoea@parhasard.net>
* editfns.c (Fformat_time_string):
Use two backslashes so that there is at least one present in the
output of describe function, when describing the Roman month
number syntax in this function's docstring. Thanks for provoking
me to look at this, Stephen Turnbull.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 05 Sep 2010 19:22:37 +0100 |
parents | a9c41067dd88 |
children | 308d34e9f07d |
line wrap: on
line source
/* Lisp font data structures for X and Xft. Copyright (C) 2003 Eric Knauel and Matthias Neubauer Copyright (C) 2005 Eric Knauel Copyright (C) 2004, 2005 Free Software Foundation, Inc. Authors: Eric Knauel <knauel@informatik.uni-tuebingen.de> Matthias Neubauer <neubauer@informatik.uni-freiburg.de> Stephen J. Turnbull <stephen@xemacs.org> Created: 27 Oct 2003 Updated: 05 Mar 2005 by Stephen J. Turnbull This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in GNU Emacs. */ /* This module provides the Lisp interface to fonts in X11, including Xft, but (at least at first) not GTK+ or Qt. It should be renamed to fonts-x.h. Sealevel code should be in ../lwlib/lwlib-fonts.h or ../lwlib/lwlib-colors.h. */ #ifndef INCLUDED_font_mgr_h_ #define INCLUDED_font_mgr_h_ #include "../lwlib/lwlib-fonts.h" #include "../lwlib/lwlib-colors.h" extern Fixnum debug_xft; /* Standard for fontconfig. Use a macro to show we're not guessing. */ #define Qfc_font_name_encoding Qutf_8 #define XE_XLFD_MAKE_LISP_STRING(s) (make_string(s, strlen(s))) struct fc_pattern { NORMAL_LISP_OBJECT_HEADER header; FcPattern *fcpatPtr; }; typedef struct fc_pattern fc_pattern; DECLARE_LISP_OBJECT(fc_pattern, struct fc_pattern); #define XFC_PATTERN(x) XRECORD (x, fc_pattern, struct fc_pattern) #define wrap_fc_pattern(p) wrap_record (p, fc_pattern) #define FC_PATTERNP(x) RECORDP (x, fc_pattern) #define CHECK_FC_PATTERN(x) CHECK_RECORD (x, fc_pattern) #define CONCHECK_FC_PATTERN(x) CONCHECK_RECORD (x, fc_pattern) #define XFC_PATTERN_PTR(x) (XFC_PATTERN(x)->fcpatPtr) #define FONTCONFIG_EXPOSE_CONFIG #ifdef FONTCONFIG_EXPOSE_CONFIG struct fc_config { NORMAL_LISP_OBJECT_HEADER header; FcConfig *fccfgPtr; }; typedef struct fc_config fc_config; DECLARE_LISP_OBJECT(fc_config, struct fc_config); #define XFC_CONFIG(x) XRECORD (x, fc_config, struct fc_config) #define wrap_fc_config(p) wrap_record (p, fc_config) #define FC_CONFIGP(x) RECORDP (x, fc_config) #define CHECK_FC_CONFIG(x) CHECK_RECORD (x, fc_config) #define CONCHECK_FC_CONFIG(x) CONCHECK_RECORD (x, fc_config) #define XFC_CONFIG_PTR(x) (XFC_CONFIG(x)->fccfgPtr) #endif /* FONTCONFIG_EXPOSE_CONFIG */ #ifdef HAVE_XFT #ifndef HAVE_FCCONFIGGETRESCANINTERVAL /* Older fontconfig versions misspell this function name. */ #define FcConfigGetRescanInterval FcConfigGetRescanInverval #endif /* */ #ifndef HAVE_FCCONFIGSETRESCANINTERVAL /* Older fontconfig versions misspell this function name. */ #define FcConfigSetRescanInterval FcConfigSetRescanInverval #endif /* */ /* The format of a fontname (as returned by fontconfig) is not well-documented, But the character repertoire is represented in an ASCII-compatible way. See fccharset.c (FcCharSetUnparse). So we can use UTF-8 for long names. Currently we have a hack where different versions of the unparsed name are used in different contexts fairly arbitrarily. I don't think this is close to coherency; even without the charset and lang properties fontconfig names are too unwieldy to use. We need to rethink the approach here. I think probably Lisp_Font_Instance.name should contain the font name as specified to Lisp (almost surely much shorter than shortname, even, and most likely wildcarded), while Lisp_Font_Instance.truename should contain the longname. For now, I'm going to #ifdef the return values defaulting to short. -- sjt */ /* DEBUGGING STUFF */ /* print message to stderr: one internal-format string argument */ #define DEBUG_XFT0(level,s) \ if (debug_xft > level) stderr_out (s) /* print message to stderr: one formatted argument */ #define DEBUG_XFT1(level,format,x1) \ if (debug_xft > level) stderr_out (format, x1) /* print message to stderr: two formatted arguments */ #define DEBUG_XFT2(level,format,x1,x2) \ if (debug_xft > level) stderr_out (format, x1, x2) /* print message to stderr: three formatted arguments */ #define DEBUG_XFT3(level,format,x1,x2,x3) \ if (debug_xft > level) stderr_out (format, x1, x2, x3) /* print message to stderr: four formatted arguments */ #define DEBUG_XFT4(level,format,x1,x2,x3,x4) \ if (debug_xft > level) stderr_out (format, x1, x2, x3, x4) /* print an Xft pattern to stderr LEVEL is the debug level (to compare to debug_xft) FORMAT is a newline-terminated printf format with one %s for the pattern and must be internal format (eg, pure ASCII) PATTERN is an FcPattern *. */ #define PRINT_XFT_PATTERN(level,format,pattern) \ do { \ DECLARE_EISTRING (eistrpxft_name); \ Extbyte *name = (Extbyte *) FcNameUnparse (pattern); \ \ eicpy_ext(eistrpxft_name, \ name ? name : "FONT WITH NULL NAME", \ Qfc_font_name_encoding); \ DEBUG_XFT1 (level, format, eidata(eistrpxft_name)); \ free (name); \ } while (0) /* print a progress message LEVEL is the debug level (to compare to debug_xft) FONT is the Xft font name in Mule internal encoding (from an eistring). LANG is the language being checked for support (must be ASCII). */ #define CHECKING_LANG(level,font,lang) \ do { \ DEBUG_XFT2 (level, "checking if %s handles %s\n", font, lang); \ } while (0) #else /* HAVE_XFT */ #endif /* HAVE_XFT */ #endif /* INCLUDED_font_mgr_h_ */