annotate src/font.h @ 111107:f3721a6253a8

Fix mouse highlight in bidi-reordered continued lines. xdisp.c (row_containing_pos): Don't return too early when CHARPOS is in a bidi-reordered continued line. Return immediately when the first hit is found in a line that is not continued, or when an exact match for CHARPOS is found. (mouse_face_from_buffer_pos): Rewrite to not assume that START_CHARPOS is always in mouse_face_beg_row. If necessary, swap mouse_face_beg_row and mouse_face_end_row so that the former is always above the latter or identical to it. Continued lines that begin or end outside of the visible region still don't work.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 02 Oct 2010 17:05:20 +0200
parents e2f8226efb99
children b8fde5ef9e14
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
1 /* font.h -- Interface definition for font handling.
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106755
diff changeset
2 Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106755
diff changeset
3 Copyright (C) 2006, 2007, 2008, 2009, 2010
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
4 National Institute of Advanced Industrial Science and Technology (AIST)
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
5 Registration Number H13PRO009
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
6
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
7 This file is part of GNU Emacs.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
8
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94925
diff changeset
9 GNU Emacs is free software: you can redistribute it and/or modify
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
10 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94925
diff changeset
11 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94925
diff changeset
12 (at your option) any later version.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
13
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
14 GNU Emacs is distributed in the hope that it will be useful,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
17 GNU General Public License for more details.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
18
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
19 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94925
diff changeset
20 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
21
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
22 #ifndef EMACS_FONT_H
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
23 #define EMACS_FONT_H
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
24
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
25 #include "ccl.h"
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
26
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
27 /* We have three types of Lisp objects related to font.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
28
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
29 FONT-SPEC
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
30
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
31 Pseudo vector (length FONT_SPEC_MAX) of font properties. Some
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
32 properties can be left unspecified (i.e. nil). Emacs asks
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
33 font-drivers to find a font by FONT-SPEC. A fontset entry
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
34 specifies requisite properties whereas a face specifies just
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
35 preferable properties.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
36
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
37 FONT-ENTITY
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
38
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
39 Pseudo vector (length FONT_ENTITY_MAX) of fully instanciated
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
40 font properties that a font-driver returns upon a request of
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
41 FONT-SPEC.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
42
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
43 Note: Only the method `list' and `match' of a font-driver can
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
44 create this object, and should never be modified by Lisp.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
45
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
46 FONT-OBJECT
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
47
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
48 Pseudo vector (length FONT_OBJECT_MAX) of a opend font.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
49
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
50 Lisp object encapsulating "struct font". This corresponds to
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
51 an opened font.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
52
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
53 Note: Only the method `open' of a font-driver can create this
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
54 object, and should never be modified by Lisp. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
55
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
56 extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object;
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
57
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
58
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
59 struct font_driver;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
60 struct font;
95125
679d861f4d3a (find_font_encoding): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 95105
diff changeset
61 struct glyph_string;
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
62
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
63 /* An enumerator for each font property. This is used as an index to
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
64 the vector of FONT-SPEC and FONT-ENTITY.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
65
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
66 Note: The order is important and should not be changed. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
67
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
68 enum font_property_index
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
69 {
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
70 /* FONT-TYPE is a symbol indicating a font backend; currently `x',
102235
454ae7d88deb Fix comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 102234
diff changeset
71 `xft', `ftx' are available on X, `uniscribe' and `gdi' on
454ae7d88deb Fix comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 102234
diff changeset
72 Windows, and `ns' under Cocoa / GNUstep. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
73 FONT_TYPE_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
74
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
75 /* FONT-FOUNDRY is a foundry name (symbol). */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
76 FONT_FOUNDRY_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
77
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
78 /* FONT-FAMILY is a family name (symbol). */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
79 FONT_FAMILY_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
80
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
81 /* FONT-ADSTYLE is an additional style name (symbol). */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
82 FONT_ADSTYLE_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
83
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
84 /* FONT-REGISTRY is a combination of a charset-registry and
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
85 charset-encoding name (symbol). */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
86 FONT_REGISTRY_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
87
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
88 /* FONT-WEIGHT is a numeric value of weight (e.g. medium, bold) of
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
89 the font. The lowest 8-bit is an index determining the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
90 symbolic name, and the higher bits is the actual numeric value
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
91 defined in `font-weight-table'. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
92 FONT_WEIGHT_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
93
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
94 /* FONT-SLANT is a numeric value of slant (e.g. r, i, o) of the
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
95 font. The lowest 8-bit is an index determining the symbolic
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
96 name, and the higher bits is the actual numeric value defined
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
97 in `font-slant-table'. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
98 FONT_SLANT_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
99
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
100 /* FONT-WIDTH is a numeric value of setwidth (e.g. normal) of the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
101 font. The lowest 8-bit is an index determining the symbolic
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
102 name, and the higher bits is the actual numeric value defined
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
103 `font-width-table'. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
104 FONT_WIDTH_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
105
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
106 /* FONT-SIZE is a size of the font. If integer, it is a pixel
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
107 size. For a font-spec, the value can be float specifying a
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
108 point size. The value zero means that the font is
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
109 scalable. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
110 FONT_SIZE_INDEX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
111
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
112 /* FONT-DPI is a resolution (dot per inch) for which the font is
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
113 designed. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
114 FONT_DPI_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
115
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
116 /* FONT-SPACING is a spacing (mono, proportional, charcell) of the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
117 font (integer; one of enum font_spacing). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
118 FONT_SPACING_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
119
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
120 /* FONT-AVGWIDTH is an average width (1/10 pixel unit) of the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
121 font. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
122 FONT_AVGWIDTH_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
123
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
124 #if 0
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
125 /* The following two members are to substitute for the above 6
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
126 members (FONT_WEIGHT_INDEX to FONT_AVGWIDTH_INDEX excluding
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
127 FONT_SIZE_INDEX) if it is found that font-entities consumes too
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
128 much memory. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
129
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
130 /* FONT-STYLE is a 24-bit integer containing indices for
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
131 style-related properties WEIGHT, SLANT, and WIDTH. The lowest
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
132 8-bit is an indice to the weight table AREF (font_style_table,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
133 0), the next 8-bit is an indice to the slant table AREF
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
134 (font_style_table, 1), the highest 8-bit is an indice to the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
135 slant table AREF (font_style_table, 2). The indice 0 indicates
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
136 that the corresponding style is not specified. This way, we
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
137 can represent at most 255 different names for each style, which
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
138 is surely sufficient. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
139 FONT_STYLE_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
140
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
141 /* FONT-METRICS is a 27-bit integer containing metrics-related
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
142 properties DPI, AVGWIDTH, SPACING. The lowest 12-bit is for
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
143 DPI, the next 12-bit is for AVGWIDTH, the highest 3-bit is for
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
144 SPACING. In each bit field, the highest bit indicates that the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
145 corresponding value is set or not. This way, we can represent
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
146 DPI by 11-bit (0 to 2047), AVGWIDTH by 11-bit (0 to 2047),
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
147 SPACING by 3-bit (0 for proportional, 1 for dual, 2 for mono, 3
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
148 for charcell), which is surely sufficient. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
149 FONT_METRICS_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
150 #endif
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
151
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
152 /* In a font-spec, the value is an alist of extra information of a
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
153 font such as name, OpenType features, and language coverage.
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
154 In addition, in a font-entity, the value may contain a pair
102234
f4cc34c7b919 correct minor typo in comments
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 102226
diff changeset
155 (font-entity . INFO) where INFO is extra information to identify
102226
d8af6ef02f83 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 102086
diff changeset
156 a font (font-driver dependent). */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
157 FONT_EXTRA_INDEX, /* alist alist */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
158
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
159 /* This value is the length of font-spec vector. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
160 FONT_SPEC_MAX,
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
161
109349
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
162 /* The followings are used only for a font-entity and a font-object. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
163
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
164 /* List of font-objects opened from the font-entity. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
165 FONT_OBJLIST_INDEX = FONT_SPEC_MAX,
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
166
109349
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
167 /* Font-entity from which the font-object is opened. */
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
168 FONT_ENTITY_INDEX = FONT_SPEC_MAX,
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
169
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
170 /* This value is the length of font-entity vector. */
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
171 FONT_ENTITY_MAX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
172
109349
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
173 /* The followings are used only for a font-object. */
c82f3023b7f2 Make font-get to get :otf value dynamically from a font-object.
Kenichi Handa <handa@etlken>
parents: 106815
diff changeset
174
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
175 /* XLFD name of the font (string). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
176 FONT_NAME_INDEX = FONT_ENTITY_MAX,
102235
454ae7d88deb Fix comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 102234
diff changeset
177
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
178 /* Full name of the font (string). It is the name extracted from
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
179 the opend font, and may be different from the above. It may be
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
180 nil if the opened font doesn't give a name. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
181 FONT_FULLNAME_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
182
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
183 /* File name of the font or nil if a file associated with the font
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
184 is not available. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
185 FONT_FILE_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
186
95105
599666b2ea00 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
187 /* Format of the font (symbol) or nil if unknown. */
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
188 FONT_FORMAT_INDEX,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
189
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
190 /* This value is the length of font-object vector. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
191 FONT_OBJECT_MAX
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
192 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
193
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
194 /* Return the numeric weight value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
195 #define FONT_WEIGHT_NUMERIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
196 (INTEGERP (AREF ((font), FONT_WEIGHT_INDEX)) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
197 ? (XINT (AREF ((font), FONT_WEIGHT_INDEX)) >> 8) : -1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
198 /* Return the numeric slant value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
199 #define FONT_SLANT_NUMERIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
200 (INTEGERP (AREF ((font), FONT_SLANT_INDEX)) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
201 ? (XINT (AREF ((font), FONT_SLANT_INDEX)) >> 8) : -1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
202 /* Return the numeric width value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
203 #define FONT_WIDTH_NUMERIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
204 (INTEGERP (AREF ((font), FONT_WIDTH_INDEX)) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
205 ? (XINT (AREF ((font), FONT_WIDTH_INDEX)) >> 8) : -1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
206 /* Return the symbolic weight value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
207 #define FONT_WEIGHT_SYMBOLIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
208 font_style_symbolic (font, FONT_WEIGHT_INDEX, 0)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
209 /* Return the symbolic slant value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
210 #define FONT_SLANT_SYMBOLIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
211 font_style_symbolic (font, FONT_SLANT_INDEX, 0)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
212 /* Return the symbolic width value of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
213 #define FONT_WIDTH_SYMBOLIC(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
214 font_style_symbolic (font, FONT_WIDTH_INDEX, 0)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
215 /* Return the face-weight corresponding to the weight of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
216 #define FONT_WEIGHT_FOR_FACE(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
217 font_style_symbolic (font, FONT_WEIGHT_INDEX, 1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
218 /* Return the face-slant corresponding to the slant of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
219 #define FONT_SLANT_FOR_FACE(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
220 font_style_symbolic (font, FONT_SLANT_INDEX, 1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
221 /* Return the face-swidth corresponding to the slant of FONT. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
222 #define FONT_WIDTH_FOR_FACE(font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
223 font_style_symbolic (font, FONT_WIDTH_INDEX, 1)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
224
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
225 /* Return the numeric weight value corresponding ot the symbol NAME. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
226 #define FONT_WEIGHT_NAME_NUMERIC(name) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
227 (font_style_to_value (FONT_WEIGHT_INDEX, (name), 0) >> 8)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
228 /* Return the numeric slant value corresponding ot the symbol NAME. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
229 #define FONT_SLANT_NAME_NUMERIC(name) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
230 (font_style_to_value (FONT_SLANT_INDEX, (name), 0) >> 8)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
231 /* Return the numeric width value corresponding ot the symbol NAME. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
232 #define FONT_WIDTH_NAME_NUMERIC(name) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
233 (font_style_to_value (FONT_WIDTH_INDEX, (name), 0) >> 8)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
234
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
235 /* Set the font property PROP of FONT to VAL. PROP is one of
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
236 style-related font property index (FONT_WEIGHT/SLANT/WIDTH_INDEX).
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
237 VAL (integer or symbol) is the numeric or symbolic style value. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
238 #define FONT_SET_STYLE(font, prop, val) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
239 ASET ((font), prop, make_number (font_style_to_value (prop, val, 1)))
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
240
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
241 extern Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
242 extern Lisp_Object QCavgwidth, QCantialias, QCfont_entity, QCfc_unknown_spec;
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
243 extern Lisp_Object Qp;
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
244
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
245
90438
cac8d07077df (Qiso8859_1, Qiso10646_1, Qunicode_bmp): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90427
diff changeset
246 /* Important character set symbols. */
95701
a3dac6d5d38f (Qascii_0): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 95181
diff changeset
247 extern Lisp_Object Qascii_0;
90621
d8a2b76fe3d4 (Qunicode_sip): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 90564
diff changeset
248 extern Lisp_Object Qiso8859_1, Qiso10646_1, Qunicode_bmp, Qunicode_sip;
90438
cac8d07077df (Qiso8859_1, Qiso10646_1, Qunicode_bmp): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90427
diff changeset
249
103011
8f0fbb48af5a * font.c (Qja, Qko): Move definitions here from ftfont.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 102485
diff changeset
250 /* Special ADSTYLE properties to avoid fonts used for Latin characters. */
8f0fbb48af5a * font.c (Qja, Qko): Move definitions here from ftfont.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 102485
diff changeset
251 extern Lisp_Object Qja, Qko;
8f0fbb48af5a * font.c (Qja, Qko): Move definitions here from ftfont.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 102485
diff changeset
252
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
253 /* Structure for a font-spec. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
254
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
255 struct font_spec
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
256 {
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
257 EMACS_UINT size;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
258 struct Lisp_Vector *next;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
259 Lisp_Object props[FONT_SPEC_MAX];
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
260 };
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
261
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
262 /* Structure for a font-entity. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
263
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
264 struct font_entity
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
265 {
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
266 EMACS_UINT size;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
267 struct Lisp_Vector *next;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
268 Lisp_Object props[FONT_ENTITY_MAX];
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
269 };
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
270
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
271 /* A value which may appear in the member `encoding' of struct font
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
272 indicating that a font itself doesn't tell which encoding to be
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
273 used. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
274 #define FONT_ENCODING_NOT_DECIDED 255
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
275
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
276 /* Structure for a font-object. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
277
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
278 struct font
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
279 {
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
280 EMACS_UINT size;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
281 struct Lisp_Vector *next;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
282
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
283 /* All Lisp_Object components must come first.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
284 That ensures they are all aligned normally. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
285
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
286 Lisp_Object props[FONT_OBJECT_MAX];
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
287
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
288 /* Beyond here, there should be no more Lisp_Object components. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
289
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
290 /* Maximum bound width over all existing characters of the font. On
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
291 X window, this is same as (font->max_bounds.width). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
292 int max_width;
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
293
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
294 /* By which pixel size the font is opened. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
295 int pixel_size;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
296
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
297 /* Height of the font. On X window, this is the same as
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
298 (font->ascent + font->descent). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
299 int height;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
300
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
301 /* Width of the space glyph of the font. If the font doesn't have a
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
302 SPACE glyph, the value is 0. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
303 int space_width;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
304
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
305 /* Average width of glyphs in the font. If the font itself doesn't
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
306 have that information but has glyphs of ASCII character, the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
307 value is the average with of those glyphs. Otherwise, the value
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
308 is 0. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
309 int average_width;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
310
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
311 /* Minimum glyph width (in pixels). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
312 int min_width;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
313
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
314 /* Ascent and descent of the font (in pixels). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
315 int ascent, descent;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
316
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
317 /* Vertical pixel width of the underline. If is zero if that
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
318 information is not in the font. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
319 int underline_thickness;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
320
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
321 /* Vertical pixel position (relative to the baseline) of the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
322 underline. If it is positive, it is below the baseline. It is
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
323 negative if that information is not in the font. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
324 int underline_position;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
325
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
326 /* 1 if `vertical-centering-font-regexp' matches this font name.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
327 In this case, we render characters at vartical center positions
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
328 of lines. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
329 int vertical_centering;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
330
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
331 /* Encoding type of the font. The value is one of
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
332 0, 1, 2, or 3:
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
333 0: code points 0x20..0x7F or 0x2020..0x7F7F are used
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
334 1: code points 0xA0..0xFF or 0xA0A0..0xFFFF are used
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
335 2: code points 0x20A0..0x7FFF are used
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
336 3: code points 0xA020..0xFF7F are used
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
337 If the member `font_encoder' is not NULL, this member is ignored. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
338 unsigned char encoding_type;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
339
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
340 /* The baseline position of a font is normally `ascent' value of the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
341 font. However, there exists many fonts which don't set `ascent'
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
342 an appropriate value to be used as baseline position. This is
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
343 typical in such ASCII fonts which are designed to be used with
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
344 Chinese, Japanese, Korean characters. When we use mixture of
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
345 such fonts and normal fonts (having correct `ascent' value), a
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
346 display line gets very ugly. Since we have no way to fix it
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
347 automatically, it is users responsibility to supply well designed
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
348 fonts or correct `ascent' value of fonts. But, the latter
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
349 requires heavy work (modifying all bitmap data in BDF files).
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
350 So, Emacs accepts a private font property
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
351 `_MULE_BASELINE_OFFSET'. If a font has this property, we
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
352 calculate the baseline position by subtracting the value from
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
353 `ascent'. In other words, the value indicates how many bits
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
354 higher we should draw a character of the font than normal ASCII
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
355 text for a better looking.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
356
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
357 We also have to consider the fact that the concept of `baseline'
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
358 differs among scripts to which each character belongs. For
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
359 instance, baseline should be at the bottom most position of all
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
360 glyphs for Chinese, Japanese, and Korean. But, many of existing
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
361 fonts for those characters doesn't have correct `ascent' values
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
362 because they are designed to be used with ASCII fonts. To
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
363 display characters of different language on the same line, the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
364 best way will be to arrange them in the middle of the line. So,
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
365 in such a case, again, we utilize the font property
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
366 `_MULE_BASELINE_OFFSET'. If the value is larger than `ascent' we
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
367 calculate baseline so that a character is arranged in the middle
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
368 of a line. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
369 int baseline_offset;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
370
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
371 /* Non zero means a character should be composed at a position
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
372 relative to the height (or depth) of previous glyphs in the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
373 following cases:
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
374 (1) The bottom of the character is higher than this value. In
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
375 this case, the character is drawn above the previous glyphs.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
376 (2) The top of the character is lower than 0 (i.e. baseline
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
377 height). In this case, the character is drawn beneath the
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
378 previous glyphs.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
379
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
380 This value is taken from a private font property
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
381 `_MULE_RELATIVE_COMPOSE' which is introduced by Emacs. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
382 int relative_compose;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
383
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
384 /* Non zero means an ascent value to be used for a character
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
385 registered in char-table `use-default-ascent'. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
386 int default_ascent;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
387
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
388 /* CCL program to calculate code points of the font. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
389 struct ccl_program *font_encoder;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
390
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
391 /* Font-driver for the font. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
392 struct font_driver *driver;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
393
90506
5f608d7e835b (font_close_object, font_merge_old_spec): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90502
diff changeset
394 /* Charset to encode a character code into a glyph code of the font.
5f608d7e835b (font_close_object, font_merge_old_spec): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90502
diff changeset
395 -1 means that the font doesn't require this information to encode
5f608d7e835b (font_close_object, font_merge_old_spec): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90502
diff changeset
396 a character. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
397 int encoding_charset;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
398
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
399 /* Charset to check if a character code is supported by the font.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
400 -1 means that the contents of the font must be looked up to
90506
5f608d7e835b (font_close_object, font_merge_old_spec): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90502
diff changeset
401 determine it. */
90453
3a78ea4d2a53 (struct font): Fix typo (charet->charset).
Kenichi Handa <handa@m17n.org>
parents: 90438
diff changeset
402 int repertory_charset;
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
403
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
404 /* There will be more to this structure, but they are private to a
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
405 font-driver. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
406 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
407
90482
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
408 enum font_spacing
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
409 {
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
410 FONT_SPACING_PROPORTIONAL = 0,
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
411 FONT_SPACING_DUAL = 90,
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
412 FONT_SPACING_MONO = 100,
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
413 FONT_SPACING_CHARCELL = 110
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
414 };
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
415
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
416 struct font_metrics
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
417 {
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
418 short lbearing, rbearing, width, ascent, descent;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
419 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
420
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
421 struct font_bitmap
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
422 {
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
423 int bits_per_pixel;
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
424 int rows;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
425 int width;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
426 int pitch;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
427 unsigned char *buffer;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
428 int left;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
429 int top;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
430 int advance;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
431 void *extra;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
432 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
433
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
434 /* Predicates to check various font-related objects. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
435
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
436 /* 1 iff X is one of font-spec, font-entity, and font-object. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
437 #define FONTP(x) PSEUDOVECTORP (x, PVEC_FONT)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
438 /* 1 iff X is font-spec. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
439 #define FONT_SPEC_P(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
440 (FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_SPEC_MAX)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
441 /* 1 iff X is font-entity. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
442 #define FONT_ENTITY_P(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
443 (FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_ENTITY_MAX)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
444 /* 1 iff X is font-object. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
445 #define FONT_OBJECT_P(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
446 (FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_OBJECT_MAX)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
447
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
448 /* 1 iff ENTITY can't be loaded. */
91134
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
449 #define FONT_ENTITY_NOT_LOADABLE(entity) \
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
450 EQ (AREF (entity, FONT_OBJLIST_INDEX), Qt)
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
451
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
452 /* Flag ENTITY not loadable. */
91134
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
453 #define FONT_ENTITY_SET_NOT_LOADABLE(entity) \
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
454 ASET (entity, FONT_OBJLIST_INDEX, Qt)
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
455
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
456
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
457 /* Check macros for various font-related objects. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
458
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
459 #define CHECK_FONT(x) \
91813
ca1e1298a3d8 (smerge-auto-combine-max-separation): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91552
diff changeset
460 do { if (! FONTP (x)) wrong_type_argument (Qfont, x); } while (0)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
461 #define CHECK_FONT_SPEC(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
462 do { if (! FONT_SPEC_P (x)) wrong_type_argument (Qfont_spec, x); } while (0)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
463 #define CHECK_FONT_ENTITY(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
464 do { if (! FONT_ENTITY_P (x)) wrong_type_argument (Qfont_entity, x); } while (0)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
465 #define CHECK_FONT_OBJECT(x) \
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
466 do { if (! FONT_OBJECT_P (x)) wrong_type_argument (Qfont_object, x); } while (0)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
467
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
468 #define CHECK_FONT_GET_OBJECT(x, font) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
469 do { \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
470 CHECK_FONT_OBJECT (x); \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
471 font = XFONT_OBJECT (x); \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
472 } while (0)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
473
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
474 #define XFONT_SPEC(p) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
475 (eassert (FONT_SPEC_P(p)), (struct font_spec *) XPNTR (p))
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
476 #define XFONT_ENTITY(p) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
477 (eassert (FONT_ENTITY_P(p)), (struct font_entity *) XPNTR (p))
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
478 #define XFONT_OBJECT(p) \
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
479 (eassert (FONT_OBJECT_P(p)), (struct font *) XPNTR (p))
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
480 #define XSETFONT(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_FONT))
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
481
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
482 /* Number of pt per inch (from the TeXbook). */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
483 #define PT_PER_INCH 72.27
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
484
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
485 /* Return a pixel size (integer) corresponding to POINT size (double)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
486 on resolution DPI. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
487 #define POINT_TO_PIXEL(POINT, DPI) ((POINT) * (DPI) / PT_PER_INCH + 0.5)
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
488
96226
1c73e69fc195 (PIXEL_TO_POINT): Clarify usage in comment.
Jason Rumney <jasonr@gnu.org>
parents: 96005
diff changeset
489 /* Return a point size corresponding to POINT size (integer)
1c73e69fc195 (PIXEL_TO_POINT): Clarify usage in comment.
Jason Rumney <jasonr@gnu.org>
parents: 96005
diff changeset
490 on resolution DPI. Note that though point size is a double, we expect
1c73e69fc195 (PIXEL_TO_POINT): Clarify usage in comment.
Jason Rumney <jasonr@gnu.org>
parents: 96005
diff changeset
491 it to be rounded to an int, so we add 0.5 here. If the desired value
1c73e69fc195 (PIXEL_TO_POINT): Clarify usage in comment.
Jason Rumney <jasonr@gnu.org>
parents: 96005
diff changeset
492 is tenths of points (as in xfld specs), then the pixel size should
1c73e69fc195 (PIXEL_TO_POINT): Clarify usage in comment.
Jason Rumney <jasonr@gnu.org>
parents: 96005
diff changeset
493 be multiplied BEFORE the conversion to avoid magnifying the error. */
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
494 #define PIXEL_TO_POINT(PIXEL, DPI) ((PIXEL) * PT_PER_INCH / (DPI) + 0.5)
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
495
90482
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
496 /* Ignore the difference of font pixel sizes less than or equal to
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
497 this value. */
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
498 #define FONT_PIXEL_SIZE_QUANTUM 1
48a50b114c17 (QCspacing, QCdpi): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90469
diff changeset
499
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
500 struct face;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
501
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
502 #define FONT_INVALID_CODE 0xFFFFFFFF
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
503
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
504 /* Font driver. Members specified as "optional" can be NULL. */
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
505
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
506 struct font_driver
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
507 {
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
508 /* Symbol indicating the type of the font-driver. */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
509 Lisp_Object type;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
510
102226
d8af6ef02f83 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 102086
diff changeset
511 /* 1 iff the font's foundry, family, and adstyle names are case
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
512 sensitve. */
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
513 int case_sensitive;
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
514
91244
54b067217411 (struct font_driver): Change argument type of get_cache.
Kenichi Handa <handa@m17n.org>
parents: 91134
diff changeset
515 /* Return a cache of font-entities on frame F. The cache must be a
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
516 cons whose cdr part is the actual cache area. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
517 Lisp_Object (*get_cache) (FRAME_PTR F);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
518
90564
cb3eb6150704 (struct font_driver): New member `match'.
Kenichi Handa <handa@m17n.org>
parents: 90557
diff changeset
519 /* List fonts exactly matching with FONT_SPEC on FRAME. The value
102084
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
520 is a list of font-entities. The font properties to be considered
102086
c70627aa5a6b (struct font_driver): Fix typo.
Kenichi Handa <handa@m17n.org>
parents: 102084
diff changeset
521 are: :foundry, :family, :adstyle, :registry, :script, :lang, and
102084
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
522 :otf. See the function `font-spec' for their meanings. Note
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
523 that the last three properties are stored in FONT_EXTRA_INDEX
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
524 slot of FONT_SPEC.
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
525
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
526 The returned value is a list of font-entities. Each font-entity
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
527 has :type property whose value is the same as the above `type'.
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
528 It also has these properties if they are available from the
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
529 corresponding font; :foundry, :family, :adstyle, :registry,
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
530 :weight, :slant, :width, :size, :dpi, :spacing, :avgwidth. If
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
531 the font is scalable, :size and :avgwidth must be 0.
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
532
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
533 The `open' method of the same font-backend is called with one of
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
534 the returned font-entities. If the backend needs additional
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
535 information to be used in `open' method, this method can add any
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
536 Lispy value by the property :font-entity to the entities.
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
537
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
538 This and the following `match' are the only APIs that allocate
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
539 font-entities. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
540 Lisp_Object (*list) (Lisp_Object frame, Lisp_Object font_spec);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
541
102086
c70627aa5a6b (struct font_driver): Fix typo.
Kenichi Handa <handa@m17n.org>
parents: 102084
diff changeset
542 /* Return a font-entity most closely matching with FONT_SPEC on
102084
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
543 FRAME. Which font property to consider, and how to calculate the
102086
c70627aa5a6b (struct font_driver): Fix typo.
Kenichi Handa <handa@m17n.org>
parents: 102084
diff changeset
544 closeness is determined by the font backend, thus
102084
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
545 `face-font-selection-order' is ignored here.
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
546
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
547 The properties that the font-entity has is the same as `list'
444641a3190b *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 101554
diff changeset
548 method. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
549 Lisp_Object (*match) (Lisp_Object frame, Lisp_Object font_spec);
90564
cb3eb6150704 (struct font_driver): New member `match'.
Kenichi Handa <handa@m17n.org>
parents: 90557
diff changeset
550
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
551 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
552 List available families. The value is a list of family names
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
553 (symbols). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
554 Lisp_Object (*list_family) (Lisp_Object frame);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
555
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
556 /* Optional (if FONT_EXTRA_INDEX is not Lisp_Save_Value).
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
557 Free FONT_EXTRA_INDEX field of FONT_ENTITY. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
558 void (*free_entity) (Lisp_Object font_entity);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
559
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
560 /* Open a font specified by FONT_ENTITY on frame F. If the font is
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
561 scalable, open it with PIXEL_SIZE. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
562 Lisp_Object (*open) (FRAME_PTR f, Lisp_Object font_entity,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
563 int pixel_size);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
564
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
565 /* Close FONT on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
566 void (*close) (FRAME_PTR f, struct font *font);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
567
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
568 /* Optional (if FACE->extra is not used).
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
569 Prepare FACE for displaying characters by FONT on frame F by
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
570 storing some data in FACE->extra. If successful, return 0.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
571 Otherwise, return -1. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
572 int (*prepare_face) (FRAME_PTR f, struct face *face);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
573
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
574 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
575 Done FACE for displaying characters by FACE->font on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
576 void (*done_face) (FRAME_PTR f, struct face *face);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
577
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
578 /* Optional.
101554
52affc17c7cf (struct font_driver): Fix comment for has_char.
Kenichi Handa <handa@m17n.org>
parents: 100951
diff changeset
579 If FONT (FONT-ENTITY or FONT-OBJECT) has a glyph for character C
52affc17c7cf (struct font_driver): Fix comment for has_char.
Kenichi Handa <handa@m17n.org>
parents: 100951
diff changeset
580 (Unicode code point), return 1. If not, return 0. If FONT is
52affc17c7cf (struct font_driver): Fix comment for has_char.
Kenichi Handa <handa@m17n.org>
parents: 100951
diff changeset
581 FONT-ENTITY and it must be opened to check it, return -1. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
582 int (*has_char) (Lisp_Object font, int c);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
583
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
584 /* Return a glyph code of FONT for characer C (Unicode code point).
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
585 If FONT doesn't have such a glyph, return FONT_INVALID_CODE. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
586 unsigned (*encode_char) (struct font *font, int c);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
587
91033
e25192c0a550 (struct font_driver): Docstring of text_extents improved.
Kenichi Handa <handa@m17n.org>
parents: 90885
diff changeset
588 /* Computate the total metrics of the NGLYPHS glyphs specified by
e25192c0a550 (struct font_driver): Docstring of text_extents improved.
Kenichi Handa <handa@m17n.org>
parents: 90885
diff changeset
589 the font FONT and the sequence of glyph codes CODE, and store the
e25192c0a550 (struct font_driver): Docstring of text_extents improved.
Kenichi Handa <handa@m17n.org>
parents: 90885
diff changeset
590 result in METRICS. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
591 int (*text_extents) (struct font *font,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
592 unsigned *code, int nglyphs,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
593 struct font_metrics *metrics);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
594
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
595 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
596 Draw glyphs between FROM and TO of S->char2b at (X Y) pixel
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
597 position of frame F with S->FACE and S->GC. If WITH_BACKGROUND
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
598 is nonzero, fill the background in advance. It is assured that
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
599 WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
600 int (*draw) (struct glyph_string *s, int from, int to,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
601 int x, int y, int with_background);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
602
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
603 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
604 Store bitmap data for glyph-code CODE of FONT in BITMAP. It is
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
605 intended that this method is callled from the other font-driver
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
606 for actual drawing. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
607 int (*get_bitmap) (struct font *font, unsigned code,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
608 struct font_bitmap *bitmap,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
609 int bits_per_pixel);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
610
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
611 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
612 Free bitmap data in BITMAP. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
613 void (*free_bitmap) (struct font *font, struct font_bitmap *bitmap);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
614
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
615 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
616 Return an outline data for glyph-code CODE of FONT. The format
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
617 of the outline data depends on the font-driver. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
618 void *(*get_outline) (struct font *font, unsigned code);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
619
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
620 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
621 Free OUTLINE (that is obtained by the above method). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
622 void (*free_outline) (struct font *font, void *outline);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
623
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
624 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
625 Get coordinates of the INDEXth anchor point of the glyph whose
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
626 code is CODE. Store the coordinates in *X and *Y. Return 0 if
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
627 the operations was successfull. Otherwise return -1. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
628 int (*anchor_point) (struct font *font, unsigned code, int index,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
629 int *x, int *y);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
630
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
631 /* Optional.
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
632 Return a list describing which scripts/languages FONT
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
633 supports by which GSUB/GPOS features of OpenType tables. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
634 Lisp_Object (*otf_capability) (struct font *font);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
635
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
636 /* Optional.
90815
d0368a3e5450 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90696
diff changeset
637 Apply FONT's OTF-FEATURES to the glyph string.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
638
90815
d0368a3e5450 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90696
diff changeset
639 FEATURES specifies which OTF features to apply in this format:
d0368a3e5450 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90696
diff changeset
640 (SCRIPT LANGSYS GSUB-FEATURE GPOS-FEATURE)
d0368a3e5450 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90696
diff changeset
641 See the documentation of `font-drive-otf' for the detail.
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
642
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
643 This method applies the specified features to the codes in the
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
644 elements of GSTRING-IN (between FROMth and TOth). The output
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
645 codes are stored in GSTRING-OUT at the IDXth element and the
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
646 following elements.
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
647
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
648 Return the number of output codes. If none of the features are
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
649 applicable to the input data, return 0. If GSTRING-OUT is too
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
650 short, return -1. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
651 int (*otf_drive) (struct font *font, Lisp_Object features,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
652 Lisp_Object gstring_in, int from, int to,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
653 Lisp_Object gstring_out, int idx, int alternate_subst);
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
654
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
655 /* Optional.
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
656 Make the font driver ready for frame F. Usually this function
97823
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
657 makes some data specific to F and stores it in F by calling
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
658 font_put_frame_data (). */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
659 int (*start_for_frame) (FRAME_PTR f);
102235
454ae7d88deb Fix comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 102234
diff changeset
660
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
661 /* Optional.
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
662 End using the driver for frame F. Usually this function free
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
663 some data stored for F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
664 int (*end_for_frame) (FRAME_PTR f);
91134
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
665
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
666 /* Optional.
91293
c45d16b39212 (struct font_driver): Docstring of member `shape' is improved.
Kenichi Handa <handa@m17n.org>
parents: 91274
diff changeset
667
97823
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
668 Shape text in GSTRING. See the docstring of
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
669 `composition-get-gstring' for the format of GSTRING. If the
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
670 (N+1)th element of GSTRING is nil, input of shaping is from the
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
671 1st to (N)th elements. In each input glyph, FROM, TO, CHAR, and
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
672 CODE are already set.
91293
c45d16b39212 (struct font_driver): Docstring of member `shape' is improved.
Kenichi Handa <handa@m17n.org>
parents: 91274
diff changeset
673
c45d16b39212 (struct font_driver): Docstring of member `shape' is improved.
Kenichi Handa <handa@m17n.org>
parents: 91274
diff changeset
674 This function updates all fields of the input glyphs. If the
c45d16b39212 (struct font_driver): Docstring of member `shape' is improved.
Kenichi Handa <handa@m17n.org>
parents: 91274
diff changeset
675 output glyphs (M) are more than the input glyphs (N), (N+1)th
97823
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
676 through (M)th elements of GSTRING are updated possibly by making
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
677 a new glyph object and storing it in GSTRING. If (M) is greater
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
678 than the length of GSTRING, nil should be return. In that case,
b3102226d335 * font.h (enum lgstring_indices): Delete it.
Kenichi Handa <handa@m17n.org>
parents: 97557
diff changeset
679 this function is called again with the larger GSTRING. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
680 Lisp_Object (*shape) (Lisp_Object lgstring);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
681
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
682 /* Optional.
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
683
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
684 If FONT is usable on frame F, return 0. Otherwise return -1.
100791
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
685 This method is used only for debugging. If this method is NULL,
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
686 Emacs assumes that the font is usable on any frame. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
687 int (*check) (FRAME_PTR F, struct font *font);
100791
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
688
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
689 /* Optional.
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
690
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
691 Return the number of variation glyphs of character C supported by
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
692 FONT. VARIATIONS is an array of 256 elements. If the variation
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
693 selector N (1..256) defines a glyph, that glyph code is stored in
1dc21862170d (struct font_driver): New member get_variation_glyphs.
Kenichi Handa <handa@m17n.org>
parents: 97887
diff changeset
694 the (N-1)th element of VARIATIONS. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
695 int (*get_variation_glyphs) (struct font *font,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
696 int c, unsigned variations[256]);
106085
cd4cbab8bb21 Handle system default font and changing font parameters.
Jan Djärv <jan.h.d@swipnet.se>
parents: 103549
diff changeset
697
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
698 void (*filter_properties) (Lisp_Object font, Lisp_Object properties);
106755
574dd89b7759 Fix slowdown and wrong font choosed by XSETTINGS changes. bug #5157.
Jan D. <jan.h.d@swipnet.se>
parents: 106085
diff changeset
699
574dd89b7759 Fix slowdown and wrong font choosed by XSETTINGS changes. bug #5157.
Jan D. <jan.h.d@swipnet.se>
parents: 106085
diff changeset
700 /* Optional.
574dd89b7759 Fix slowdown and wrong font choosed by XSETTINGS changes. bug #5157.
Jan D. <jan.h.d@swipnet.se>
parents: 106085
diff changeset
701
574dd89b7759 Fix slowdown and wrong font choosed by XSETTINGS changes. bug #5157.
Jan D. <jan.h.d@swipnet.se>
parents: 106085
diff changeset
702 Return non-zero if FONT_OBJECT can be used as a (cached) font
574dd89b7759 Fix slowdown and wrong font choosed by XSETTINGS changes. bug #5157.
Jan D. <jan.h.d@swipnet.se>
parents: 106085
diff changeset
703 for ENTITY on frame F. */
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
704 int (*cached_font_ok) (struct frame *f,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
705 Lisp_Object font_object,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
706 Lisp_Object entity);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
707 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
708
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
709
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
710 /* Chain of font drivers. There's one global font driver list
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
711 (font_driver_list in font.c). In addition, each frame has it's own
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
712 font driver list at FRAME_PTR->font_driver_list. */
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
713
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
714 struct font_driver_list
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
715 {
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
716 /* 1 iff this driver is currently used. It is igonred in the global
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
717 font driver list.*/
90550
5996c3b2f18d *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90542
diff changeset
718 int on;
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
719 /* Pointer to the font driver. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
720 struct font_driver *driver;
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
721 /* Pointer to the next element of the chain. */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
722 struct font_driver_list *next;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
723 };
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
724
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
725
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
726 /* Chain of arbitrary data specific to each font driver. Each frame
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
727 has it's own font data list at FRAME_PTR->font_data_list. */
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
728
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
729 struct font_data_list
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
730 {
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
731 /* Pointer to the font driver. */
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
732 struct font_driver *driver;
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
733 /* Data specific to the font driver. */
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
734 void *data;
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
735 /* Pointer to the next element of the chain. */
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
736 struct font_data_list *next;
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
737 };
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
738
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
739 EXFUN (Ffont_spec, MANY);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
740 EXFUN (Fcopy_font_spec, 1);
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
741 EXFUN (Fmerge_font_spec, 2);
91134
d8c3402ee3fa (FONT_ENTITY_NOT_LOADABLE)
Kenichi Handa <handa@m17n.org>
parents: 91114
diff changeset
742 EXFUN (Ffont_get, 2);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
743 EXFUN (Ffont_put, 3);
90497
655b68ccb716 (Flist_fonts): EXFUN it.
Kenichi Handa <handa@m17n.org>
parents: 90482
diff changeset
744 EXFUN (Flist_fonts, 4);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
745 EXFUN (Ffont_family_list, 1);
90550
5996c3b2f18d *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 90542
diff changeset
746 EXFUN (Fclear_font_cache, 0);
95181
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
747 EXFUN (Ffont_xlfd_name, 2);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
748
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
749 extern Lisp_Object font_make_spec (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
750 extern Lisp_Object font_make_entity (void);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
751 extern Lisp_Object font_make_object (int, Lisp_Object, int);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
752
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
753 extern Lisp_Object find_font_encoding (Lisp_Object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
754 extern int font_registry_charsets (Lisp_Object, struct charset **,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
755 struct charset **);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
756 extern int font_style_to_value (enum font_property_index prop,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
757 Lisp_Object name, int noerror);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
758 extern Lisp_Object font_style_symbolic (Lisp_Object font,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
759 enum font_property_index prop,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
760 int for_face);
102235
454ae7d88deb Fix comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 102234
diff changeset
761
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
762 extern int font_match_p (Lisp_Object spec, Lisp_Object font);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
763 extern Lisp_Object font_list_entities (Lisp_Object frame,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
764 Lisp_Object spec);
90469
c9df3c05d0ed (struct font_driver): Member parse_name deleted.
Kenichi Handa <handa@m17n.org>
parents: 90453
diff changeset
765
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
766 extern Lisp_Object font_get_name (Lisp_Object font_object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
767 extern Lisp_Object font_spec_from_name (Lisp_Object font_name);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
768 extern Lisp_Object font_get_frame (Lisp_Object font_object);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
769 extern int font_has_char (FRAME_PTR, Lisp_Object, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
770 extern unsigned font_encode_char (Lisp_Object, int);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
771
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
772 extern void font_clear_prop (Lisp_Object *attrs,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
773 enum font_property_index prop);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
774 extern void font_update_lface (FRAME_PTR f, Lisp_Object *attrs);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
775 extern Lisp_Object font_find_for_lface (FRAME_PTR f, Lisp_Object *lface,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
776 Lisp_Object spec, int c);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
777 extern Lisp_Object font_open_for_lface (FRAME_PTR f, Lisp_Object entity,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
778 Lisp_Object *lface,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
779 Lisp_Object spec);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
780 extern Lisp_Object font_load_for_lface (FRAME_PTR f, Lisp_Object *lface,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
781 Lisp_Object spec);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
782 extern void font_prepare_for_face (FRAME_PTR f, struct face *face);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
783 extern void font_done_for_face (FRAME_PTR f, struct face *face);
94925
3b446dc6d76d (Qfont_spec, Qfont_entity, Qfont_object): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 93597
diff changeset
784
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
785 extern Lisp_Object font_open_by_spec (FRAME_PTR f, Lisp_Object spec);
109748
e2f8226efb99 Fix -Wwrite_strings in general and for Gtk+ specific code.
Jan D <jan.h.d@swipnet.se>
parents: 109735
diff changeset
786 extern Lisp_Object font_open_by_name (FRAME_PTR f, const char *name);
90506
5f608d7e835b (font_close_object, font_merge_old_spec): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 90502
diff changeset
787 extern void font_close_object (FRAME_PTR f, Lisp_Object font_object);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
788
109717
8949aad5e992 Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109635
diff changeset
789 extern Lisp_Object font_intern_prop (const char *str, int len, int force_symbol);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
790 extern void font_update_sort_order (int *order);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
791
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
792 extern void font_parse_family_registry (Lisp_Object family,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
793 Lisp_Object registry,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
794 Lisp_Object spec);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
795 extern Lisp_Object font_spec_from_family_registry (Lisp_Object family,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
796 Lisp_Object registry);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
797
109735
0fe981e141e3 Remove incorrect const use.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
798 extern int font_parse_xlfd (char *name, Lisp_Object font);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
799 extern int font_unparse_xlfd (Lisp_Object font, int pixel_size,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
800 char *name, int bytes);
109735
0fe981e141e3 Remove incorrect const use.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
801 extern int font_parse_fcname (char *name, Lisp_Object font);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
802 extern int font_unparse_fcname (Lisp_Object font, int pixel_size,
109735
0fe981e141e3 Remove incorrect const use.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109717
diff changeset
803 char *name, int bytes);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
804 extern int font_unparse_gtkname (Lisp_Object, struct frame *, char *, int);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
805 extern void register_font_driver (struct font_driver *driver, FRAME_PTR f);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
806 extern void free_font_driver_list (FRAME_PTR f);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
807 extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
808 extern Lisp_Object font_at (int c, EMACS_INT pos, struct face *face,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
809 struct window *w, Lisp_Object object);
97887
cff62eaa08c4 * font.h (font_range):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 97823
diff changeset
810 extern Lisp_Object font_range (EMACS_INT, EMACS_INT *,
cff62eaa08c4 * font.h (font_range):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 97823
diff changeset
811 struct window *, struct face *,
cff62eaa08c4 * font.h (font_range):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 97823
diff changeset
812 Lisp_Object);
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
813 extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
814
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
815 extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
816 Lisp_Object val);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
817
109099
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
818 extern int font_put_frame_data (FRAME_PTR f,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
819 struct font_driver *driver,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
820 void *data);
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
821 extern void *font_get_frame_data (FRAME_PTR f,
e16f43875a48 Remove P_ and __P macros.
Jan D <jan.h.d@swipnet.se>
parents: 106815
diff changeset
822 struct font_driver *driver);
91114
ce50ee0149be (struct font_bitmap): New member bits_per_pixel.
Kenichi Handa <handa@m17n.org>
parents: 91033
diff changeset
823
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
824 #ifdef HAVE_FREETYPE
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
825 extern struct font_driver ftfont_driver;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
826 extern void syms_of_ftfont (void);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
827 #endif /* HAVE_FREETYPE */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
828 #ifdef HAVE_X_WINDOWS
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
829 extern struct font_driver xfont_driver;
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
830 extern struct font_driver ftxfont_driver;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
831 extern void syms_of_xfont (void);
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
832 extern void syms_of_ftxfont (void);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
833 #ifdef HAVE_XFT
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
834 extern struct font_driver xftfont_driver;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
835 extern void syms_of_xftfont (void);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
836 #endif /* HAVE_XFT */
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
837 #ifdef HAVE_BDFFONT
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
838 extern void syms_of_bdffont (void);
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
839 #endif /* HAVE_BDFFONT */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
840 #endif /* HAVE_X_WINDOWS */
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
841 #ifdef WINDOWSNT
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
842 extern struct font_driver w32font_driver;
93597
0dac12128e1c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 91813
diff changeset
843 extern struct font_driver uniscribe_font_driver;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
844 extern void syms_of_w32font (void);
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
845 #endif /* WINDOWSNT */
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96557
diff changeset
846 #ifdef HAVE_NS
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
847 extern Lisp_Object Qfontsize;
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96557
diff changeset
848 extern struct font_driver nsfont_driver;
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
849 extern void syms_of_nsfont (void);
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96557
diff changeset
850 #endif /* HAVE_NS */
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
851
95181
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
852 #ifndef FONT_DEBUG
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
853 #define FONT_DEBUG
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
854 #endif
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
855
109635
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
856 extern Lisp_Object QCfoundry, QCadstyle, QCregistry;
fc7a8c411aa3 Add declarations to header files.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109350
diff changeset
857
103549
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
858 extern Lisp_Object Vfont_log;
109717
8949aad5e992 Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109635
diff changeset
859 extern void font_add_log (const char *, Lisp_Object, Lisp_Object);
8949aad5e992 Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109635
diff changeset
860 extern void font_deferred_log (const char *, Lisp_Object, Lisp_Object);
95181
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
861
103549
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
862 #define FONT_ADD_LOG(ACTION, ARG, RESULT) \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
863 do { \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
864 if (! EQ (Vfont_log, Qt)) \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
865 font_add_log ((ACTION), (ARG), (RESULT)); \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
866 } while (0)
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
867
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
868 #define FONT_DEFERRED_LOG(ACTION, ARG, RESULT) \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
869 do { \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
870 if (! EQ (Vfont_log, Qt)) \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
871 font_deferred_log ((ACTION), (ARG), (RESULT)); \
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
872 } while (0)
3ff935d94ca3 (Vfont_log): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 103011
diff changeset
873
95181
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
874 #ifdef FONT_DEBUG
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
875 #define font_assert(X) do {if (!(X)) abort ();} while (0)
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
876 #else /* not FONT_DEBUG */
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
877 #define font_assert(X) (void) 0
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
878 #endif /* not FONT_DEBUG */
4d81ef9a5f1d (Ffont_xlfd_name): EXFUN adjusted.
Kenichi Handa <handa@m17n.org>
parents: 95125
diff changeset
879
90400
80fff33f74f5 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
880 #endif /* not EMACS_FONT_H */
90427
ddb25860d044 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 90400
diff changeset
881
ddb25860d044 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 90400
diff changeset
882 /* arch-tag: 3b7260c3-5bec-4d6b-a0db-95c1b431b1a2
ddb25860d044 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 90400
diff changeset
883 (do not change this comment) */