Commit Diff


commit - 1785490baa3720b70ebf10d2e6da99ffb81db728
commit + 09adcb09011d8cc1391b0f4553928fc9cfaf3970
blob - f393dd3c9081d1b8556981c22b23527894223e47
blob + a35eb4a5de0252a662fd69eaa6b324717ccfba38
--- src/cmd/fontsrv/osx.c
+++ src/cmd/fontsrv/osx.c
@@ -17,6 +17,18 @@
 
 
 extern void CGFontGetGlyphsForUnichars(CGFontRef, const UniChar[], const CGGlyph[], size_t);
+
+int
+mapUnicode(int i)
+{
+	switch(i) {
+	case '\'':
+		return 0x2019;
+	case '`':
+		return 0x2018;
+	}
+	return i;
+}
 
 char*
 mac2c(CFStringRef s)
@@ -89,7 +101,7 @@ subfontbbox(CGFontRef font, int lo, int hi)
 		CGGlyph g;
 		CGRect r;
 
-		u = i;
+		u = mapUnicode(i);
 		CGFontGetGlyphsForUnichars(font, &u, &g, 1);
 		if(g == 0 || !CGFontGetGlyphBBoxes(font, &g, 1, &r))
 			continue;
@@ -144,7 +156,7 @@ load(XFont *f)
 	// figure out where the letters are
 	for(i=0; i<0xffff; i+=0x100) {
 		for(j=0; j<0x100; j++) {
-			u[j] = i+j;
+			u[j] = mapUnicode(i+j);
 			g[j] = 0;
 		}
 		CGFontGetGlyphsForUnichars(font, u, g, 256);
@@ -233,7 +245,7 @@ mksubfont(char *name, int lo, int hi, int size, int an
 		fc->bottom = Dy(m->r);
 
 		n = 0;
-		u[n++] = i;
+		u[n++] = mapUnicode(i);
 		if(0)	// debugging
 			u[n++] = '|';
 		g[0] = 0;