Mercurial > hg > xemacs-beta
annotate src/font-mgr.h @ 5750:66d2f63df75f
Correct some spelling and formatting in behavior.el.
Mentioned in tracker issue 826, the third thing mentioned there (the file
name at the bottom of the file) had already been fixed.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea@parhasard.net>
* behavior.el:
(override-behavior):
Correct some spelling and formatting here, thank you Steven
Mitchell in tracker issue 826.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 05 Aug 2013 10:05:32 +0100 |
parents | 308d34e9f07d |
children | 15b0715c204d |
rev | line source |
---|---|
3354 | 1 /* Lisp font data structures for X and Xft. |
2 | |
3 Copyright (C) 2003 Eric Knauel and Matthias Neubauer | |
4 Copyright (C) 2005 Eric Knauel | |
5 Copyright (C) 2004, 2005 Free Software Foundation, Inc. | |
6 | |
7 Authors: Eric Knauel <knauel@informatik.uni-tuebingen.de> | |
8 Matthias Neubauer <neubauer@informatik.uni-freiburg.de> | |
9 Stephen J. Turnbull <stephen@xemacs.org> | |
10 Created: 27 Oct 2003 | |
11 Updated: 05 Mar 2005 by Stephen J. Turnbull | |
12 | |
13 This file is part of XEmacs. | |
14 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
15 XEmacs is free software: you can redistribute it and/or modify it |
3354 | 16 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
17 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
18 option) any later version. |
3354 | 19 |
20 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
23 for more details. | |
24 | |
25 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
26 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
3354 | 27 |
28 /* Synched up with: Not in GNU Emacs. */ | |
29 | |
30 /* This module provides the Lisp interface to fonts in X11, including Xft, | |
31 but (at least at first) not GTK+ or Qt. | |
32 | |
33 It should be renamed to fonts-x.h. | |
34 | |
35 Sealevel code should be in ../lwlib/lwlib-fonts.h or | |
36 ../lwlib/lwlib-colors.h. | |
37 */ | |
38 | |
39 | |
40 #ifndef INCLUDED_font_mgr_h_ | |
41 #define INCLUDED_font_mgr_h_ | |
42 | |
43 #include "../lwlib/lwlib-fonts.h" | |
44 #include "../lwlib/lwlib-colors.h" | |
45 | |
46 extern Fixnum debug_xft; | |
47 | |
48 /* Standard for fontconfig. Use a macro to show we're not guessing. */ | |
3360 | 49 #define Qfc_font_name_encoding Qutf_8 |
3354 | 50 |
51 #define XE_XLFD_MAKE_LISP_STRING(s) (make_string(s, strlen(s))) | |
52 | |
53 struct fc_pattern | |
54 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
55 NORMAL_LISP_OBJECT_HEADER header; |
3354 | 56 FcPattern *fcpatPtr; |
57 }; | |
58 | |
59 typedef struct fc_pattern fc_pattern; | |
60 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4758
diff
changeset
|
61 DECLARE_LISP_OBJECT(fc_pattern, struct fc_pattern); |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
62 #define XFC_PATTERN(x) XRECORD (x, fc_pattern, struct fc_pattern) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
63 #define wrap_fc_pattern(p) wrap_record (p, fc_pattern) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
64 #define FC_PATTERNP(x) RECORDP (x, fc_pattern) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
65 #define CHECK_FC_PATTERN(x) CHECK_RECORD (x, fc_pattern) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
66 #define CONCHECK_FC_PATTERN(x) CONCHECK_RECORD (x, fc_pattern) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
67 #define XFC_PATTERN_PTR(x) (XFC_PATTERN(x)->fcpatPtr) |
3354 | 68 |
3931 | 69 #define FONTCONFIG_EXPOSE_CONFIG |
70 #ifdef FONTCONFIG_EXPOSE_CONFIG | |
71 | |
72 struct fc_config | |
73 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
74 NORMAL_LISP_OBJECT_HEADER header; |
3931 | 75 FcConfig *fccfgPtr; |
76 }; | |
77 | |
78 typedef struct fc_config fc_config; | |
79 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4758
diff
changeset
|
80 DECLARE_LISP_OBJECT(fc_config, struct fc_config); |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
81 #define XFC_CONFIG(x) XRECORD (x, fc_config, struct fc_config) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
82 #define wrap_fc_config(p) wrap_record (p, fc_config) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
83 #define FC_CONFIGP(x) RECORDP (x, fc_config) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
84 #define CHECK_FC_CONFIG(x) CHECK_RECORD (x, fc_config) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
85 #define CONCHECK_FC_CONFIG(x) CONCHECK_RECORD (x, fc_config) |
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5125
diff
changeset
|
86 #define XFC_CONFIG_PTR(x) (XFC_CONFIG(x)->fccfgPtr) |
3931 | 87 |
88 #endif /* FONTCONFIG_EXPOSE_CONFIG */ | |
89 | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
4758
diff
changeset
|
90 #ifdef HAVE_XFT |
4328
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
91 |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
92 #ifndef HAVE_FCCONFIGGETRESCANINTERVAL |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
93 /* Older fontconfig versions misspell this function name. */ |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
94 #define FcConfigGetRescanInterval FcConfigGetRescanInverval |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
95 #endif /* */ |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
96 |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
97 #ifndef HAVE_FCCONFIGSETRESCANINTERVAL |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
98 /* Older fontconfig versions misspell this function name. */ |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
99 #define FcConfigSetRescanInterval FcConfigSetRescanInverval |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
100 #endif /* */ |
dfd878799ef0
Autoconfiscate the recent fontconfig spelling change.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3931
diff
changeset
|
101 |
3666 | 102 /* |
103 The format of a fontname (as returned by fontconfig) is not well-documented, | |
104 But the character repertoire is represented in an ASCII-compatible way. See | |
105 fccharset.c (FcCharSetUnparse). So we can use UTF-8 for long names. | |
106 | |
107 Currently we have a hack where different versions of the unparsed name are | |
108 used in different contexts fairly arbitrarily. I don't think this is close | |
109 to coherency; even without the charset and lang properties fontconfig names | |
110 are too unwieldy to use. We need to rethink the approach here. I think | |
111 probably Lisp_Font_Instance.name should contain the font name as specified | |
112 to Lisp (almost surely much shorter than shortname, even, and most likely | |
113 wildcarded), while Lisp_Font_Instance.truename should contain the longname. | |
114 For now, I'm going to #ifdef the return values defaulting to short. -- sjt | |
115 */ | |
116 | |
117 /* DEBUGGING STUFF */ | |
118 | |
119 /* print message to stderr: one internal-format string argument */ | |
120 #define DEBUG_XFT0(level,s) \ | |
121 if (debug_xft > level) stderr_out (s) | |
122 | |
123 /* print message to stderr: one formatted argument */ | |
124 #define DEBUG_XFT1(level,format,x1) \ | |
125 if (debug_xft > level) stderr_out (format, x1) | |
126 | |
127 /* print message to stderr: two formatted arguments */ | |
128 #define DEBUG_XFT2(level,format,x1,x2) \ | |
129 if (debug_xft > level) stderr_out (format, x1, x2) | |
130 | |
131 /* print message to stderr: three formatted arguments */ | |
132 #define DEBUG_XFT3(level,format,x1,x2,x3) \ | |
133 if (debug_xft > level) stderr_out (format, x1, x2, x3) | |
134 | |
135 /* print message to stderr: four formatted arguments */ | |
136 #define DEBUG_XFT4(level,format,x1,x2,x3,x4) \ | |
137 if (debug_xft > level) stderr_out (format, x1, x2, x3, x4) | |
138 | |
139 /* print an Xft pattern to stderr | |
140 LEVEL is the debug level (to compare to debug_xft) | |
141 FORMAT is a newline-terminated printf format with one %s for the pattern | |
142 and must be internal format (eg, pure ASCII) | |
143 PATTERN is an FcPattern *. */ | |
144 #define PRINT_XFT_PATTERN(level,format,pattern) \ | |
145 do { \ | |
146 DECLARE_EISTRING (eistrpxft_name); \ | |
4757
a23ac8f90a49
Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4328
diff
changeset
|
147 Extbyte *name = (Extbyte *) FcNameUnparse (pattern); \ |
3666 | 148 \ |
4757
a23ac8f90a49
Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4328
diff
changeset
|
149 eicpy_ext(eistrpxft_name, \ |
a23ac8f90a49
Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4328
diff
changeset
|
150 name ? name : "FONT WITH NULL NAME", \ |
a23ac8f90a49
Improve warning and error messages from Xft.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4328
diff
changeset
|
151 Qfc_font_name_encoding); \ |
3666 | 152 DEBUG_XFT1 (level, format, eidata(eistrpxft_name)); \ |
153 free (name); \ | |
154 } while (0) | |
155 | |
156 /* print a progress message | |
157 LEVEL is the debug level (to compare to debug_xft) | |
4758
75975fd0b7fc
Implement more of the fontconfig API.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4757
diff
changeset
|
158 FONT is the Xft font name in Mule internal encoding (from an eistring). |
3666 | 159 LANG is the language being checked for support (must be ASCII). */ |
160 #define CHECKING_LANG(level,font,lang) \ | |
161 do { \ | |
4758
75975fd0b7fc
Implement more of the fontconfig API.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4757
diff
changeset
|
162 DEBUG_XFT2 (level, "checking if %s handles %s\n", font, lang); \ |
3666 | 163 } while (0) |
164 | |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
4758
diff
changeset
|
165 #else /* HAVE_XFT */ |
3666 | 166 |
4916
a6c778975d7d
split USE_XFT into HAVE_XFT/USE_XFT
Ben Wing <ben@xemacs.org>
parents:
4758
diff
changeset
|
167 #endif /* HAVE_XFT */ |
3666 | 168 |
3354 | 169 #endif /* INCLUDED_font_mgr_h_ */ |