diff --git a/src/cmd/fontsrv/a.h b/src/cmd/fontsrv/a.h
index 67a7b36..3344d28 100644
--- a/src/cmd/fontsrv/a.h
+++ b/src/cmd/fontsrv/a.h
@@ -2,11 +2,16 @@
 XFont *xfont;
 int nxfont;
 
+enum {
+	SubfontSize = 32,
+	SubfontMask = (1<<16)/SubfontSize - 1,
+};
+
 struct XFont
 {
 	char *name;
 	int loaded;
-	uchar range[256];	// range[i] == whether to have subfont i<<8 to (i+1)<<8.
+	uchar range[(1<<16)/SubfontSize];	// range[i] == whether to have subfont i*SubfontSize to (i+1)*SubfontSize - 1.
 	int nrange;
 	int unit;
 	double height;
diff --git a/src/cmd/fontsrv/main.c b/src/cmd/fontsrv/main.c
index 5a43ef1..b00802d 100644
--- a/src/cmd/fontsrv/main.c
+++ b/src/cmd/fontsrv/main.c
@@ -54,7 +54,7 @@
 #define QFONT(p) (((p) >> 4) & 0xFFFF)
 #define QSIZE(p) (((p) >> 20) & 0xFF)
 #define QANTIALIAS(p) (((p) >> 28) & 0x1)
-#define QRANGE(p) (((p) >> 29) & 0xFF)
+#define QRANGE(p) (((p) >> 29) & SubfontMask)
 static int sizes[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24, 28 };
 
 static vlong
@@ -109,7 +109,7 @@
 		break;
 
 	case Qsubfontfile:
-		snprint(buf, sizeof buf, "x%02llx00.bit", QRANGE(path));
+		snprint(buf, sizeof buf, "x%04x.bit", (int)QRANGE(path)*SubfontSize);
 		name = buf;
 		break;
 	}
@@ -191,9 +191,9 @@
 			goto NotFound;
 		p++;
 		n = strtoul(p, &p, 16);
-		if(p != name+5 || (n&0xFF) != 0 || strcmp(p, ".bit") != 0 || !f->range[(n>>8) & 0xFF])
+		if(p != name+5 || n%SubfontSize != 0 || strcmp(p, ".bit") != 0 || !f->range[(n/SubfontSize) & SubfontMask])
 			goto NotFound;
-		path += Qsubfontfile - Qsizedir + qpath(0, 0, 0, 0, (n>>8) & 0xFF);
+		path += Qsubfontfile - Qsizedir + qpath(0, 0, 0, 0, (n/SubfontSize) & SubfontMask);
 		break;
 	}
 Found:
@@ -329,7 +329,7 @@
 		for(i=0; i<nelem(f->range); i++) {
 			if(f->range[i] == 0)
 				continue;
-			fmtprint(&fmt, "0x%04x 0x%04x x%04x.bit\n", i<<8, (i<<8) + 0xFF, i<<8);
+			fmtprint(&fmt, "0x%04x 0x%04x x%04x.bit\n", i*SubfontSize, ((i+1)*SubfontSize) - 1, i*SubfontSize);
 		}
 		data = fmtstrflush(&fmt);
 		readstr(r, data);
@@ -339,7 +339,7 @@
 		f = &xfont[QFONT(path)];
 		load(f);
 		if(r->fid->aux == nil) {
-			r->fid->aux = mksubfont(f, f->name, QRANGE(path)<<8, (QRANGE(path)<<8)+0xFF, QSIZE(path), QANTIALIAS(path));
+			r->fid->aux = mksubfont(f, f->name, QRANGE(path)*SubfontSize, ((QRANGE(path)+1)*SubfontSize)-1, QSIZE(path), QANTIALIAS(path));
 			if(r->fid->aux == nil) {
 				responderrstr(r);
 				return;
diff --git a/src/cmd/fontsrv/x11.c b/src/cmd/fontsrv/x11.c
index 8245d0f..f106d25 100644
--- a/src/cmd/fontsrv/x11.c
+++ b/src/cmd/fontsrv/x11.c
@@ -86,7 +86,7 @@
 	for(charcode=FT_Get_First_Char(face, &glyph_index); glyph_index != 0;
 		charcode=FT_Get_Next_Char(face, charcode, &glyph_index)) {
 
-		int idx = charcode>>8;
+		int idx = charcode/SubfontSize;
 
 		if(charcode > 0xffff)
 			break;
diff --git a/src/libdraw/openfont.c b/src/libdraw/openfont.c
index fdbc656..b97ea22 100644
--- a/src/libdraw/openfont.c
+++ b/src/libdraw/openfont.c
@@ -61,7 +61,7 @@
 		n = _drawflength(fd);
 	if(fd < 0 && strncmp(fname, "/mnt/font/", 10) == 0) {
 		fd = _fontpipe(fname+10);
-		n = 8192;
+		n = 128*1024;
 	}
 	if(fd < 0)
 		return 0;
