Mercurial > emacs
annotate src/fontset.c @ 53223:1fa5a4fc03e5 multi-tty-base
2003-11-30 Per Abrahamsen <abraham@dina.kvl.dk>
* cus-edit.el (custom-add-parent-links): Add documentation links
for parent, if the item has none of its own.
| author | Per Abrahamsen <abraham@dina.kvl.dk> |
|---|---|
| date | Tue, 02 Dec 2003 15:01:52 +0000 |
| parents | 8787289602d1 |
| children | b085f18ebcf0 |
| rev | line source |
|---|---|
| 17052 | 1 /* Fontset handler. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
2 Copyright (C) 1995, 1997, 2000 Electrotechnical Laboratory, JAPAN. |
|
18341
33e78cc7f058
Change copyright notices.
Richard M. Stallman <rms@gnu.org>
parents:
18192
diff
changeset
|
3 Licensed to the Free Software Foundation. |
| 17052 | 4 |
| 17071 | 5 This file is part of GNU Emacs. |
| 6 | |
| 7 GNU Emacs is free software; you can redistribute it and/or modify | |
| 8 it under the terms of the GNU General Public License as published by | |
| 9 the Free Software Foundation; either version 2, or (at your option) | |
| 10 any later version. | |
| 17052 | 11 |
| 17071 | 12 GNU Emacs is distributed in the hope that it will be useful, |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 GNU General Public License for more details. | |
| 17052 | 16 |
| 17071 | 17 You should have received a copy of the GNU General Public License |
| 18 along with GNU Emacs; see the file COPYING. If not, write to | |
| 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 20 Boston, MA 02111-1307, USA. */ | |
| 17052 | 21 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
22 /* #define FONTSET_DEBUG */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
23 |
| 17052 | 24 #include <config.h> |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
25 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
26 #ifdef FONTSET_DEBUG |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
27 #include <stdio.h> |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
28 #endif |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
29 |
| 17052 | 30 #include "lisp.h" |
| 28963 | 31 #include "buffer.h" |
| 17052 | 32 #include "charset.h" |
| 33 #include "ccl.h" | |
|
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30941
diff
changeset
|
34 #include "keyboard.h" |
|
23517
73f09e7bc96e
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
22719
diff
changeset
|
35 #include "frame.h" |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
36 #include "dispextern.h" |
| 17052 | 37 #include "fontset.h" |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
38 #include "window.h" |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
39 #ifdef HAVE_X_WINDOWS |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
40 #include "xterm.h" |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
41 #endif |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
42 #ifdef WINDOWSNT |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
43 #include "w32term.h" |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
44 #endif |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
45 #ifdef MAC_OS |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
46 #include "macterm.h" |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
47 #endif |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
48 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
49 #ifdef FONTSET_DEBUG |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
50 #undef xassert |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
51 #define xassert(X) do {if (!(X)) abort ();} while (0) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
52 #undef INLINE |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
53 #define INLINE |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
54 #endif |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
55 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
56 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
57 /* FONTSET |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
58 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
59 A fontset is a collection of font related information to give |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
60 similar appearance (style, size, etc) of characters. There are two |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
61 kinds of fontsets; base and realized. A base fontset is created by |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
62 new-fontset from Emacs Lisp explicitly. A realized fontset is |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
63 created implicitly when a face is realized for ASCII characters. A |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
64 face is also realized for multibyte characters based on an ASCII |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
65 face. All of the multibyte faces based on the same ASCII face |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
66 share the same realized fontset. |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
67 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
68 A fontset object is implemented by a char-table. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
69 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
70 An element of a base fontset is: |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
71 (INDEX . FONTNAME) or |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
72 (INDEX . (FOUNDRY . REGISTRY )) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
73 FONTNAME is a font name pattern for the corresponding character. |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
74 FOUNDRY and REGISTRY are respectively foundry and registry fields of |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
75 a font name for the corresponding character. INDEX specifies for |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
76 which character (or generic character) the element is defined. It |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
77 may be different from an index to access this element. For |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
78 instance, if a fontset defines some font for all characters of |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
79 charset `japanese-jisx0208', INDEX is the generic character of this |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
80 charset. REGISTRY is the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
81 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
82 An element of a realized fontset is FACE-ID which is a face to use |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
83 for displaying the corresponding character. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
84 |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
85 All single byte characters (ASCII and 8bit-unibyte) share the same |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
86 element in a fontset. The element is stored in the first element |
|
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
87 of the fontset. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
88 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
89 To access or set each element, use macros FONTSET_REF and |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
90 FONTSET_SET respectively for efficiency. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
91 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
92 A fontset has 3 extra slots. |
| 17052 | 93 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
94 The 1st slot is an ID number of the fontset. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
95 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
96 The 2nd slot is a name of the fontset. This is nil for a realized |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
97 face. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
98 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
99 The 3rd slot is a frame that the fontset belongs to. This is nil |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
100 for a default face. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
101 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
102 A parent of a base fontset is nil. A parent of a realized fontset |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
103 is a base fontset. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
104 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
105 All fontsets are recorded in Vfontset_table. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
106 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
107 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
108 DEFAULT FONTSET |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
109 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
110 There's a special fontset named `default fontset' which defines a |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
111 default fontname pattern. When a base fontset doesn't specify a |
|
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
112 font for a specific character, the corresponding value in the |
|
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
113 default fontset is used. The format is the same as a base fontset. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
114 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
115 The parent of a realized fontset created for such a face that has |
|
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
116 no fontset is the default fontset. |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
117 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
118 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
119 These structures are hidden from the other codes than this file. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
120 The other codes handle fontsets only by their ID numbers. They |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
121 usually use variable name `fontset' for IDs. But, in this file, we |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
122 always use variable name `id' for IDs, and name `fontset' for the |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
123 actual fontset objects. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
124 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
125 */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
126 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
127 /********** VARIABLES and FUNCTION PROTOTYPES **********/ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
128 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
129 extern Lisp_Object Qfont; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
130 Lisp_Object Qfontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
131 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
132 /* Vector containing all fontsets. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
133 static Lisp_Object Vfontset_table; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
134 |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
135 /* Next possibly free fontset ID. Usually this keeps the minimum |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
136 fontset ID not yet used. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
137 static int next_fontset_id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
138 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
139 /* The default fontset. This gives default FAMILY and REGISTRY of |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
140 font for each characters. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
141 static Lisp_Object Vdefault_fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
142 |
| 17052 | 143 Lisp_Object Vfont_encoding_alist; |
|
17112
5c48ff325655
(syms_of_fontset): Intern Qfontset. Declare new lisp
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
144 Lisp_Object Vuse_default_ascent; |
|
19282
09a1536debb4
(Vignore_relative_composition): New variable.
Kenichi Handa <handa@m17n.org>
parents:
19172
diff
changeset
|
145 Lisp_Object Vignore_relative_composition; |
|
19450
895dc2520755
(Valternate_fontname_alist): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19282
diff
changeset
|
146 Lisp_Object Valternate_fontname_alist; |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
147 Lisp_Object Vfontset_alias_alist; |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
148 Lisp_Object Vvertical_centering_font_regexp; |
| 17052 | 149 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
150 /* The following six are declarations of callback functions depending |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
151 on window system. See the comments in src/fontset.h for more |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
152 detail. */ |
| 17052 | 153 |
| 154 /* Return a pointer to struct font_info of font FONT_IDX of frame F. */ | |
|
20315
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
155 struct font_info *(*get_font_info_func) P_ ((FRAME_PTR f, int font_idx)); |
| 17052 | 156 |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
157 /* Return a list of font names which matches PATTERN. See the documentation |
|
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
158 of `x-list-fonts' for more details. */ |
|
23517
73f09e7bc96e
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
22719
diff
changeset
|
159 Lisp_Object (*list_fonts_func) P_ ((struct frame *f, |
|
73f09e7bc96e
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
22719
diff
changeset
|
160 Lisp_Object pattern, |
|
73f09e7bc96e
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
22719
diff
changeset
|
161 int size, |
|
73f09e7bc96e
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
22719
diff
changeset
|
162 int maxnames)); |
| 17052 | 163 |
| 164 /* Load a font named NAME for frame F and return a pointer to the | |
| 165 information of the loaded font. If loading is failed, return 0. */ | |
|
20315
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
166 struct font_info *(*load_font_func) P_ ((FRAME_PTR f, char *name, int)); |
| 17052 | 167 |
| 168 /* Return a pointer to struct font_info of a font named NAME for frame F. */ | |
|
20315
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
169 struct font_info *(*query_font_func) P_ ((FRAME_PTR f, char *name)); |
| 17052 | 170 |
| 171 /* Additional function for setting fontset or changing fontset | |
| 172 contents of frame F. */ | |
|
20315
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
173 void (*set_frame_fontset_func) P_ ((FRAME_PTR f, Lisp_Object arg, |
|
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
174 Lisp_Object oldval)); |
| 17052 | 175 |
|
21553
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
176 /* To find a CCL program, fs_load_font calls this function. |
|
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
177 The argument is a pointer to the struct font_info. |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
178 This function set the member `encoder' of the structure. */ |
|
21553
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
179 void (*find_ccl_program_func) P_ ((struct font_info *)); |
|
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
180 |
| 17052 | 181 /* Check if any window system is used now. */ |
|
20315
931b4ddf7966
Protoize functions declarations.
Andreas Schwab <schwab@suse.de>
parents:
19450
diff
changeset
|
182 void (*check_window_system_func) P_ ((void)); |
| 17052 | 183 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
184 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
185 /* Prototype declarations for static functions. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
186 static Lisp_Object fontset_ref P_ ((Lisp_Object, int)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
187 static void fontset_set P_ ((Lisp_Object, int, Lisp_Object)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
188 static Lisp_Object make_fontset P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
189 static int fontset_id_valid_p P_ ((int)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
190 static Lisp_Object fontset_pattern_regexp P_ ((Lisp_Object)); |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
191 static Lisp_Object font_family_registry P_ ((Lisp_Object, int)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
192 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
193 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
194 /********** MACROS AND FUNCTIONS TO HANDLE FONTSET **********/ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
195 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
196 /* Return the fontset with ID. No check of ID's validness. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
197 #define FONTSET_FROM_ID(id) AREF (Vfontset_table, id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
198 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
199 /* Macros to access special values of FONTSET. */ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
200 #define FONTSET_ID(fontset) XCHAR_TABLE (fontset)->extras[0] |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
201 #define FONTSET_NAME(fontset) XCHAR_TABLE (fontset)->extras[1] |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
202 #define FONTSET_FRAME(fontset) XCHAR_TABLE (fontset)->extras[2] |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
203 #define FONTSET_ASCII(fontset) XCHAR_TABLE (fontset)->contents[0] |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
204 #define FONTSET_BASE(fontset) XCHAR_TABLE (fontset)->parent |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
205 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
206 #define BASE_FONTSET_P(fontset) NILP (FONTSET_BASE(fontset)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
207 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
208 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
209 /* Return the element of FONTSET (char-table) at index C (character). */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
210 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
211 #define FONTSET_REF(fontset, c) fontset_ref (fontset, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
212 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
213 static Lisp_Object |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
214 fontset_ref (fontset, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
215 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
216 int c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
217 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
218 int charset, c1, c2; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
219 Lisp_Object elt, defalt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
220 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
221 if (SINGLE_BYTE_CHAR_P (c)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
222 return FONTSET_ASCII (fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
223 |
|
29011
b60861d6c1e0
(fontset_ref): Use SPLIT_CHAR instead of
Kenichi Handa <handa@m17n.org>
parents:
28971
diff
changeset
|
224 SPLIT_CHAR (c, charset, c1, c2); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
225 elt = XCHAR_TABLE (fontset)->contents[charset + 128]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
226 if (!SUB_CHAR_TABLE_P (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
227 return elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
228 defalt = XCHAR_TABLE (elt)->defalt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
229 if (c1 < 32 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
230 || (elt = XCHAR_TABLE (elt)->contents[c1], |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
231 NILP (elt))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
232 return defalt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
233 if (!SUB_CHAR_TABLE_P (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
234 return elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
235 defalt = XCHAR_TABLE (elt)->defalt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
236 if (c2 < 32 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
237 || (elt = XCHAR_TABLE (elt)->contents[c2], |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
238 NILP (elt))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
239 return defalt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
240 return elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
241 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
242 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
243 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
244 #define FONTSET_REF_VIA_BASE(fontset, c) fontset_ref_via_base (fontset, &c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
245 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
246 static Lisp_Object |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
247 fontset_ref_via_base (fontset, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
248 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
249 int *c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
250 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
251 int charset, c1, c2; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
252 Lisp_Object elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
253 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
254 if (SINGLE_BYTE_CHAR_P (*c)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
255 return FONTSET_ASCII (fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
256 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
257 elt = FONTSET_REF (FONTSET_BASE (fontset), *c); |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
258 if (NILP (elt) && ! EQ (fontset, Vdefault_fontset)) |
|
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
259 elt = FONTSET_REF (Vdefault_fontset, *c); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
260 if (NILP (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
261 return Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
262 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
263 *c = XINT (XCAR (elt)); |
|
29011
b60861d6c1e0
(fontset_ref): Use SPLIT_CHAR instead of
Kenichi Handa <handa@m17n.org>
parents:
28971
diff
changeset
|
264 SPLIT_CHAR (*c, charset, c1, c2); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
265 elt = XCHAR_TABLE (fontset)->contents[charset + 128]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
266 if (c1 < 32) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
267 return (SUB_CHAR_TABLE_P (elt) ? XCHAR_TABLE (elt)->defalt : elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
268 if (!SUB_CHAR_TABLE_P (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
269 return Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
270 elt = XCHAR_TABLE (elt)->contents[c1]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
271 if (c2 < 32) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
272 return (SUB_CHAR_TABLE_P (elt) ? XCHAR_TABLE (elt)->defalt : elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
273 if (!SUB_CHAR_TABLE_P (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
274 return Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
275 elt = XCHAR_TABLE (elt)->contents[c2]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
276 return elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
277 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
278 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
279 |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
280 /* Store into the element of FONTSET at index C the value NEWELT. */ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
281 #define FONTSET_SET(fontset, c, newelt) fontset_set(fontset, c, newelt) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
282 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
283 static void |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
284 fontset_set (fontset, c, newelt) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
285 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
286 int c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
287 Lisp_Object newelt; |
| 17052 | 288 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
289 int charset, code[3]; |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
290 Lisp_Object *elt; |
|
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
291 int i; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
292 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
293 if (SINGLE_BYTE_CHAR_P (c)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
294 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
295 FONTSET_ASCII (fontset) = newelt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
296 return; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
297 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
298 |
|
29011
b60861d6c1e0
(fontset_ref): Use SPLIT_CHAR instead of
Kenichi Handa <handa@m17n.org>
parents:
28971
diff
changeset
|
299 SPLIT_CHAR (c, charset, code[0], code[1]); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
300 code[2] = 0; /* anchor */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
301 elt = &XCHAR_TABLE (fontset)->contents[charset + 128]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
302 for (i = 0; code[i] > 0; i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
303 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
304 if (!SUB_CHAR_TABLE_P (*elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
305 *elt = make_sub_char_table (*elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
306 elt = &XCHAR_TABLE (*elt)->contents[code[i]]; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
307 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
308 if (SUB_CHAR_TABLE_P (*elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
309 XCHAR_TABLE (*elt)->defalt = newelt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
310 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
311 *elt = newelt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
312 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
313 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
314 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
315 /* Return a newly created fontset with NAME. If BASE is nil, make a |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
316 base fontset. Otherwise make a realized fontset whose parent is |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
317 BASE. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
318 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
319 static Lisp_Object |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
320 make_fontset (frame, name, base) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
321 Lisp_Object frame, name, base; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
322 { |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
323 Lisp_Object fontset; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
324 int size = ASIZE (Vfontset_table); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
325 int id = next_fontset_id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
326 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
327 /* Find a free slot in Vfontset_table. Usually, next_fontset_id is |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
328 the next available fontset ID. So it is expected that this loop |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
329 terminates quickly. In addition, as the last element of |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
330 Vfontset_table is always nil, we don't have to check the range of |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
331 id. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
332 while (!NILP (AREF (Vfontset_table, id))) id++; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
333 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
334 if (id + 1 == size) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
335 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
336 Lisp_Object tem; |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
337 int i; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
338 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
339 tem = Fmake_vector (make_number (size + 8), Qnil); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
340 for (i = 0; i < size; i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
341 AREF (tem, i) = AREF (Vfontset_table, i); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
342 Vfontset_table = tem; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
343 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
344 |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
345 fontset = Fmake_char_table (Qfontset, Qnil); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
346 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
347 FONTSET_ID (fontset) = make_number (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
348 FONTSET_NAME (fontset) = name; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
349 FONTSET_FRAME (fontset) = frame; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
350 FONTSET_BASE (fontset) = base; |
| 17052 | 351 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
352 AREF (Vfontset_table, id) = fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
353 next_fontset_id = id + 1; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
354 return fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
355 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
356 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
357 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
358 /* Return 1 if ID is a valid fontset id, else return 0. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
359 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
360 static INLINE int |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
361 fontset_id_valid_p (id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
362 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
363 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
364 return (id >= 0 && id < ASIZE (Vfontset_table) - 1); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
365 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
366 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
367 |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
368 /* Extract `family' and `registry' string from FONTNAME and a cons of |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
369 them. Actually, `family' may also contain `foundry', `registry' |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
370 may also contain `encoding' of FONTNAME. But, if FONTNAME doesn't |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
371 conform to XLFD nor explicitely specifies the other fields |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
372 (i.e. not using wildcard `*'), return FONTNAME. If FORCE is |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
373 nonzero, specifications of the other fields are ignored, and return |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
374 a cons as far as FONTNAME conform to XLFD. */ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
375 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
376 static Lisp_Object |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
377 font_family_registry (fontname, force) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
378 Lisp_Object fontname; |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
379 int force; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
380 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
381 Lisp_Object family, registry; |
|
46466
9629aca792bb
(font_family_registry, fs_query_fontset):
Ken Raeburn <raeburn@raeburn.org>
parents:
46440
diff
changeset
|
382 const char *p = SDATA (fontname); |
|
9629aca792bb
(font_family_registry, fs_query_fontset):
Ken Raeburn <raeburn@raeburn.org>
parents:
46440
diff
changeset
|
383 const char *sep[15]; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
384 int i = 0; |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
385 |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
386 while (*p && i < 15) |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
387 if (*p++ == '-') |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
388 { |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
389 if (!force && i >= 2 && i <= 11 && *p != '*' && p[1] != '-') |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
390 return fontname; |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
391 sep[i++] = p; |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
392 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
393 if (i != 14) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
394 return fontname; |
| 17052 | 395 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
396 family = make_unibyte_string (sep[0], sep[2] - 1 - sep[0]); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
397 registry = make_unibyte_string (sep[12], p - sep[12]); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
398 return Fcons (family, registry); |
| 17052 | 399 } |
| 400 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
401 |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
402 /********** INTERFACES TO xfaces.c and dispextern.h **********/ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
403 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
404 /* Return name of the fontset with ID. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
405 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
406 Lisp_Object |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
407 fontset_name (id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
408 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
409 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
410 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
411 fontset = FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
412 return FONTSET_NAME (fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
413 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
414 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
415 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
416 /* Return ASCII font name of the fontset with ID. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
417 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
418 Lisp_Object |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
419 fontset_ascii (id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
420 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
421 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
422 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
423 fontset= FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
424 elt = FONTSET_ASCII (fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
425 return XCDR (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
426 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
427 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
428 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
429 /* Free fontset of FACE. Called from free_realized_face. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
430 |
| 17052 | 431 void |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
432 free_face_fontset (f, face) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
433 FRAME_PTR f; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
434 struct face *face; |
| 17052 | 435 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
436 if (fontset_id_valid_p (face->fontset)) |
| 17052 | 437 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
438 AREF (Vfontset_table, face->fontset) = Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
439 if (face->fontset < next_fontset_id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
440 next_fontset_id = face->fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
441 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
442 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
443 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
444 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
445 /* Return 1 iff FACE is suitable for displaying character C. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
446 Otherwise return 0. Called from the macro FACE_SUITABLE_FOR_CHAR_P |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
447 when C is not a single byte character.. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
448 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
449 int |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
450 face_suitable_for_char_p (face, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
451 struct face *face; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
452 int c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
453 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
454 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
455 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
456 if (SINGLE_BYTE_CHAR_P (c)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
457 return (face == face->ascii_face); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
458 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
459 xassert (fontset_id_valid_p (face->fontset)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
460 fontset = FONTSET_FROM_ID (face->fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
461 xassert (!BASE_FONTSET_P (fontset)); |
| 17052 | 462 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
463 elt = FONTSET_REF_VIA_BASE (fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
464 return (!NILP (elt) && face->id == XFASTINT (elt)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
465 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
466 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
467 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
468 /* Return ID of face suitable for displaying character C on frame F. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
469 The selection of face is done based on the fontset of FACE. FACE |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
470 should already have been realized for ASCII characters. Called |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
471 from the macro FACE_FOR_CHAR when C is not a single byte character. */ |
| 17052 | 472 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
473 int |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
474 face_for_char (f, face, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
475 FRAME_PTR f; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
476 struct face *face; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
477 int c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
478 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
479 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
480 int face_id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
481 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
482 xassert (fontset_id_valid_p (face->fontset)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
483 fontset = FONTSET_FROM_ID (face->fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
484 xassert (!BASE_FONTSET_P (fontset)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
485 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
486 elt = FONTSET_REF_VIA_BASE (fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
487 if (!NILP (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
488 return XINT (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
489 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
490 /* No face is recorded for C in the fontset of FACE. Make a new |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
491 realized face for C that has the same fontset. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
492 face_id = lookup_face (f, face->lface, c, face); |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
493 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
494 /* Record the face ID in FONTSET at the same index as the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
495 information in the base fontset. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
496 FONTSET_SET (fontset, c, make_number (face_id)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
497 return face_id; |
| 17052 | 498 } |
| 499 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
500 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
501 /* Make a realized fontset for ASCII face FACE on frame F from the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
502 base fontset BASE_FONTSET_ID. If BASE_FONTSET_ID is -1, use the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
503 default fontset as the base. Value is the id of the new fontset. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
504 Called from realize_x_face. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
505 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
506 int |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
507 make_fontset_for_ascii_face (f, base_fontset_id) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
508 FRAME_PTR f; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
509 int base_fontset_id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
510 { |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
511 Lisp_Object base_fontset, fontset, frame; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
512 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
513 XSETFRAME (frame, f); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
514 if (base_fontset_id >= 0) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
515 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
516 base_fontset = FONTSET_FROM_ID (base_fontset_id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
517 if (!BASE_FONTSET_P (base_fontset)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
518 base_fontset = FONTSET_BASE (base_fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
519 xassert (BASE_FONTSET_P (base_fontset)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
520 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
521 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
522 base_fontset = Vdefault_fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
523 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
524 fontset = make_fontset (frame, Qnil, base_fontset); |
|
28511
7a9707590ccd
(make_fontset_for_ascii_face): Use XINT on return value.
Ken Raeburn <raeburn@raeburn.org>
parents:
28241
diff
changeset
|
525 return XINT (FONTSET_ID (fontset)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
526 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
527 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
528 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
529 /* Return the font name pattern for C that is recorded in the fontset |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
530 with ID. If a font name pattern is specified (instead of a cons of |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
531 family and registry), check if a font can be opened by that pattern |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
532 to get the fullname. If a font is opened, return that name. |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
533 Otherwise, return nil. If ID is -1, or the fontset doesn't contain |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
534 information about C, get the registry and encoding of C from the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
535 default fontset. Called from choose_face_font. */ |
|
18346
c46e9f750033
(font_idx_temp): New temprary variable used in FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18341
diff
changeset
|
536 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
537 Lisp_Object |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
538 fontset_font_pattern (f, id, c) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
539 FRAME_PTR f; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
540 int id, c; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
541 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
542 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
543 struct font_info *fontp; |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
544 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
545 elt = Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
546 if (fontset_id_valid_p (id)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
547 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
548 fontset = FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
549 xassert (!BASE_FONTSET_P (fontset)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
550 fontset = FONTSET_BASE (fontset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
551 elt = FONTSET_REF (fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
552 } |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
553 if (NILP (elt)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
554 elt = FONTSET_REF (Vdefault_fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
555 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
556 if (!CONSP (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
557 return Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
558 if (CONSP (XCDR (elt))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
559 return XCDR (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
560 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
561 /* The fontset specifies only a font name pattern (not cons of |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
562 family and registry). If a font can be opened by that pattern, |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
563 return the name of opened font. Otherwise return nil. The |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
564 exception is a font for single byte characters. In that case, we |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
565 return a cons of FAMILY and REGISTRY extracted from the opened |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
566 font name. */ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
567 elt = XCDR (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
568 xassert (STRINGP (elt)); |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
569 fontp = FS_LOAD_FONT (f, c, SDATA (elt), -1); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
570 if (!fontp) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
571 return Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
572 |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
573 return font_family_registry (build_string (fontp->full_name), |
|
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
574 SINGLE_BYTE_CHAR_P (c)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
575 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
576 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
577 |
|
40028
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
578 #if defined(WINDOWSNT) && defined (_MSC_VER) |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
579 #pragma optimize("", off) |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
580 #endif |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
581 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
582 /* Load a font named FONTNAME to display character C on frame F. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
583 Return a pointer to the struct font_info of the loaded font. If |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
584 loading fails, return NULL. If FACE is non-zero and a fontset is |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
585 assigned to it, record FACE->id in the fontset for C. If FONTNAME |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
586 is NULL, the name is taken from the fontset of FACE or what |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
587 specified by ID. */ |
| 17052 | 588 |
| 589 struct font_info * | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
590 fs_load_font (f, c, fontname, id, face) |
| 17052 | 591 FRAME_PTR f; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
592 int c; |
| 17052 | 593 char *fontname; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
594 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
595 struct face *face; |
| 17052 | 596 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
597 Lisp_Object fontset; |
| 17052 | 598 Lisp_Object list, elt; |
| 599 int size = 0; | |
| 600 struct font_info *fontp; | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
601 int charset = CHAR_CHARSET (c); |
| 17052 | 602 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
603 if (face) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
604 id = face->fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
605 if (id < 0) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
606 fontset = Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
607 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
608 fontset = FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
609 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
610 if (!NILP (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
611 && !BASE_FONTSET_P (fontset)) |
| 17052 | 612 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
613 elt = FONTSET_REF_VIA_BASE (fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
614 if (!NILP (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
615 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
616 /* A suitable face for C is already recorded, which means |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
617 that a proper font is already loaded. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
618 int face_id = XINT (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
619 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
620 xassert (face_id == face->id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
621 face = FACE_FROM_ID (f, face_id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
622 return (*get_font_info_func) (f, face->font_info_id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
623 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
624 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
625 if (!fontname && charset == CHARSET_ASCII) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
626 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
627 elt = FONTSET_ASCII (fontset); |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
628 fontname = SDATA (XCDR (elt)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
629 } |
| 17052 | 630 } |
| 631 | |
| 632 if (!fontname) | |
| 633 /* No way to get fontname. */ | |
| 634 return 0; | |
| 635 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
636 fontp = (*load_font_func) (f, fontname, size); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
637 if (!fontp) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
638 return 0; |
| 17052 | 639 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
640 /* Fill in members (charset, vertical_centering, encoding, etc) of |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
641 font_info structure that are not set by (*load_font_func). */ |
| 17052 | 642 fontp->charset = charset; |
| 643 | |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
644 fontp->vertical_centering |
|
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
645 = (STRINGP (Vvertical_centering_font_regexp) |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
646 && (fast_c_string_match_ignore_case |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
647 (Vvertical_centering_font_regexp, fontp->full_name) >= 0)); |
|
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
648 |
|
17999
5e325c8057c8
(fs_load_font): Before using a fontset, be sure to
Kenichi Handa <handa@m17n.org>
parents:
17882
diff
changeset
|
649 if (fontp->encoding[1] != FONT_ENCODING_NOT_DECIDED) |
| 17052 | 650 { |
| 651 /* The font itself tells which code points to be used. Use this | |
| 652 encoding for all other charsets. */ | |
| 653 int i; | |
| 654 | |
| 655 fontp->encoding[0] = fontp->encoding[1]; | |
|
17190
6637001cdb4b
Adjusted for the change of MAX_CHARSET.
Kenichi Handa <handa@m17n.org>
parents:
17112
diff
changeset
|
656 for (i = MIN_CHARSET_OFFICIAL_DIMENSION1; i <= MAX_CHARSET; i++) |
| 17052 | 657 fontp->encoding[i] = fontp->encoding[1]; |
| 658 } | |
| 659 else | |
| 660 { | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
661 /* The font itself doesn't have information about encoding. */ |
| 17052 | 662 int i; |
| 663 | |
|
28766
da7e00e4eaa6
(fs_load_font): By default, use 0x00..0x7f for ASCII.
Kenichi Handa <handa@m17n.org>
parents:
28676
diff
changeset
|
664 fontname = fontp->full_name; |
|
da7e00e4eaa6
(fs_load_font): By default, use 0x00..0x7f for ASCII.
Kenichi Handa <handa@m17n.org>
parents:
28676
diff
changeset
|
665 /* By default, encoding of ASCII chars is 0 (i.e. 0x00..0x7F), |
|
da7e00e4eaa6
(fs_load_font): By default, use 0x00..0x7f for ASCII.
Kenichi Handa <handa@m17n.org>
parents:
28676
diff
changeset
|
666 others is 1 (i.e. 0x80..0xFF). */ |
|
da7e00e4eaa6
(fs_load_font): By default, use 0x00..0x7f for ASCII.
Kenichi Handa <handa@m17n.org>
parents:
28676
diff
changeset
|
667 fontp->encoding[0] = 0; |
|
17190
6637001cdb4b
Adjusted for the change of MAX_CHARSET.
Kenichi Handa <handa@m17n.org>
parents:
17112
diff
changeset
|
668 for (i = MIN_CHARSET_OFFICIAL_DIMENSION1; i <= MAX_CHARSET; i++) |
| 17052 | 669 fontp->encoding[i] = 1; |
| 670 /* Then override them by a specification in Vfont_encoding_alist. */ | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
671 for (list = Vfont_encoding_alist; CONSP (list); list = XCDR (list)) |
| 17052 | 672 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
673 elt = XCAR (list); |
| 17052 | 674 if (CONSP (elt) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
675 && STRINGP (XCAR (elt)) && CONSP (XCDR (elt)) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
676 && (fast_c_string_match_ignore_case (XCAR (elt), fontname) |
| 17052 | 677 >= 0)) |
| 678 { | |
| 679 Lisp_Object tmp; | |
| 680 | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
681 for (tmp = XCDR (elt); CONSP (tmp); tmp = XCDR (tmp)) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
682 if (CONSP (XCAR (tmp)) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
683 && ((i = get_charset_id (XCAR (XCAR (tmp)))) |
| 17052 | 684 >= 0) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
685 && INTEGERP (XCDR (XCAR (tmp))) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
686 && XFASTINT (XCDR (XCAR (tmp))) < 4) |
| 17052 | 687 fontp->encoding[i] |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
688 = XFASTINT (XCDR (XCAR (tmp))); |
| 17052 | 689 } |
| 690 } | |
| 691 } | |
| 692 | |
|
52729
124a3516f4db
(fs_load_font): Don't set fontp->font_encoder to NULL
Kenichi Handa <handa@m17n.org>
parents:
52654
diff
changeset
|
693 if (! fontp->font_encoder && find_ccl_program_func) |
|
21553
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
694 (*find_ccl_program_func) (fontp); |
| 17052 | 695 |
| 28963 | 696 /* If we loaded a font for a face that has fontset, record the face |
| 697 ID in the fontset for C. */ | |
| 698 if (face | |
| 699 && !NILP (fontset) | |
| 700 && !BASE_FONTSET_P (fontset)) | |
| 701 FONTSET_SET (fontset, c, make_number (face->id)); | |
| 17052 | 702 return fontp; |
| 703 } | |
| 704 | |
|
40028
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
705 #if defined(WINDOWSNT) && defined (_MSC_VER) |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
706 #pragma optimize("", on) |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
707 #endif |
|
392c2fe9edd7
(fs_load_font) [WINDOWSNT && _MSC_VER]: Disable
Andrew Innes <andrewi@gnu.org>
parents:
39973
diff
changeset
|
708 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
709 |
| 17052 | 710 /* Cache data used by fontset_pattern_regexp. The car part is a |
| 711 pattern string containing at least one wild card, the cdr part is | |
| 712 the corresponding regular expression. */ | |
| 713 static Lisp_Object Vcached_fontset_data; | |
| 714 | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
715 #define CACHED_FONTSET_NAME (SDATA (XCAR (Vcached_fontset_data))) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
716 #define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data)) |
| 17052 | 717 |
| 718 /* If fontset name PATTERN contains any wild card, return regular | |
| 719 expression corresponding to PATTERN. */ | |
| 720 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
721 static Lisp_Object |
| 17052 | 722 fontset_pattern_regexp (pattern) |
| 723 Lisp_Object pattern; | |
| 724 { | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
725 if (!index (SDATA (pattern), '*') |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
726 && !index (SDATA (pattern), '?')) |
| 17052 | 727 /* PATTERN does not contain any wild cards. */ |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
728 return Qnil; |
| 17052 | 729 |
| 730 if (!CONSP (Vcached_fontset_data) | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
731 || strcmp (SDATA (pattern), CACHED_FONTSET_NAME)) |
| 17052 | 732 { |
| 733 /* We must at first update the cached data. */ | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
734 char *regex = (char *) alloca (SCHARS (pattern) * 2 + 3); |
| 17052 | 735 char *p0, *p1 = regex; |
| 736 | |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
737 /* Convert "*" to ".*", "?" to ".". */ |
|
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
738 *p1++ = '^'; |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
739 for (p0 = (char *) SDATA (pattern); *p0; p0++) |
| 17052 | 740 { |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
741 if (*p0 == '*') |
| 17052 | 742 { |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
743 *p1++ = '.'; |
|
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
744 *p1++ = '*'; |
| 17052 | 745 } |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
746 else if (*p0 == '?') |
|
21127
577865651099
(fontset_pattern_regexp): `==' was used instead of `='.
Richard M. Stallman <rms@gnu.org>
parents:
20346
diff
changeset
|
747 *p1++ = '.'; |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
748 else |
|
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
749 *p1++ = *p0; |
| 17052 | 750 } |
| 751 *p1++ = '$'; | |
| 752 *p1++ = 0; | |
| 753 | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
754 Vcached_fontset_data = Fcons (build_string (SDATA (pattern)), |
| 17052 | 755 build_string (regex)); |
| 756 } | |
| 757 | |
| 758 return CACHED_FONTSET_REGEX; | |
| 759 } | |
| 760 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
761 /* Return ID of the base fontset named NAME. If there's no such |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
762 fontset, return -1. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
763 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
764 int |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
765 fs_query_fontset (name, regexpp) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
766 Lisp_Object name; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
767 int regexpp; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
768 { |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
769 Lisp_Object tem; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
770 int i; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
771 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
772 name = Fdowncase (name); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
773 if (!regexpp) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
774 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
775 tem = Frassoc (name, Vfontset_alias_alist); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
776 if (CONSP (tem) && STRINGP (XCAR (tem))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
777 name = XCAR (tem); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
778 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
779 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
780 tem = fontset_pattern_regexp (name); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
781 if (STRINGP (tem)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
782 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
783 name = tem; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
784 regexpp = 1; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
785 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
786 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
787 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
788 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
789 for (i = 0; i < ASIZE (Vfontset_table); i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
790 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
791 Lisp_Object fontset; |
|
46466
9629aca792bb
(font_family_registry, fs_query_fontset):
Ken Raeburn <raeburn@raeburn.org>
parents:
46440
diff
changeset
|
792 const unsigned char *this_name; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
793 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
794 fontset = FONTSET_FROM_ID (i); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
795 if (NILP (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
796 || !BASE_FONTSET_P (fontset)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
797 continue; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
798 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
799 this_name = SDATA (FONTSET_NAME (fontset)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
800 if (regexpp |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
801 ? fast_c_string_match_ignore_case (name, this_name) >= 0 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
802 : !strcmp (SDATA (name), this_name)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
803 return i; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
804 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
805 return -1; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
806 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
807 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
808 |
|
21553
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
809 DEFUN ("query-fontset", Fquery_fontset, Squery_fontset, 1, 2, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
810 doc: /* Return the name of a fontset that matches PATTERN. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
811 The value is nil if there is no matching fontset. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
812 PATTERN can contain `*' or `?' as a wildcard |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
813 just as X font name matching algorithm allows. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
814 If REGEXPP is non-nil, PATTERN is a regular expression. */) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
815 (pattern, regexpp) |
|
21553
2d7afcd11b72
(find_ccl_program_func): New variable.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
816 Lisp_Object pattern, regexpp; |
| 17052 | 817 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
818 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
819 int id; |
| 17052 | 820 |
| 821 (*check_window_system_func) (); | |
| 822 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
823 CHECK_STRING (pattern); |
| 17052 | 824 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
825 if (SCHARS (pattern) == 0) |
| 17052 | 826 return Qnil; |
| 827 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
828 id = fs_query_fontset (pattern, !NILP (regexpp)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
829 if (id < 0) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
830 return Qnil; |
| 17052 | 831 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
832 fontset = FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
833 return FONTSET_NAME (fontset); |
| 17052 | 834 } |
| 835 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
836 /* Return a list of base fontset names matching PATTERN on frame F. |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
837 If SIZE is not 0, it is the size (maximum bound width) of fontsets |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
838 to be listed. */ |
| 17052 | 839 |
| 840 Lisp_Object | |
| 841 list_fontsets (f, pattern, size) | |
| 842 FRAME_PTR f; | |
| 843 Lisp_Object pattern; | |
| 844 int size; | |
| 845 { | |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
846 Lisp_Object frame, regexp, val; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
847 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
848 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
849 XSETFRAME (frame, f); |
| 17052 | 850 |
| 851 regexp = fontset_pattern_regexp (pattern); | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
852 val = Qnil; |
| 17052 | 853 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
854 for (id = 0; id < ASIZE (Vfontset_table); id++) |
| 17052 | 855 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
856 Lisp_Object fontset; |
|
46466
9629aca792bb
(font_family_registry, fs_query_fontset):
Ken Raeburn <raeburn@raeburn.org>
parents:
46440
diff
changeset
|
857 const unsigned char *name; |
| 17052 | 858 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
859 fontset = FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
860 if (NILP (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
861 || !BASE_FONTSET_P (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
862 || !EQ (frame, FONTSET_FRAME (fontset))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
863 continue; |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
864 name = SDATA (FONTSET_NAME (fontset)); |
| 17052 | 865 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
866 if (!NILP (regexp) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
867 ? (fast_c_string_match_ignore_case (regexp, name) < 0) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
868 : strcmp (SDATA (pattern), name)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
869 continue; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
870 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
871 if (size) |
| 17052 | 872 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
873 struct font_info *fontp; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
874 fontp = FS_LOAD_FONT (f, 0, NULL, id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
875 if (!fontp || size != fontp->size) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
876 continue; |
| 17052 | 877 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
878 val = Fcons (Fcopy_sequence (FONTSET_NAME (fontset)), val); |
| 17052 | 879 } |
| 880 | |
| 881 return val; | |
| 882 } | |
| 883 | |
| 884 DEFUN ("new-fontset", Fnew_fontset, Snew_fontset, 2, 2, 0, | |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
885 doc: /* Create a new fontset NAME that contains font information in FONTLIST. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
886 FONTLIST is an alist of charsets vs corresponding font name patterns. */) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
887 (name, fontlist) |
| 17052 | 888 Lisp_Object name, fontlist; |
| 889 { | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
890 Lisp_Object fontset, elements, ascii_font; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
891 Lisp_Object tem, tail, elt; |
| 17052 | 892 |
| 893 (*check_window_system_func) (); | |
| 894 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
895 CHECK_STRING (name); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
896 CHECK_LIST (fontlist); |
| 17052 | 897 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
898 name = Fdowncase (name); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
899 tem = Fquery_fontset (name, Qnil); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
900 if (!NILP (tem)) |
|
24585
6810d6fb639f
(Fquery_fontset): Don't check for fontset aliases here.
Richard M. Stallman <rms@gnu.org>
parents:
23517
diff
changeset
|
901 error ("Fontset `%s' matches the existing fontset `%s'", |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
902 SDATA (name), SDATA (tem)); |
| 17052 | 903 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
904 /* Check the validity of FONTLIST while creating a template for |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
905 fontset elements. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
906 elements = ascii_font = Qnil; |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
907 for (tail = fontlist; CONSP (tail); tail = XCDR (tail)) |
| 17052 | 908 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
909 int c, charset; |
| 17052 | 910 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
911 tem = XCAR (tail); |
| 17052 | 912 if (!CONSP (tem) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
25668
diff
changeset
|
913 || (charset = get_charset_id (XCAR (tem))) < 0 |
|
36370
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
914 || (!STRINGP (XCDR (tem)) && !CONSP (XCDR (tem)))) |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
915 error ("Elements of fontlist must be a cons of charset and font name pattern"); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
916 |
|
36370
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
917 tem = XCDR (tem); |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
918 if (STRINGP (tem)) |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
919 tem = Fdowncase (tem); |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
920 else |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
921 tem = Fcons (Fdowncase (Fcar (tem)), Fdowncase (Fcdr (tem))); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
922 if (charset == CHARSET_ASCII) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
923 ascii_font = tem; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
924 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
925 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
926 c = MAKE_CHAR (charset, 0, 0); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
927 elements = Fcons (Fcons (make_number (c), tem), elements); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
928 } |
| 17052 | 929 } |
| 930 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
931 if (NILP (ascii_font)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
932 error ("No ASCII font in the fontlist"); |
| 17052 | 933 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
934 fontset = make_fontset (Qnil, name, Qnil); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
935 FONTSET_ASCII (fontset) = Fcons (make_number (0), ascii_font); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
936 for (; CONSP (elements); elements = XCDR (elements)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
937 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
938 elt = XCAR (elements); |
|
36370
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
939 tem = XCDR (elt); |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
940 if (STRINGP (tem)) |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
941 tem = font_family_registry (tem, 0); |
|
751cb07c5f11
(Fnew_fontset): Fix handling of the case that an
Kenichi Handa <handa@m17n.org>
parents:
35663
diff
changeset
|
942 tem = Fcons (XCAR (elt), tem); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
943 FONTSET_SET (fontset, XINT (XCAR (elt)), tem); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
944 } |
| 17052 | 945 |
| 946 return Qnil; | |
| 947 } | |
| 948 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
949 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
950 /* Clear all elements of FONTSET for multibyte characters. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
951 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
952 static void |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
953 clear_fontset_elements (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
954 Lisp_Object fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
955 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
956 int i; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
957 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
958 for (i = CHAR_TABLE_SINGLE_BYTE_SLOTS; i < CHAR_TABLE_ORDINARY_SLOTS; i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
959 XCHAR_TABLE (fontset)->contents[i] = Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
960 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
961 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
962 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
963 /* Check validity of NAME as a fontset name and return the |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
964 corresponding fontset. If not valid, signal an error. |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
965 If NAME is nil, return Vdefault_fontset. */ |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
966 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
967 static Lisp_Object |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
968 check_fontset_name (name) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
969 Lisp_Object name; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
970 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
971 int id; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
972 |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
973 if (EQ (name, Qnil)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
974 return Vdefault_fontset; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
975 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
976 CHECK_STRING (name); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
977 id = fs_query_fontset (name, 0); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
978 if (id < 0) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
979 error ("Fontset `%s' does not exist", SDATA (name)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
980 return FONTSET_FROM_ID (id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
981 } |
| 17052 | 982 |
|
49884
6e26943fda98
*** empty log message ***
Juanma Barranquero <lekktu@gmail.com>
parents:
49881
diff
changeset
|
983 DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 4, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
984 doc: /* Modify fontset NAME to use FONTNAME for CHARACTER. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
985 |
|
49881
95289e554702
(Fset_fontset_font): Document that NAME nil means the default
Kenichi Handa <handa@m17n.org>
parents:
49874
diff
changeset
|
986 If NAME is nil, modify the default fontset. |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
987 CHARACTER may be a cons; (FROM . TO), where FROM and TO are |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
988 non-generic characters. In that case, use FONTNAME |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
989 for all characters in the range FROM and TO (inclusive). |
|
47277
8a4e82b00f6f
(Fset_fontset_font): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
46466
diff
changeset
|
990 CHARACTER may be a charset. In that case, use FONTNAME |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
991 for all character in the charsets. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
992 |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
993 FONTNAME may be a cons; (FAMILY . REGISTRY), where FAMILY is a family |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
994 name of a font, REGISTRY is a registry name of a font. */) |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
995 (name, character, fontname, frame) |
|
28676
0a677c35ad99
(Fset_fontset_font): Fix docstring. Local variable
Kenichi Handa <handa@m17n.org>
parents:
28511
diff
changeset
|
996 Lisp_Object name, character, fontname, frame; |
| 17052 | 997 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
998 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
999 Lisp_Object realized; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1000 int from, to; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1001 int id; |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1002 Lisp_Object family, registry; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1003 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1004 fontset = check_fontset_name (name); |
| 17052 | 1005 |
|
28676
0a677c35ad99
(Fset_fontset_font): Fix docstring. Local variable
Kenichi Handa <handa@m17n.org>
parents:
28511
diff
changeset
|
1006 if (CONSP (character)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1007 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1008 /* CH should be (FROM . TO) where FROM and TO are non-generic |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1009 characters. */ |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1010 CHECK_NUMBER_CAR (character); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1011 CHECK_NUMBER_CDR (character); |
|
28676
0a677c35ad99
(Fset_fontset_font): Fix docstring. Local variable
Kenichi Handa <handa@m17n.org>
parents:
28511
diff
changeset
|
1012 from = XINT (XCAR (character)); |
|
0a677c35ad99
(Fset_fontset_font): Fix docstring. Local variable
Kenichi Handa <handa@m17n.org>
parents:
28511
diff
changeset
|
1013 to = XINT (XCDR (character)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1014 if (!char_valid_p (from, 0) || !char_valid_p (to, 0)) |
|
53072
8787289602d1
Remove period at end of error message.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52729
diff
changeset
|
1015 error ("Character range should be by non-generic characters"); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1016 if (!NILP (name) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1017 && (SINGLE_BYTE_CHAR_P (from) || SINGLE_BYTE_CHAR_P (to))) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1018 error ("Can't change font for a single byte character"); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1019 } |
|
29501
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1020 else if (SYMBOLP (character)) |
|
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1021 { |
|
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1022 elt = Fget (character, Qcharset); |
|
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1023 if (!VECTORP (elt) || ASIZE (elt) < 1 || !NATNUMP (AREF (elt, 0))) |
|
46440
dd231f1390d2
(Fset_fontset_font): Use SDATA instead of XSTRING()->data.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
1024 error ("Invalid charset: %s", SDATA (SYMBOL_NAME (character))); |
|
29501
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1025 from = MAKE_CHAR (XINT (AREF (elt, 0)), 0, 0); |
|
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1026 to = from; |
|
f901ec87b147
(Fset_fontset_font): The arg CHARACTER may be a charset.
Kenichi Handa <handa@m17n.org>
parents:
29233
diff
changeset
|
1027 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1028 else |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1029 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1030 CHECK_NUMBER (character); |
|
28676
0a677c35ad99
(Fset_fontset_font): Fix docstring. Local variable
Kenichi Handa <handa@m17n.org>
parents:
28511
diff
changeset
|
1031 from = XINT (character); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1032 to = from; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1033 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1034 if (!char_valid_p (from, 1)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1035 invalid_character (from); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1036 if (SINGLE_BYTE_CHAR_P (from)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1037 error ("Can't change font for a single byte character"); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1038 if (from < to) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1039 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1040 if (!char_valid_p (to, 1)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1041 invalid_character (to); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1042 if (SINGLE_BYTE_CHAR_P (to)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1043 error ("Can't change font for a single byte character"); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1044 } |
| 17052 | 1045 |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1046 if (STRINGP (fontname)) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1047 { |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1048 fontname = Fdowncase (fontname); |
|
35658
3551e8549d4e
(font_family_registry): Even if FONTNAME conform to
Kenichi Handa <handa@m17n.org>
parents:
34975
diff
changeset
|
1049 elt = Fcons (make_number (from), font_family_registry (fontname, 0)); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1050 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1051 else |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1052 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1053 CHECK_CONS (fontname); |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1054 family = XCAR (fontname); |
|
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1055 registry = XCDR (fontname); |
|
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1056 if (!NILP (family)) |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1057 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1058 CHECK_STRING (family); |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1059 family = Fdowncase (family); |
|
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1060 } |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1061 if (!NILP (registry)) |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1062 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1063 CHECK_STRING (registry); |
|
30398
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1064 registry = Fdowncase (registry); |
|
dde5ab185aad
(fontset_ref): Remove INLINE declaration.
Kenichi Handa <handa@m17n.org>
parents:
30172
diff
changeset
|
1065 } |
|
29233
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1066 elt = Fcons (make_number (from), Fcons (family, registry)); |
|
a09ee5c15dcb
(check_registry_encoding): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
29231
diff
changeset
|
1067 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1068 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1069 /* The arg FRAME is kept for backward compatibility. We only check |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1070 the validity. */ |
| 17052 | 1071 if (!NILP (frame)) |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1072 CHECK_LIVE_FRAME (frame); |
| 17052 | 1073 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1074 for (; from <= to; from++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1075 FONTSET_SET (fontset, from, elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1076 Foptimize_char_table (fontset); |
| 17052 | 1077 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1078 /* If there's a realized fontset REALIZED whose parent is FONTSET, |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1079 clear all the elements of REALIZED and free all multibyte faces |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1080 whose fontset is REALIZED. This way, the specified character(s) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1081 are surely redisplayed by a correct font. */ |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1082 for (id = 0; id < ASIZE (Vfontset_table); id++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1083 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1084 realized = AREF (Vfontset_table, id); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1085 if (!NILP (realized) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1086 && !BASE_FONTSET_P (realized) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1087 && EQ (FONTSET_BASE (realized), fontset)) |
| 17052 | 1088 { |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1089 FRAME_PTR f = XFRAME (FONTSET_FRAME (realized)); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1090 clear_fontset_elements (realized); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1091 free_realized_multibyte_face (f, id); |
| 17052 | 1092 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1093 } |
| 17052 | 1094 |
| 1095 return Qnil; | |
| 1096 } | |
| 1097 | |
| 1098 DEFUN ("font-info", Ffont_info, Sfont_info, 1, 2, 0, | |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1099 doc: /* Return information about a font named NAME on frame FRAME. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1100 If FRAME is omitted or nil, use the selected frame. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1101 The returned value is a vector of OPENED-NAME, FULL-NAME, CHARSET, SIZE, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1102 HEIGHT, BASELINE-OFFSET, RELATIVE-COMPOSE, and DEFAULT-ASCENT, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1103 where |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1104 OPENED-NAME is the name used for opening the font, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1105 FULL-NAME is the full name of the font, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1106 SIZE is the maximum bound width of the font, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1107 HEIGHT is the height of the font, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1108 BASELINE-OFFSET is the upward offset pixels from ASCII baseline, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1109 RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1110 how to compose characters. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1111 If the named font is not yet loaded, return nil. */) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1112 (name, frame) |
| 17052 | 1113 Lisp_Object name, frame; |
| 1114 { | |
| 1115 FRAME_PTR f; | |
| 1116 struct font_info *fontp; | |
| 1117 Lisp_Object info; | |
| 1118 | |
| 1119 (*check_window_system_func) (); | |
| 1120 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1121 CHECK_STRING (name); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1122 name = Fdowncase (name); |
| 17052 | 1123 if (NILP (frame)) |
|
25668
99290b59352d
(Ffont_info): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
24611
diff
changeset
|
1124 frame = selected_frame; |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1125 CHECK_LIVE_FRAME (frame); |
|
25668
99290b59352d
(Ffont_info): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
24611
diff
changeset
|
1126 f = XFRAME (frame); |
| 17052 | 1127 |
| 1128 if (!query_font_func) | |
| 1129 error ("Font query function is not supported"); | |
| 1130 | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
1131 fontp = (*query_font_func) (f, SDATA (name)); |
| 17052 | 1132 if (!fontp) |
| 1133 return Qnil; | |
| 1134 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1135 info = Fmake_vector (make_number (7), Qnil); |
| 17052 | 1136 |
| 1137 XVECTOR (info)->contents[0] = build_string (fontp->name); | |
| 1138 XVECTOR (info)->contents[1] = build_string (fontp->full_name); | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1139 XVECTOR (info)->contents[2] = make_number (fontp->size); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1140 XVECTOR (info)->contents[3] = make_number (fontp->height); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1141 XVECTOR (info)->contents[4] = make_number (fontp->baseline_offset); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1142 XVECTOR (info)->contents[5] = make_number (fontp->relative_compose); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1143 XVECTOR (info)->contents[6] = make_number (fontp->default_ascent); |
| 17052 | 1144 |
| 1145 return info; | |
| 1146 } | |
| 1147 | |
| 28963 | 1148 |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1149 /* Return a cons (FONT-NAME . GLYPH-CODE). |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1150 FONT-NAME is the font name for the character at POSITION in the current |
| 28963 | 1151 buffer. This is computed from all the text properties and overlays |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1152 that apply to POSITION. |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1153 GLYPH-CODE is the glyph code in the font to use for the character. |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1154 |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1155 If the 2nd optional arg CH is non-nil, it is a character to check |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1156 the font instead of the character at POSITION. |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1157 |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1158 It returns nil in the following cases: |
| 28963 | 1159 |
| 1160 (1) The window system doesn't have a font for the character (thus | |
| 1161 it is displayed by an empty box). | |
| 1162 | |
| 1163 (2) The character code is invalid. | |
| 1164 | |
| 1165 (3) The current buffer is not displayed in any window. | |
| 1166 | |
| 1167 In addition, the returned font name may not take into account of | |
| 1168 such redisplay engine hooks as what used in jit-lock-mode if | |
| 1169 POSITION is currently not visible. */ | |
| 1170 | |
| 1171 | |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1172 DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1173 doc: /* For internal use only. */) |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1174 (position, ch) |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1175 Lisp_Object position, ch; |
| 28963 | 1176 { |
| 1177 int pos, pos_byte, dummy; | |
| 1178 int face_id; | |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1179 int c, code; |
| 28963 | 1180 Lisp_Object window; |
| 1181 struct window *w; | |
| 1182 struct frame *f; | |
| 1183 struct face *face; | |
| 1184 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1185 CHECK_NUMBER_COERCE_MARKER (position); |
| 28963 | 1186 pos = XINT (position); |
| 1187 if (pos < BEGV || pos >= ZV) | |
| 1188 args_out_of_range_3 (position, make_number (BEGV), make_number (ZV)); | |
| 1189 pos_byte = CHAR_TO_BYTE (pos); | |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1190 if (NILP (ch)) |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1191 c = FETCH_CHAR (pos_byte); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1192 else |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1193 { |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1194 CHECK_NATNUM (ch); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1195 c = XINT (ch); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1196 } |
| 28963 | 1197 if (! CHAR_VALID_P (c, 0)) |
| 1198 return Qnil; | |
|
30941
ac162a21c419
(Finternal_char_font): Search only the selected frame for a window of
Kenichi Handa <handa@m17n.org>
parents:
30398
diff
changeset
|
1199 window = Fget_buffer_window (Fcurrent_buffer (), Qnil); |
| 28963 | 1200 if (NILP (window)) |
| 1201 return Qnil; | |
| 1202 w = XWINDOW (window); | |
| 1203 f = XFRAME (w->frame); | |
| 1204 face_id = face_at_buffer_position (w, pos, -1, -1, &dummy, pos + 100, 0); | |
| 1205 face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c); | |
| 1206 face = FACE_FROM_ID (f, face_id); | |
|
52654
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1207 if (! face->font || ! face->font_name) |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1208 return Qnil; |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1209 |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1210 { |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1211 struct font_info *fontp = (*get_font_info_func) (f, face->font_info_id); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1212 XChar2b char2b; |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1213 int c1, c2, charset; |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1214 |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1215 SPLIT_CHAR (c, charset, c1, c2); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1216 if (c2 > 0) |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1217 STORE_XCHAR2B (&char2b, c1, c2); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1218 else |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1219 STORE_XCHAR2B (&char2b, 0, c1); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1220 rif->encode_char (c, &char2b, fontp, NULL); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1221 code = (XCHAR2B_BYTE1 (&char2b) << 8) | XCHAR2B_BYTE2 (&char2b); |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1222 } |
|
2e5944e29aa0
(Finternal_char_font): Change return value to
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1223 return Fcons (build_string (face->font_name), make_number (code)); |
| 28963 | 1224 } |
| 1225 | |
| 1226 | |
| 1227 /* Called from Ffontset_info via map_char_table on each leaf of | |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1228 fontset. ARG is a copy of the default fontset. The current leaf |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1229 is indexed by CHARACTER and has value ELT. This function override |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1230 the copy by ELT if ELT is not nil. */ |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1231 |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1232 static void |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1233 override_font_info (fontset, character, elt) |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1234 Lisp_Object fontset, character, elt; |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1235 { |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1236 if (! NILP (elt)) |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1237 Faset (fontset, character, elt); |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1238 } |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1239 |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1240 /* Called from Ffontset_info via map_char_table on each leaf of |
| 28963 | 1241 fontset. ARG is a list (LAST FONT-INFO ...), where LAST is `(last |
| 1242 ARG)' and FONT-INFOs have this form: | |
| 1243 (CHAR FONT-SPEC) or ((FROM . TO) FONT-SPEC) | |
| 1244 The current leaf is indexed by CHARACTER and has value ELT. This | |
| 1245 function add the information of the current leaf to ARG by | |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1246 appending a new element or modifying the last element. */ |
| 28963 | 1247 |
| 1248 static void | |
| 1249 accumulate_font_info (arg, character, elt) | |
| 1250 Lisp_Object arg, character, elt; | |
| 1251 { | |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
1252 Lisp_Object last, last_char, last_elt; |
| 28963 | 1253 |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1254 if (!CONSP (elt) && !SINGLE_BYTE_CHAR_P (XINT (character))) |
|
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1255 elt = FONTSET_REF (Vdefault_fontset, XINT (character)); |
| 28963 | 1256 if (!CONSP (elt)) |
| 1257 return; | |
| 1258 last = XCAR (arg); | |
| 1259 last_char = XCAR (XCAR (last)); | |
| 1260 last_elt = XCAR (XCDR (XCAR (last))); | |
| 1261 elt = XCDR (elt); | |
| 1262 if (!NILP (Fequal (elt, last_elt))) | |
| 1263 { | |
| 1264 int this_charset = CHAR_CHARSET (XINT (character)); | |
| 1265 | |
| 1266 if (CONSP (last_char)) /* LAST_CHAR == (FROM . TO) */ | |
| 1267 { | |
| 1268 if (this_charset == CHAR_CHARSET (XINT (XCAR (last_char)))) | |
| 1269 { | |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1270 XSETCDR (last_char, character); |
| 28963 | 1271 return; |
| 1272 } | |
| 1273 } | |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1274 else if (XINT (last_char) == XINT (character)) |
|
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1275 return; |
|
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1276 else if (this_charset == CHAR_CHARSET (XINT (last_char))) |
| 28963 | 1277 { |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1278 XSETCAR (XCAR (last), Fcons (last_char, character)); |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1279 return; |
| 28963 | 1280 } |
| 1281 } | |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1282 XSETCDR (last, Fcons (Fcons (character, Fcons (elt, Qnil)), Qnil)); |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1283 XSETCAR (arg, XCDR (last)); |
| 28963 | 1284 } |
| 1285 | |
| 1286 | |
| 17052 | 1287 DEFUN ("fontset-info", Ffontset_info, Sfontset_info, 1, 2, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1288 doc: /* Return information about a fontset named NAME on frame FRAME. |
|
49881
95289e554702
(Fset_fontset_font): Document that NAME nil means the default
Kenichi Handa <handa@m17n.org>
parents:
49874
diff
changeset
|
1289 If NAME is nil, return information about the default fontset. |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1290 The value is a vector: |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1291 [ SIZE HEIGHT ((CHARSET-OR-RANGE FONT-SPEC OPENED ...) ...) ], |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1292 where, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1293 SIZE is the maximum bound width of ASCII font in the fontset, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1294 HEIGHT is the maximum bound height of ASCII font in the fontset, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1295 CHARSET-OR-RANGE is a charset, a character (may be a generic character) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1296 or a cons of two characters specifying the range of characters. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1297 FONT-SPEC is a fontname pattern string or a cons (FAMILY . REGISTRY), |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1298 where FAMILY is a `FAMILY' field of a XLFD font name, |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
1299 REGISTRY is a `CHARSET_REGISTRY' field of a XLFD font name. |
|
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
1300 FAMILY may contain a `FOUNDRY' field at the head. |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1301 REGISTRY may contain a `CHARSET_ENCODING' field at the tail. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1302 OPENEDs are names of fonts actually opened. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1303 If the ASCII font is not yet opened, SIZE and HEIGHT are 0. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1304 If FRAME is omitted, it defaults to the currently selected frame. */) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1305 (name, frame) |
| 17052 | 1306 Lisp_Object name, frame; |
| 1307 { | |
| 28963 | 1308 Lisp_Object fontset; |
| 17052 | 1309 FRAME_PTR f; |
| 28963 | 1310 Lisp_Object indices[3]; |
| 1311 Lisp_Object val, tail, elt; | |
| 1312 Lisp_Object *realized; | |
|
30124
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1313 struct font_info *fontp = NULL; |
| 28963 | 1314 int n_realized = 0; |
| 17052 | 1315 int i; |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
1316 |
| 17052 | 1317 (*check_window_system_func) (); |
| 1318 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1319 fontset = check_fontset_name (name); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1320 |
| 17052 | 1321 if (NILP (frame)) |
|
25668
99290b59352d
(Ffont_info): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
24611
diff
changeset
|
1322 frame = selected_frame; |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1323 CHECK_LIVE_FRAME (frame); |
|
25668
99290b59352d
(Ffont_info): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
24611
diff
changeset
|
1324 f = XFRAME (frame); |
| 17052 | 1325 |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1326 /* Recode realized fontsets whose base is FONTSET in the table |
| 28963 | 1327 `realized'. */ |
| 1328 realized = (Lisp_Object *) alloca (sizeof (Lisp_Object) | |
| 1329 * ASIZE (Vfontset_table)); | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1330 for (i = 0; i < ASIZE (Vfontset_table); i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1331 { |
| 28963 | 1332 elt = FONTSET_FROM_ID (i); |
| 1333 if (!NILP (elt) | |
| 1334 && EQ (FONTSET_BASE (elt), fontset)) | |
| 1335 realized[n_realized++] = elt; | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1336 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1337 |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1338 if (! EQ (fontset, Vdefault_fontset)) |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1339 { |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1340 /* Merge FONTSET onto the default fontset. */ |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1341 val = Fcopy_sequence (Vdefault_fontset); |
|
51033
8fe4bdd97052
(Ffontset_info): Pass new arg to map_char_table.
Richard M. Stallman <rms@gnu.org>
parents:
49884
diff
changeset
|
1342 map_char_table (override_font_info, Qnil, fontset, fontset, val, 0, indices); |
|
49874
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1343 fontset = val; |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1344 } |
|
3bdee1887901
(check_fontset_name): If NAME is nil, return the
Kenichi Handa <handa@m17n.org>
parents:
49286
diff
changeset
|
1345 |
| 28963 | 1346 /* Accumulate information of the fontset in VAL. The format is |
| 1347 (LAST FONT-INFO FONT-INFO ...), where FONT-INFO is (CHAR-OR-RANGE | |
| 1348 FONT-SPEC). See the comment for accumulate_font_info for the | |
| 1349 detail. */ | |
| 1350 val = Fcons (Fcons (make_number (0), | |
| 1351 Fcons (XCDR (FONTSET_ASCII (fontset)), Qnil)), | |
| 1352 Qnil); | |
| 1353 val = Fcons (val, val); | |
|
51033
8fe4bdd97052
(Ffontset_info): Pass new arg to map_char_table.
Richard M. Stallman <rms@gnu.org>
parents:
49884
diff
changeset
|
1354 map_char_table (accumulate_font_info, Qnil, fontset, fontset, val, 0, indices); |
| 28963 | 1355 val = XCDR (val); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1356 |
| 28963 | 1357 /* For each FONT-INFO, if CHAR_OR_RANGE (car part) is a generic |
|
29767
c8e5453dc85d
(FONTSET_ASCII): Use the first element of char table
Kenichi Handa <handa@m17n.org>
parents:
29501
diff
changeset
|
1358 character for a charset, replace it with the charset symbol. If |
| 28963 | 1359 fonts are opened for FONT-SPEC, append the names of the fonts to |
| 1360 FONT-SPEC. */ | |
| 1361 for (tail = val; CONSP (tail); tail = XCDR (tail)) | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1362 { |
| 28963 | 1363 int c; |
| 1364 elt = XCAR (tail); | |
| 1365 if (INTEGERP (XCAR (elt))) | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1366 { |
| 28963 | 1367 int charset, c1, c2; |
| 1368 c = XINT (XCAR (elt)); | |
| 1369 SPLIT_CHAR (c, charset, c1, c2); | |
| 1370 if (c1 == 0) | |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1371 XSETCAR (elt, CHARSET_SYMBOL (charset)); |
| 28963 | 1372 } |
| 1373 else | |
| 1374 c = XINT (XCAR (XCAR (elt))); | |
| 1375 for (i = 0; i < n_realized; i++) | |
| 1376 { | |
| 1377 Lisp_Object face_id, font; | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1378 struct face *face; |
| 17052 | 1379 |
| 28963 | 1380 face_id = FONTSET_REF_VIA_BASE (realized[i], c); |
| 1381 if (INTEGERP (face_id)) | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1382 { |
| 28963 | 1383 face = FACE_FROM_ID (f, XINT (face_id)); |
|
37744
7893c43d43c2
(Ffontset_info): Check that face is non-null
Gerd Moellmann <gerd@gnu.org>
parents:
36759
diff
changeset
|
1384 if (face && face->font && face->font_name) |
| 28963 | 1385 { |
| 1386 font = build_string (face->font_name); | |
| 1387 if (NILP (Fmember (font, XCDR (XCDR (elt))))) | |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
37744
diff
changeset
|
1388 XSETCDR (XCDR (elt), Fcons (font, XCDR (XCDR (elt)))); |
| 28963 | 1389 } |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1390 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1391 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1392 } |
|
30124
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1393 |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1394 elt = Fcdr (Fcdr (Fassq (CHARSET_SYMBOL (CHARSET_ASCII), val))); |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1395 if (CONSP (elt)) |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1396 { |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1397 elt = XCAR (elt); |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45848
diff
changeset
|
1398 fontp = (*query_font_func) (f, SDATA (elt)); |
|
30124
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1399 } |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1400 val = Fmake_vector (make_number (3), val); |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1401 AREF (val, 0) = fontp ? make_number (fontp->size) : make_number (0); |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1402 AREF (val, 1) = fontp ? make_number (fontp->height) : make_number (0); |
|
26076259e03f
(Ffontset_info): Make the return value more compatible
Kenichi Handa <handa@m17n.org>
parents:
29767
diff
changeset
|
1403 return val; |
| 17052 | 1404 } |
| 1405 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1406 DEFUN ("fontset-font", Ffontset_font, Sfontset_font, 2, 2, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1407 doc: /* Return a font name pattern for character CH in fontset NAME. |
|
49881
95289e554702
(Fset_fontset_font): Document that NAME nil means the default
Kenichi Handa <handa@m17n.org>
parents:
49874
diff
changeset
|
1408 If NAME is nil, find a font name pattern in the default fontset. */) |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1409 (name, ch) |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1410 Lisp_Object name, ch; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1411 { |
|
34975
0d69e2d2724e
(fontset_ref): Remove unused variable `i'.
Eli Zaretskii <eliz@gnu.org>
parents:
32978
diff
changeset
|
1412 int c; |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1413 Lisp_Object fontset, elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1414 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1415 fontset = check_fontset_name (name); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1416 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40028
diff
changeset
|
1417 CHECK_NUMBER (ch); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1418 c = XINT (ch); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1419 if (!char_valid_p (c, 1)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1420 invalid_character (c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1421 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1422 elt = FONTSET_REF (fontset, c); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1423 if (CONSP (elt)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1424 elt = XCDR (elt); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1425 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1426 return elt; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1427 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1428 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1429 DEFUN ("fontset-list", Ffontset_list, Sfontset_list, 0, 0, 0, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1430 doc: /* Return a list of all defined fontset names. */) |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1431 () |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1432 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1433 Lisp_Object fontset, list; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1434 int i; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1435 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1436 list = Qnil; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1437 for (i = 0; i < ASIZE (Vfontset_table); i++) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1438 { |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1439 fontset = FONTSET_FROM_ID (i); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1440 if (!NILP (fontset) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1441 && BASE_FONTSET_P (fontset)) |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1442 list = Fcons (FONTSET_NAME (fontset), list); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1443 } |
| 28963 | 1444 |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1445 return list; |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1446 } |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1447 |
| 21514 | 1448 void |
| 17052 | 1449 syms_of_fontset () |
| 1450 { | |
| 1451 if (!load_font_func) | |
| 1452 /* Window system initializer should have set proper functions. */ | |
| 1453 abort (); | |
| 1454 | |
|
17112
5c48ff325655
(syms_of_fontset): Intern Qfontset. Declare new lisp
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1455 Qfontset = intern ("fontset"); |
| 17052 | 1456 staticpro (&Qfontset); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1457 Fput (Qfontset, Qchar_table_extra_slots, make_number (3)); |
| 17052 | 1458 |
| 1459 Vcached_fontset_data = Qnil; | |
| 1460 staticpro (&Vcached_fontset_data); | |
| 1461 | |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1462 Vfontset_table = Fmake_vector (make_number (32), Qnil); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1463 staticpro (&Vfontset_table); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1464 |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1465 Vdefault_fontset = Fmake_char_table (Qfontset, Qnil); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1466 staticpro (&Vdefault_fontset); |
| 28963 | 1467 FONTSET_ID (Vdefault_fontset) = make_number (0); |
| 1468 FONTSET_NAME (Vdefault_fontset) | |
| 1469 = build_string ("-*-*-*-*-*-*-*-*-*-*-*-*-fontset-default"); | |
|
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
41987
diff
changeset
|
1470 #if defined (MAC_OS) |
|
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
31102
diff
changeset
|
1471 FONTSET_ASCII (Vdefault_fontset) |
|
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
31102
diff
changeset
|
1472 = Fcons (make_number (0), |
| 45848 | 1473 build_string ("-apple-monaco-medium-r-*--*-120-*-*-*-*-mac-roman")); |
|
32790
131348208699
(syms_of_fontset) [WINDOWSNT]: Special case for ASCII font of default
Jason Rumney <jasonr@gnu.org>
parents:
32752
diff
changeset
|
1474 #elif defined (WINDOWSNT) |
|
131348208699
(syms_of_fontset) [WINDOWSNT]: Special case for ASCII font of default
Jason Rumney <jasonr@gnu.org>
parents:
32752
diff
changeset
|
1475 FONTSET_ASCII (Vdefault_fontset) |
|
131348208699
(syms_of_fontset) [WINDOWSNT]: Special case for ASCII font of default
Jason Rumney <jasonr@gnu.org>
parents:
32752
diff
changeset
|
1476 = Fcons (make_number (0), |
|
32978
ca33eb68d9da
(syms_of_fontset) [WINDOWSNT]: Make default fontsize on w32 10
Jason Rumney <jasonr@gnu.org>
parents:
32790
diff
changeset
|
1477 build_string ("-*-courier new-normal-r-*-*-*-100-*-*-*-*-iso8859-1")); |
|
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
31102
diff
changeset
|
1478 #else |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1479 FONTSET_ASCII (Vdefault_fontset) |
|
29231
3c444d185d31
(syms_of_fontset): Adjust the font name for ascii of
Kenichi Handa <handa@m17n.org>
parents:
29011
diff
changeset
|
1480 = Fcons (make_number (0), |
|
3c444d185d31
(syms_of_fontset): Adjust the font name for ascii of
Kenichi Handa <handa@m17n.org>
parents:
29011
diff
changeset
|
1481 build_string ("-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1")); |
|
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
31102
diff
changeset
|
1482 #endif |
| 28963 | 1483 AREF (Vfontset_table, 0) = Vdefault_fontset; |
| 1484 next_fontset_id = 1; | |
| 17052 | 1485 |
| 1486 DEFVAR_LISP ("font-encoding-alist", &Vfont_encoding_alist, | |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1487 doc: /* Alist of fontname patterns vs corresponding encoding info. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1488 Each element looks like (REGEXP . ENCODING-INFO), |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1489 where ENCODING-INFO is an alist of CHARSET vs ENCODING. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1490 ENCODING is one of the following integer values: |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1491 0: code points 0x20..0x7F or 0x2020..0x7F7F are used, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1492 1: code points 0xA0..0xFF or 0xA0A0..0xFFFF are used, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1493 2: code points 0x20A0..0x7FFF are used, |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1494 3: code points 0xA020..0xFF7F are used. */); |
| 17052 | 1495 Vfont_encoding_alist = Qnil; |
|
49286
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1496 Vfont_encoding_alist |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1497 = Fcons (Fcons (build_string ("JISX0201"), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1498 Fcons (Fcons (intern ("latin-jisx0201"), make_number (0)), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1499 Qnil)), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1500 Vfont_encoding_alist); |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1501 Vfont_encoding_alist |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1502 = Fcons (Fcons (build_string ("ISO8859-1"), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1503 Fcons (Fcons (intern ("ascii"), make_number (0)), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1504 Qnil)), |
|
fc85fba774da
(syms_of_fontset): Setup Vfont_encoding_alist here.
Kenichi Handa <handa@m17n.org>
parents:
47277
diff
changeset
|
1505 Vfont_encoding_alist); |
| 17052 | 1506 |
|
17112
5c48ff325655
(syms_of_fontset): Intern Qfontset. Declare new lisp
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1507 DEFVAR_LISP ("use-default-ascent", &Vuse_default_ascent, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1508 doc: /* Char table of characters whose ascent values should be ignored. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1509 If an entry for a character is non-nil, the ascent value of the glyph |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1510 is assumed to be what specified by _MULE_DEFAULT_ASCENT property of a font. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1511 |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1512 This affects how a composite character which contains |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1513 such a character is displayed on screen. */); |
|
19282
09a1536debb4
(Vignore_relative_composition): New variable.
Kenichi Handa <handa@m17n.org>
parents:
19172
diff
changeset
|
1514 Vuse_default_ascent = Qnil; |
|
09a1536debb4
(Vignore_relative_composition): New variable.
Kenichi Handa <handa@m17n.org>
parents:
19172
diff
changeset
|
1515 |
|
09a1536debb4
(Vignore_relative_composition): New variable.
Kenichi Handa <handa@m17n.org>
parents:
19172
diff
changeset
|
1516 DEFVAR_LISP ("ignore-relative-composition", &Vignore_relative_composition, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1517 doc: /* Char table of characters which is not composed relatively. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1518 If an entry for a character is non-nil, a composition sequence |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1519 which contains that character is displayed so that |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1520 the glyph of that character is put without considering |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1521 an ascent and descent value of a previous character. */); |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
1522 Vignore_relative_composition = Qnil; |
|
17112
5c48ff325655
(syms_of_fontset): Intern Qfontset. Declare new lisp
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1523 |
|
19450
895dc2520755
(Valternate_fontname_alist): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19282
diff
changeset
|
1524 DEFVAR_LISP ("alternate-fontname-alist", &Valternate_fontname_alist, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1525 doc: /* Alist of fontname vs list of the alternate fontnames. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1526 When a specified font name is not found, the corresponding |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1527 alternate fontnames (if any) are tried instead. */); |
|
19450
895dc2520755
(Valternate_fontname_alist): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19282
diff
changeset
|
1528 Valternate_fontname_alist = Qnil; |
|
17193
dc4562b0152a
(Valternative_fontname_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17190
diff
changeset
|
1529 |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
1530 DEFVAR_LISP ("fontset-alias-alist", &Vfontset_alias_alist, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1531 doc: /* Alist of fontset names vs the aliases. */); |
| 28963 | 1532 Vfontset_alias_alist = Fcons (Fcons (FONTSET_NAME (Vdefault_fontset), |
| 1533 build_string ("fontset-default")), | |
| 1534 Qnil); | |
|
17730
4bbcc6804b5d
(Vfontset_alias_alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
17331
diff
changeset
|
1535 |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
1536 DEFVAR_LISP ("vertical-centering-font-regexp", |
|
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
1537 &Vvertical_centering_font_regexp, |
|
41001
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1538 doc: /* *Regexp matching font names that require vertical centering on display. |
|
a17c8b15ef1b
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents:
40771
diff
changeset
|
1539 When a character is displayed with such fonts, the character is displayed |
|
41987
34952771ae85
Fix typos, remove unnecessary space.
Pavel Jan?k <Pavel@Janik.cz>
parents:
41052
diff
changeset
|
1540 at the vertical center of lines. */); |
|
26858
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
1541 Vvertical_centering_font_regexp = Qnil; |
|
7cc081b4e084
(Vvertical_centering_font_regexp): New variable.
Kenichi Handa <handa@m17n.org>
parents:
26164
diff
changeset
|
1542 |
| 17052 | 1543 defsubr (&Squery_fontset); |
| 1544 defsubr (&Snew_fontset); | |
| 1545 defsubr (&Sset_fontset_font); | |
| 1546 defsubr (&Sfont_info); | |
| 28963 | 1547 defsubr (&Sinternal_char_font); |
| 17052 | 1548 defsubr (&Sfontset_info); |
|
28223
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1549 defsubr (&Sfontset_font); |
|
b888c69e8bf0
All codes rewritten or adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
26858
diff
changeset
|
1550 defsubr (&Sfontset_list); |
| 17052 | 1551 } |
| 52401 | 1552 |
| 1553 /* arch-tag: ea861585-2f5f-4e5b-9849-d04a9c3a3537 | |
| 1554 (do not change this comment) */ |
