+/* Iterator for composition (both for static and automatic). */
+struct composition_it
+{
+ /* Next position at which to check the composition. */
+ EMACS_INT stop_pos;
+ /* ID number of the composition or glyph-string. If negative, we
+ are not iterating over a composition now. */
+ int id;
+ /* If non-negative, character that triggers the automatic
+ composition at `stop_pos', and this is an automatic composition.
+ If negative, this is a static composition. This is set to -2
+ temporarily if searching of composition reach a limit or a
+ newline. */
+ int ch;
+ /* If this an automatic composition, how many characters to look back
+ from the position where a character triggering the composition
+ exists. */
+ int lookback;
+ /* If non-negative, number of glyphs of the glyph-string. */
+ int nglyphs;
+ /* Number of characters and bytes of the current grapheme cluster. */
+ int nchars, nbytes;
+ /* Indices of the glyphs for the current grapheme cluster. */
+ int from, to;
+ /* Width of the current grapheme cluster in units of pixels on a
+ graphic display and in units of canonical characters on a
+ terminal display. */
+ int width;
+};
+