int fribidi_unicode_to_cap_rtl (FriBidiChar *us, int length, char *s) { int i, j; j = 0; for (i = 0; i < length; i++) { FriBidiChar ch = us[i]; if (!FRIBIDI_IS_EXPLICIT (fribidi_get_type_internal (ch)) && ch != '_' && ch != UNI_LRM && ch != UNI_RLM) s[j++] = fribidi_unicode_to_cap_rtl_c (ch); else { s[j++] = '_'; switch (ch) { case UNI_LRM: s[j++] = '>'; break; case UNI_RLM: s[j++] = '<'; break; case UNI_LRE: s[j++] = 'l'; break; case UNI_RLE: s[j++] = 'r'; break; case UNI_PDF: s[j++] = 'o'; break; case UNI_LRO: s[j++] = 'L'; break; case UNI_RLO: s[j++] = 'R'; break; case '_': s[j++] = '_'; break; default: j--; if (ch < 256) s[j++] = fribidi_unicode_to_cap_rtl_c (ch); else s[j++] = '?'; break; } } } s[j] = 0; return j; }
FriBidiStrIndex fribidi_unicode_to_cap_rtl ( /* input */ const FriBidiChar *us, FriBidiStrIndex len, /* output */ char *s ) { FriBidiStrIndex i; int j; j = 0; for (i = 0; i < len; i++) { FriBidiChar ch = us[i]; if (!FRIBIDI_IS_EXPLICIT (fribidi_get_bidi_type (ch)) && ch != '_' && ch != FRIBIDI_CHAR_LRM && ch != FRIBIDI_CHAR_RLM) s[j++] = fribidi_unicode_to_cap_rtl_c (ch); else { s[j++] = '_'; switch (ch) { case FRIBIDI_CHAR_LRM: s[j++] = '>'; break; case FRIBIDI_CHAR_RLM: s[j++] = '<'; break; case FRIBIDI_CHAR_LRE: s[j++] = 'l'; break; case FRIBIDI_CHAR_RLE: s[j++] = 'r'; break; case FRIBIDI_CHAR_PDF: s[j++] = 'o'; break; case FRIBIDI_CHAR_LRO: s[j++] = 'L'; break; case FRIBIDI_CHAR_RLO: s[j++] = 'R'; break; case '_': s[j++] = '_'; break; default: j--; if (ch < 256) s[j++] = fribidi_unicode_to_cap_rtl_c (ch); else s[j++] = '?'; break; } } } s[j] = 0; return j; }