mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-26 22:17:17 +00:00
fixed linebreaks in Chinese, also do not break close to ( )
This commit is contained in:
parent
2e2c9a5ccf
commit
0137175d46
17
dialogs.cpp
17
dialogs.cpp
@ -426,12 +426,25 @@ EX namespace dialog {
|
|||||||
else
|
else
|
||||||
xs = vid.xres * 618/1000, xo = vid.xres * 186/1000;
|
xs = vid.xres * 618/1000, xo = vid.xres * 186/1000;
|
||||||
|
|
||||||
|
int last_i = 0;
|
||||||
for(int i=0; i<=isize(str); i++) {
|
for(int i=0; i<=isize(str); i++) {
|
||||||
int ls = 0;
|
int ls = 0;
|
||||||
int prev = last;
|
int prev = last;
|
||||||
if(str[i] == ' ') lastspace = i;
|
if(str[i] == ' ') lastspace = i;
|
||||||
|
unsigned char ch = str[i];
|
||||||
|
if(ch >= 128 && ch < 192) continue;
|
||||||
|
if(i < isize(str)) {
|
||||||
|
char *ch = &str[i];
|
||||||
|
if(*ch == ')') continue;
|
||||||
|
if(starts_with(ch, ")")) continue;
|
||||||
|
}
|
||||||
|
if(i > 0) {
|
||||||
|
char *ch = &str[i - utfsize_before(str,i)];
|
||||||
|
if(*ch == '(') continue;
|
||||||
|
if(starts_with(ch, "(")) continue;
|
||||||
|
}
|
||||||
if(textwidth(siz, str.substr(last, i-last)) > xs) {
|
if(textwidth(siz, str.substr(last, i-last)) > xs) {
|
||||||
if(lastspace == last) ls = i-1, last = i-1;
|
if(lastspace == last) ls = last_i, last = last_i;
|
||||||
else ls = lastspace, last = ls+1;
|
else ls = lastspace, last = ls+1;
|
||||||
}
|
}
|
||||||
if(str[i] == 10 || i == isize(str)) ls = i, last = i+1;
|
if(str[i] == 10 || i == isize(str)) ls = i, last = i+1;
|
||||||
@ -441,7 +454,7 @@ EX namespace dialog {
|
|||||||
else y += siz;
|
else y += siz;
|
||||||
lastspace = last;
|
lastspace = last;
|
||||||
}
|
}
|
||||||
|
last_i = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
y += siz/2;
|
y += siz/2;
|
||||||
|
Loading…
Reference in New Issue
Block a user