aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/composite.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/composite.h b/src/composite.h
index 660b1fa1b9e..67e87201bf2 100644
--- a/src/composite.h
+++ b/src/composite.h
@@ -246,6 +246,11 @@ composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop)
246/* Macros for lispy glyph-string. This is completely different from 246/* Macros for lispy glyph-string. This is completely different from
247 struct glyph_string. */ 247 struct glyph_string. */
248 248
249/* LGSTRING is a string of font glyphs, LGLYPHs. It is represented as
250 a Lisp vector, with components shown below. Once LGSTRING was
251 processed by a shaping engine, it holds font glyphs for one or more
252 grapheme clusters. */
253
249#define LGSTRING_HEADER(lgs) AREF (lgs, 0) 254#define LGSTRING_HEADER(lgs) AREF (lgs, 0)
250#define LGSTRING_SET_HEADER(lgs, header) ASET (lgs, 0, header) 255#define LGSTRING_SET_HEADER(lgs, header) ASET (lgs, 0, header)
251 256
@@ -259,6 +264,10 @@ composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop)
259#define LGSTRING_ID(lgs) AREF (lgs, 1) 264#define LGSTRING_ID(lgs) AREF (lgs, 1)
260#define LGSTRING_SET_ID(lgs, id) ASET (lgs, 1, id) 265#define LGSTRING_SET_ID(lgs, id) ASET (lgs, 1, id)
261 266
267/* LGSTRING_GLYPH_LEN is the maximum number of LGLYPHs that the
268 LGSTRING can hold. This is NOT the actual number of valid LGLYPHs;
269 to find the latter, walk the glyphs returned by LGSTRING_GLYPH
270 until the first one that is nil. */
262#define LGSTRING_GLYPH_LEN(lgs) (ASIZE ((lgs)) - 2) 271#define LGSTRING_GLYPH_LEN(lgs) (ASIZE ((lgs)) - 2)
263#define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 2) 272#define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 2)
264#define LGSTRING_SET_GLYPH(lgs, idx, val) ASET ((lgs), (idx) + 2, (val)) 273#define LGSTRING_SET_GLYPH(lgs, idx, val) ASET ((lgs), (idx) + 2, (val))
@@ -278,6 +287,14 @@ enum lglyph_indices
278 LGLYPH_SIZE 287 LGLYPH_SIZE
279 }; 288 };
280 289
290/* Each LGLYPH is a single font glyph, whose font code is in
291 LGLYPH_CODE.
292 LGLYPH_FROM and LGLYPH_TO are indices into LGSTRING; all the
293 LGLYPHs that share the same values of LGLYPH_FROM and LGLYPH_TO
294 belong to the same grapheme cluster.
295 LGLYPH_CHAR is one of the characters, usually the first one, that
296 contributed to the glyph (since there isn't a 1:1 correspondence
297 between composed characters and the font glyphs). */
281#define LGLYPH_NEW() make_nil_vector (LGLYPH_SIZE) 298#define LGLYPH_NEW() make_nil_vector (LGLYPH_SIZE)
282#define LGLYPH_FROM(g) XFIXNUM (AREF ((g), LGLYPH_IX_FROM)) 299#define LGLYPH_FROM(g) XFIXNUM (AREF ((g), LGLYPH_IX_FROM))
283#define LGLYPH_TO(g) XFIXNUM (AREF ((g), LGLYPH_IX_TO)) 300#define LGLYPH_TO(g) XFIXNUM (AREF ((g), LGLYPH_IX_TO))