Some of you know command "par". Par is a powerfull text reformater. It is especially used in text editors like vim. But, par don't support multibyte characters (typically UTF8 encoding). I have made a patch to support multibyte and double-width characters. Now, you can reformat a text like :

/***********************/
/* English is a West Germanic language heavily influenced, in */
/* comparison with other Germanic languages, by French and Latin. */
/* On appelle français (et française au féminin) les habitants de la France */
/*  */
/* [ Ανήκει επίσης στο βαλκανικό γλωσσικό δεσμό. ] */
/* [   ] */
/* [ Русский язык — язык русских, государственный язык России и ] */
/* [ Белоруссии, ранее — язык межнационального общения СССР ] */
/*  */
/* اللغة العربية هي لغة سامية، مشتقة عن السريانية (نسب */
/* ة الى سورية) والآرامية والعبرية و الأكادية، و هي لغة العرب، سكان شبه الجزيرة */
/*                           */
/*************************/

after ":'<,'>!par 42rj":

/***************************************/
/* English is a West Germanic language */
/* heavily  influenced, in  comparison */
/* with   other  Germanic   languages, */
/* by  French  and Latin.  On  appelle */
/* français (et  française au féminin) */
/* les habitants de la France          */
/*                                     */
/* [ Ανήκει  επίσης   στο  βαλκανικό ] */
/* [ γλωσσικό δεσμό.                 ] */
/* [                                 ] */
/* [ Русский  язык  — язык  русских, ] */
/* [ государственный   язык   России ] */
/* [ и  Белоруссии,   ранее  —  язык ] */
/* [ межнационального общения СССР   ] */
/*                                     */
/* اللغة العربية  هي لغة  سامية، مشتقة */
/* عن  السريانية  (نسب  ة  الى  سورية) */
/* والآرامية والعبرية و الأكادية، و هي */
/* لغة العرب، سكان شبه الجزيرة         */
/*                                     */
/***************************************/

Notice that par has automatically detected prefix and suffix and changes of paragraph. Change of text direction[1] is not a problem. It has also resized non-textual lines ("r" option) and justified text ("j" option).

You can find :

Don't forget to correctly set $LANG environment variable to notice par which encoding you want.

Notes

[1] Arabic language is read from right to left