ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtfont.C
(Generate patch)

Comparing rxvt-unicode/src/rxvtfont.C (file contents):
Revision 1.180 by sf-exg, Mon May 30 18:39:03 2011 UTC vs.
Revision 1.189 by root, Thu May 17 20:05:55 2012 UTC

22#include "../config.h" 22#include "../config.h"
23#include "rxvt.h" 23#include "rxvt.h"
24#include "rxvtutil.h" 24#include "rxvtutil.h"
25#include "rxvtfont.h" 25#include "rxvtfont.h"
26 26
27#include <cstdlib> 27#include <stdlib.h>
28 28
29#include <inttypes.h> 29#include <inttypes.h>
30 30
31#if XFT 31#if XFT
32# include <fontconfig/fontconfig.h> 32# include <fontconfig/fontconfig.h>
132 { CS_KSC5601_1987_0, "xft:Baekmuk Gulim:antialias=false" }, 132 { CS_KSC5601_1987_0, "xft:Baekmuk Gulim:antialias=false" },
133 { CS_KSC5601_1987_0, "xft::lang=ko:antialias=false" }, 133 { CS_KSC5601_1987_0, "xft::lang=ko:antialias=false" },
134# endif 134# endif
135#endif 135#endif
136 136
137 { CS_UNICODE, "-*-lucidatypewriter-*-*-*-*-*-*-*-*-m-*-iso10646-1" },
138 //{ CS_UNICODE, "-*-unifont-*-*-*-*-*-*-*-*-c-*-iso10646-1" }, // this gem of a font has actual dotted circles within the combining character glyphs. 137 //{ CS_UNICODE, "-*-unifont-*-*-*-*-*-*-*-*-c-*-iso10646-1" }, // this gem of a font has actual dotted circles within the combining character glyphs.
139#if XFT 138#if XFT
140 { CS_UNICODE, "xft:Bitstream Vera Sans Mono:antialias=false:autohint=true" }, 139 { CS_UNICODE, "xft:Bitstream Vera Sans Mono:antialias=false:autohint=true" },
141 { CS_UNICODE, "xft:Courier New:antialias=false:autohint=true" }, 140 { CS_UNICODE, "xft:Courier New:antialias=false:autohint=true" },
142 { CS_UNICODE, "xft:Andale Mono:antialias=false:autohint=false" }, 141 { CS_UNICODE, "xft:Andale Mono:antialias=false:autohint=false" },
817 XFreeFontNames (list); 816 XFreeFontNames (list);
818 817
819 // this loop only iterates when the guessed font-size is too small 818 // this loop only iterates when the guessed font-size is too small
820 for (;;) 819 for (;;)
821 { 820 {
822 font_weight *best = fonts + count - 1; 821 font_weight *best = fonts;
823 822
824 for (font_weight *w = best; w-- > fonts; ) 823 for (font_weight *w = fonts + 1; w < fonts + count; w++)
825 if (w->diff <= best->diff) 824 if (w->diff < best->diff)
826 best = w; 825 best = w;
827 826
828 if (!best->name 827 if (!best->name
829 || !(f = XLoadQueryFont (disp, best->name))) 828 || !(f = XLoadQueryFont (disp, best->name)))
830 break; 829 break;
925 } 924 }
926#endif 925#endif
927 926
928 width = 1; 927 width = 1;
929 928
930 for (uint16_t *t = extent_test_chars + ecb_array_length (extent_test_chars); t-- > extent_test_chars; ) 929 for (uint16_t *t = extent_test_chars; t < extent_test_chars + ecb_array_length (extent_test_chars); t++)
931 { 930 {
932 if (FROM_UNICODE (cs, *t) == NOCHAR) 931 if (FROM_UNICODE (cs, *t) == NOCHAR)
933 continue; 932 continue;
934 933
935 // ignore characters we wouldn't use anyways 934 // ignore characters we wouldn't use anyways
1247 1246
1248 XftUnlockFace (f); 1247 XftUnlockFace (f);
1249 1248
1250 int glheight = height; 1249 int glheight = height;
1251 1250
1252 for (uint16_t *t = extent_test_chars + ecb_array_length (extent_test_chars); t-- > extent_test_chars; ) 1251 for (uint16_t *t = extent_test_chars; t < extent_test_chars + ecb_array_length (extent_test_chars); t++)
1253 { 1252 {
1254 FcChar16 ch = *t; 1253 FcChar16 ch = *t;
1255 1254
1256 if (cs != CS_UNICODE 1255 if (cs != CS_UNICODE
1257 && ch > 0x100 1256 && ch > 0x100
1500 1499
1501 for (rxvt_font **i = fonts.begin (); i != fonts.end (); i++) 1500 for (rxvt_font **i = fonts.begin (); i != fonts.end (); i++)
1502 (*i)->unref (); 1501 (*i)->unref ();
1503 1502
1504 for (pagemap **p = fmap.begin (); p != fmap.end (); p++) 1503 for (pagemap **p = fmap.begin (); p != fmap.end (); p++)
1505 delete *p; 1504 delete [] *p;
1506 1505
1507 free (fontdesc); fontdesc = 0; 1506 free (fontdesc); fontdesc = 0;
1508 1507
1509 fonts.clear (); 1508 fonts.clear ();
1510 1509
1786 while (hi >= fmap.size ()) 1785 while (hi >= fmap.size ())
1787 fmap.push_back (0); 1786 fmap.push_back (0);
1788 1787
1789 if (!fmap[hi]) 1788 if (!fmap[hi])
1790 { 1789 {
1791 fmap[hi] = (pagemap *)new pagemap; 1790 fmap[hi] = new pagemap;
1792 memset (fmap[hi], 0xff, sizeof (pagemap)); 1791 memset (fmap[hi], 0xff, sizeof (pagemap));
1793 } 1792 }
1794 1793
1795 (*fmap[hi])[unicode & 0xff] = i; 1794 (*fmap[hi])[unicode & 0xff] = i;
1796 } 1795 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines