merge
This commit is contained in:
commit
f4550c4d6a
|
@ -76,23 +76,25 @@ _string(Image *dst, Point pt, Image *src, Point sp, Font *f, char *s, Rune *r, i
|
||||||
rptr = nil;
|
rptr = nil;
|
||||||
}else
|
}else
|
||||||
rptr = &r;
|
rptr = &r;
|
||||||
|
subfontname = nil;
|
||||||
sf = nil;
|
sf = nil;
|
||||||
try = 0;
|
try = 0;
|
||||||
while((*s || *r) && len > 0){
|
while((*s || *r) && len > 0){
|
||||||
max = Max;
|
max = Max;
|
||||||
if(len < max)
|
if(len < max)
|
||||||
max = len;
|
max = len;
|
||||||
|
if(subfontname){
|
||||||
|
freesubfont(sf);
|
||||||
|
if((sf=_getsubfont(f->display, subfontname)) == nil){
|
||||||
|
if(f->display->defaultfont == nil || f->display->defaultfont == f)
|
||||||
|
break;
|
||||||
|
f = f->display->defaultfont;
|
||||||
|
}
|
||||||
|
}
|
||||||
if((n = cachechars(f, sptr, rptr, cbuf, max, &wid, &subfontname)) <= 0){
|
if((n = cachechars(f, sptr, rptr, cbuf, max, &wid, &subfontname)) <= 0){
|
||||||
if(subfontname){
|
if(subfontname){
|
||||||
if(++try > 10)
|
if(++try > 10)
|
||||||
break;
|
break;
|
||||||
Nextfont:
|
|
||||||
freesubfont(sf);
|
|
||||||
if((sf=_getsubfont(f->display, subfontname)) != nil)
|
|
||||||
continue;
|
|
||||||
if(f->display->defaultfont == nil || f->display->defaultfont == f)
|
|
||||||
break;
|
|
||||||
f = f->display->defaultfont;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(*r)
|
if(*r)
|
||||||
|
@ -144,9 +146,6 @@ _string(Image *dst, Point pt, Image *src, Point sp, Font *f, char *s, Rune *r, i
|
||||||
bgp.x += wid;
|
bgp.x += wid;
|
||||||
agefont(f);
|
agefont(f);
|
||||||
len -= n;
|
len -= n;
|
||||||
|
|
||||||
if(subfontname)
|
|
||||||
goto Nextfont;
|
|
||||||
}
|
}
|
||||||
freesubfont(sf);
|
freesubfont(sf);
|
||||||
return pt;
|
return pt;
|
||||||
|
|
|
@ -22,6 +22,7 @@ _stringnwidth(Font *f, char *s, Rune *r, int len)
|
||||||
rptr = nil;
|
rptr = nil;
|
||||||
}else
|
}else
|
||||||
rptr = &r;
|
rptr = &r;
|
||||||
|
subfontname = nil;
|
||||||
sf = nil;
|
sf = nil;
|
||||||
twid = 0;
|
twid = 0;
|
||||||
try = 0;
|
try = 0;
|
||||||
|
@ -29,17 +30,18 @@ _stringnwidth(Font *f, char *s, Rune *r, int len)
|
||||||
max = Max;
|
max = Max;
|
||||||
if(len < max)
|
if(len < max)
|
||||||
max = len;
|
max = len;
|
||||||
|
if(subfontname){
|
||||||
|
freesubfont(sf);
|
||||||
|
if((sf=_getsubfont(f->display, subfontname)) == nil){
|
||||||
|
if(f->display == nil || f->display->defaultfont == nil || f->display->defaultfont == f)
|
||||||
|
break;
|
||||||
|
f = f->display->defaultfont;
|
||||||
|
}
|
||||||
|
}
|
||||||
if((n = cachechars(f, sptr, rptr, cbuf, max, &wid, &subfontname)) <= 0){
|
if((n = cachechars(f, sptr, rptr, cbuf, max, &wid, &subfontname)) <= 0){
|
||||||
if(subfontname){
|
if(subfontname){
|
||||||
if(++try > 10)
|
if(++try > 10)
|
||||||
break;
|
break;
|
||||||
Nextfont:
|
|
||||||
freesubfont(sf);
|
|
||||||
if((sf=_getsubfont(f->display, subfontname)) != nil)
|
|
||||||
continue;
|
|
||||||
if(f->display == nil || f->display->defaultfont == nil || f->display->defaultfont == f)
|
|
||||||
break;
|
|
||||||
f = f->display->defaultfont;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(*r)
|
if(*r)
|
||||||
|
@ -50,12 +52,10 @@ _stringnwidth(Font *f, char *s, Rune *r, int len)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try = 0;
|
try = 0;
|
||||||
|
|
||||||
agefont(f);
|
agefont(f);
|
||||||
twid += wid;
|
twid += wid;
|
||||||
len -= n;
|
len -= n;
|
||||||
|
|
||||||
if(subfontname)
|
|
||||||
goto Nextfont;
|
|
||||||
}
|
}
|
||||||
freesubfont(sf);
|
freesubfont(sf);
|
||||||
return twid;
|
return twid;
|
||||||
|
|
Loading…
Reference in a new issue