- if(!term->cfg.bidi || !term->cfg.arabicshaping) {
-
- if (!term_bidi_cache_hit(term, i, ldata->chars, term->cols)) {
-
- if (term->wcFromTo_size < term->cols) {
- term->wcFromTo_size = term->cols;
- term->wcFrom = sresize(term->wcFrom, term->wcFromTo_size,
- bidi_char);
- term->wcTo = sresize(term->wcTo, term->wcFromTo_size,
- bidi_char);
- }
-
- for(it=0; it<term->cols ; it++)
- {
- unsigned long uc = (ldata->chars[it].chr);
-
- switch (uc & CSET_MASK) {
- case CSET_LINEDRW:
- if (!term->cfg.rawcnp) {
- uc = term->ucsdata->unitab_xterm[uc & 0xFF];
- break;
- }
- case CSET_ASCII:
- uc = term->ucsdata->unitab_line[uc & 0xFF];
- break;
- case CSET_SCOACS:
- uc = term->ucsdata->unitab_scoacs[uc&0xFF];
- break;
- }
- switch (uc & CSET_MASK) {
- case CSET_ACP:
- uc = term->ucsdata->unitab_font[uc & 0xFF];
- break;
- case CSET_OEMCP:
- uc = term->ucsdata->unitab_oemcp[uc & 0xFF];
- break;
- }
-
- term->wcFrom[it].origwc = term->wcFrom[it].wc =
- (wchar_t)uc;
- term->wcFrom[it].index = it;
- }
-
- if(!term->cfg.bidi)
- do_bidi(term->wcFrom, term->cols);
-
- /* this is saved iff done from inside the shaping */
- if(!term->cfg.bidi && term->cfg.arabicshaping)
- for(it=0; it<term->cols; it++)
- term->wcTo[it] = term->wcFrom[it];
-
- if(!term->cfg.arabicshaping)
- do_shape(term->wcFrom, term->wcTo, term->cols);
-
- if (term->ltemp_size < ldata->size) {
- term->ltemp_size = ldata->size;
- term->ltemp = sresize(term->ltemp, term->ltemp_size,
- termchar);
- }
-
- memcpy(term->ltemp, ldata->chars, ldata->size * TSIZE);
-
- for(it=0; it<term->cols ; it++)
- {
- term->ltemp[it] = ldata->chars[term->wcTo[it].index];
- if (term->ltemp[it].cc_next)
- term->ltemp[it].cc_next -=
- it - term->wcTo[it].index;
-
- if (term->wcTo[it].origwc != term->wcTo[it].wc)
- term->ltemp[it].chr = term->wcTo[it].wc;
- }
- term_bidi_cache_store(term, i, ldata->chars,
- term->ltemp, ldata->size);
-
- lchars = term->ltemp;
- } else {
- lchars = term->post_bidi_cache[i].chars;
- }
- } else