aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/fontsrv/x11.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/fontsrv/x11.c')
-rw-r--r--src/cmd/fontsrv/x11.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/cmd/fontsrv/x11.c b/src/cmd/fontsrv/x11.c
index 0f6b97bb..c1d10197 100644
--- a/src/cmd/fontsrv/x11.c
+++ b/src/cmd/fontsrv/x11.c
@@ -61,6 +61,7 @@ load(XFont *f)
FT_Error e;
FT_ULong charcode;
FT_UInt glyph_index;
+ int i;
if(f->loaded)
return;
@@ -78,27 +79,30 @@ load(XFont *f)
}
f->unit = face->units_per_EM;
f->height = (int)((face->ascender - face->descender) * 1.35);
- f->originy = face->descender; // bbox.yMin (or descender) is negative, becase the baseline is y-coord 0
+ f->originy = face->descender * 1.35; // bbox.yMin (or descender) is negative, because the baseline is y-coord 0
for(charcode=FT_Get_First_Char(face, &glyph_index); glyph_index != 0;
charcode=FT_Get_Next_Char(face, charcode, &glyph_index)) {
int idx = charcode/SubfontSize;
- if(charcode > 0xffff)
+ if(charcode > Runemax)
break;
- if(!f->range[idx]) {
+ if(!f->range[idx])
f->range[idx] = 1;
- f->nrange++;
- }
}
+ FT_Done_Face(face);
+
// libdraw expects U+0000 to be present
- if(!f->range[0]) {
+ if(!f->range[0])
f->range[0] = 1;
- f->nrange++;
- }
- FT_Done_Face(face);
+
+ // fix up file list
+ for(i=0; i<nelem(f->range); i++)
+ if(f->range[i])
+ f->file[f->nfile++] = i;
+
f->loaded = 1;
}