aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/fontsrv
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2012-12-03 15:55:13 -0500
committerRuss Cox <rsc@swtch.com>2012-12-03 15:55:13 -0500
commit09adcb09011d8cc1391b0f4553928fc9cfaf3970 (patch)
treef6474f49c9522632fa50844e967cb23487cbc3ce /src/cmd/fontsrv
parent1785490baa3720b70ebf10d2e6da99ffb81db728 (diff)
downloadplan9port-09adcb09011d8cc1391b0f4553928fc9cfaf3970.tar.gz
plan9port-09adcb09011d8cc1391b0f4553928fc9cfaf3970.tar.bz2
plan9port-09adcb09011d8cc1391b0f4553928fc9cfaf3970.zip
fontsrv: make single quotes look like quotes
R=rsc https://codereview.appspot.com/6864051
Diffstat (limited to 'src/cmd/fontsrv')
-rw-r--r--src/cmd/fontsrv/osx.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/cmd/fontsrv/osx.c b/src/cmd/fontsrv/osx.c
index f393dd3c..a35eb4a5 100644
--- a/src/cmd/fontsrv/osx.c
+++ b/src/cmd/fontsrv/osx.c
@@ -18,6 +18,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 antialias)
fc->bottom = Dy(m->r);
n = 0;
- u[n++] = i;
+ u[n++] = mapUnicode(i);
if(0) // debugging
u[n++] = '|';
g[0] = 0;