- for (i = 0; i < ASIZE (elt); i++)
- {
- Lisp_Object tmp;
-
- tmp = Fmake_vector (make_number (5), Qnil);
- ASET (tmp, 2, AREF (elt, i));
- ASET (vec, 3 + i, tmp);
- }
-#ifdef USE_FONT_BACKEND
- if (! fallback
- && enable_font_backend
- && EQ (base_fontset, Vdefault_fontset))
- {
- Lisp_Object script, font_spec;
-
- script = CHAR_TABLE_REF (Vchar_script_table, c);
- if (NILP (script))
- script = intern ("latin");
- font_spec = Ffont_spec (0, NULL);
- ASET (font_spec, FONT_REGISTRY_INDEX, Qiso10646_1);
- ASET (font_spec, FONT_EXTRA_INDEX,
- Fcons (Fcons (QCscript, script), Qnil));
- font_def = Fmake_vector (make_number (3), Qnil);
- ASET (font_def, 0, font_spec);
- elt = Fmake_vector (make_number (5), Qnil);
- ASET (elt, 2, font_def);
- ASET (vec, 3 + i, elt);
- }
-#endif /* USE_FONT_BACKEND */
-
- /* Then store it in the fontset. */
- if (! fallback)
- FONTSET_SET (fontset, range, vec);
- else
- FONTSET_FALLBACK (fontset) = vec;
- }
- }
- if (EQ (vec, Qt))
- return Qnil;
-
- if (XINT (AREF (vec, 0)) != charset_ordered_list_tick)
- /* The priority of charsets is changed after we selected a face
- for C last time. */
- reorder_font_vector (vec);
-
- if (id < 0)
- i = 3;
- else if (id == XFASTINT (AREF (vec, 1)))
- i = 2;
- else
- {
- ASET (vec, 1, make_number (id));
- for (i = 3; i < ASIZE (vec); i++)
- if (id == XFASTINT (AREF (AREF (AREF (vec, i), 2), 1)))
- break;
- if (i < ASIZE (vec))
- {
- ASET (vec, 2, AREF (vec, i));
- i = 2;
+ for (i = j = 0; i < size; i++)
+ if (! NILP (AREF (elt, i)))
+ {
+ Lisp_Object tmp;
+ tmp = Fmake_vector (make_number (5), Qnil);
+ ASET (tmp, 2, AREF (elt, i));
+ ASET (vec, j + 3, tmp);
+ j++;
+ }