tfontsrv: make single quotes look like quotes - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 09adcb09011d8cc1391b0f4553928fc9cfaf3970
 (DIR) parent 1785490baa3720b70ebf10d2e6da99ffb81db728
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Mon,  3 Dec 2012 15:55:13 -0500
       
       fontsrv: make single quotes look like quotes
       
       R=rsc
       https://codereview.appspot.com/6864051
       
       Diffstat:
         M src/cmd/fontsrv/osx.c               |      18 +++++++++++++++---
       
       1 file changed, 15 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/fontsrv/osx.c b/src/cmd/fontsrv/osx.c
       t@@ -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)
        {
       t@@ -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;
       t@@ -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);
       t@@ -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;