widecolor: detect and inhibit wide spaces

pull/124/head
nick black 5 years ago
parent df93b67b4e
commit ee4c3d217b
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -334,24 +334,7 @@ int widecolor_demo(struct notcurses* nc){
"Война и мир", "Война и мир",
"Бра́тья Карама́зовы", "Бра́тья Карама́зовы",
"Час сэканд-хэнд", "Час сэканд-хэнд",
"ஸீரோ டிகிரி",
"Tonio Kröger", "Tonio Kröger",
"بين القصرين",
"قصر الشوق",
"السكرية",
"三体",
"血的神话公元年湖南道县文革大屠杀纪实",
"三国演义",
"紅樓夢",
"Hónglóumèng",
"红楼梦",
"महाभारतम्",
"Mahābhāratam",
" रामायणम्",
"Rāmāyaṇam",
"القرآن",
"תּוֹרָה",
"תָּנָ״ךְ",
"Meg tudom enni az üveget, nem lesztőle bajom", "Meg tudom enni az üveget, nem lesztőle bajom",
"Voin syödä lasia, se ei vahingoita minua", "Voin syödä lasia, se ei vahingoita minua",
"Sáhtán borrat lása, dat ii leat bávččas", "Sáhtán borrat lása, dat ii leat bávččas",
@ -371,16 +354,6 @@ int widecolor_demo(struct notcurses* nc){
"Я могу есть стекло, оно мне не вредит", "Я могу есть стекло, оно мне не вредит",
"Я магу есці шкло, яно мне не шкодзіць", "Я магу есці шкло, яно мне не шкодзіць",
"Osudy dobrého vojáka Švejka za světové války", "Osudy dobrého vojáka Švejka za světové války",
"Σίβνλλα τί ϴέλεις; respondebat illa: άπο ϴανεΐν ϴέλω",
"На всей земле был один язык и одно наречие.",
"А кад отидоше од истока, нађоше равницу у земљи сенарској, и населише се онде.",
"І сказалі адно аднаму: наробім цэглы і абпалім агнём. І стала ў іх цэгла замест камянёў, а земляная смала замест вапны.",
"І сказали вони: Тож місто збудуймо собі, та башту, а вершина її аж до неба. І вчинімо для себе ймення, щоб ми не розпорошилися по поверхні всієї землі.",
"A boy has never wept nor dashed a thousand kim",
"⑤ Господ слезе да ги види градот и кулата, што луѓето ги градеа.",
"⑥ И҆ речѐ гдⷭ҇ь: сѐ, ро́дъ є҆ди́нъ, и҆ ѹ҆стнѣ̀ є҆ди҄нѣ всѣ́хъ, и҆ сїѐ нача́ша твори́ти: и҆ нн҃ѣ не ѡ҆скꙋдѣ́ютъ ѿ ни́хъ всѧ҄, є҆ли҄ка а́҆ще восхотѧ́тъ твори́ти.",
"⑦ Ⱂⱃⰻⰻⰴⱑⱅⰵ ⰺ ⰺⰸⱎⰵⰴⱎⰵ ⱄⰿⱑⱄⰻⰿⱏ ⰺⰿⱏ ⱅⱆ ⱔⰸⱏⰹⰽⰻ ⰺⱈⱏ · ⰴⰰ ⱀⰵ ⱆⱄⰾⱏⰹⱎⰰⱅⱏ ⰽⱁⰶⰴⱁ ⰴⱃⱆⰳⰰ ⱄⰲⱁⰵⰳⱁ ⁖⸏",
"काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम्",
"kācaṃ śaknomyattum; nopahinasti mām", "kācaṃ śaknomyattum; nopahinasti mām",
"ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει", "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει",
"Μπορῶ νὰ φάω σπασμένα γυαλιὰ χωρὶς νὰ πάθω τίποτα", "Μπορῶ νὰ φάω σπασμένα γυαλιὰ χωρὶς νὰ πάθω τίποτα",
@ -402,6 +375,33 @@ int widecolor_demo(struct notcurses* nc){
"Eu podo xantar cristais e non cortarme", "Eu podo xantar cristais e non cortarme",
"Posso comer vidro, não me faz mal", "Posso comer vidro, não me faz mal",
"Posso comer vidro, não me machuca", "Posso comer vidro, não me machuca",
"ஸீரோ டிகிரி",
"بين القصرين",
"قصر الشوق",
"السكرية",
"三体",
"血的神话公元年湖南道县文革大屠杀纪实",
"三国演义",
"紅樓夢",
"Hónglóumèng",
"红楼梦",
"महाभारतम्",
"Mahābhāratam",
" रामायणम्",
"Rāmāyaṇam",
"القرآن",
"תּוֹרָה",
"תָּנָ״ךְ",
"Σίβνλλα τί ϴέλεις; respondebat illa: άπο ϴανεΐν ϴέλω",
"На всей земле был один язык и одно наречие.",
"А кад отидоше од истока, нађоше равницу у земљи сенарској, и населише се онде.",
"І сказалі адно аднаму: наробім цэглы і абпалім агнём. І стала ў іх цэгла замест камянёў, а земляная смала замест вапны.",
"І сказали вони: Тож місто збудуймо собі, та башту, а вершина її аж до неба. І вчинімо для себе ймення, щоб ми не розпорошилися по поверхні всієї землі.",
"A boy has never wept nor dashed a thousand kim",
"⑤ Господ слезе да ги види градот и кулата, што луѓето ги градеа.",
"⑥ И҆ речѐ гдⷭ҇ь: сѐ, ро́дъ є҆ди́нъ, и҆ ѹ҆стнѣ̀ є҆ди҄нѣ всѣ́хъ, и҆ сїѐ нача́ша твори́ти: и҆ нн҃ѣ не ѡ҆скꙋдѣ́ютъ ѿ ни́хъ всѧ҄, є҆ли҄ка а́҆ще восхотѧ́тъ твори́ти.",
"⑦ Ⱂⱃⰻⰻⰴⱑⱅⰵ ⰺ ⰺⰸⱎⰵⰴⱎⰵ ⱄⰿⱑⱄⰻⰿⱏ ⰺⰿⱏ ⱅⱆ ⱔⰸⱏⰹⰽⰻ ⰺⱈⱏ · ⰴⰰ ⱀⰵ ⱆⱄⰾⱏⰹⱎⰰⱅⱏ ⰽⱁⰶⰴⱁ ⰴⱃⱆⰳⰰ ⱄⰲⱁⰵⰳⱁ ⁖⸏",
"काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम्",
"色は匂へど 散りぬるを 我が世誰ぞ 常ならむ 有為の奥山 今日越えて 浅き夢見じ 酔ひもせず", "色は匂へど 散りぬるを 我が世誰ぞ 常ならむ 有為の奥山 今日越えて 浅き夢見じ 酔ひもせず",
"いろはにほへど ちりぬるを わがよたれぞ つねならむ うゐのおくやま けふこえて あさきゆめみじ ゑひもせず", "いろはにほへど ちりぬるを わがよたれぞ つねならむ うゐのおくやま けふこえて あさきゆめみじ ゑひもせず",
"मलाई थाहा छैन । म यहाँ काम मात्र गर्छु ", "मलाई थाहा छैन । म यहाँ काम मात्र गर्छु ",
@ -610,8 +610,13 @@ int widecolor_demo(struct notcurses* nc){
if(y >= maxy || x >= maxx){ if(y >= maxy || x >= maxx){
break; break;
} }
if(isspace((*s)[idx])){ wchar_t wcs;
++idx; int eaten = mbtowc(&wcs, &(*s)[idx], MB_CUR_MAX + 1);
if(eaten < 0){
return -1;
}
if(iswspace(wcs)){
idx += eaten;
continue; continue;
} }
int ulen = 0; int ulen = 0;

Loading…
Cancel
Save