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.102 by root, Fri Mar 17 18:29:29 2006 UTC vs.
Revision 1.103 by root, Sun Aug 27 10:10:25 2006 UTC

270 p.slant = rxvt_fontprop::roman; 270 p.slant = rxvt_fontprop::roman;
271 271
272 return p; 272 return p;
273 } 273 }
274 274
275 bool load (const rxvt_fontprop &prop) 275 bool load (const rxvt_fontprop &prop, bool force_prop)
276 { 276 {
277 width = 1; height = 1; 277 width = 1; height = 1;
278 ascent = 1; descent = 0; 278 ascent = 1; descent = 0;
279 279
280 set_name (strdup ("built-in support font")); 280 set_name (strdup ("built-in support font"));
471 471
472 void clear (); 472 void clear ();
473 473
474 rxvt_fontprop properties (); 474 rxvt_fontprop properties ();
475 475
476 bool load (const rxvt_fontprop &prop); 476 bool load (const rxvt_fontprop &prop, bool force_prop);
477 477
478 bool has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &careful) const; 478 bool has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &careful) const;
479 479
480 void draw (rxvt_drawable &d, int x, int y, 480 void draw (rxvt_drawable &d, int x, int y,
481 const text_t *text, int len, 481 const text_t *text, int len,
627 return false; 627 return false;
628 } 628 }
629} 629}
630 630
631bool 631bool
632rxvt_font_x11::load (const rxvt_fontprop &prop) 632rxvt_font_x11::load (const rxvt_fontprop &prop, bool force_prop)
633{ 633{
634 dTermDisplay; 634 dTermDisplay;
635 635
636 clear (); 636 clear ();
637 637
638 char field_str[64]; // enough for 128 bits 638 char field_str[64]; // enough for 128 bits
639 639
640 // first morph the font if required 640 // first morph the font if required
641 if (prop.weight != rxvt_fontprop::unset 641 if (force_prop)
642 || prop.slant != rxvt_fontprop::unset)
643 { 642 {
644 char fname[1024]; 643 char fname[1024];
645 644
646 if (name[0] != '-') 645 if (name[0] != '-')
647 { 646 {
1039 1038
1040 void clear (); 1039 void clear ();
1041 1040
1042 rxvt_fontprop properties (); 1041 rxvt_fontprop properties ();
1043 1042
1044 bool load (const rxvt_fontprop &prop); 1043 bool load (const rxvt_fontprop &prop, bool force_prop);
1045 1044
1046 void draw (rxvt_drawable &d, int x, int y, 1045 void draw (rxvt_drawable &d, int x, int y,
1047 const text_t *text, int len, 1046 const text_t *text, int len,
1048 int fg, int bg); 1047 int fg, int bg);
1049 1048
1082 1081
1083 return p; 1082 return p;
1084} 1083}
1085 1084
1086bool 1085bool
1087rxvt_font_xft::load (const rxvt_fontprop &prop) 1086rxvt_font_xft::load (const rxvt_fontprop &prop, bool force_prop)
1088{ 1087{
1089 dTermDisplay; 1088 dTermDisplay;
1090 1089
1091 clear (); 1090 clear ();
1092 1091
1101 && (FcPatternGet (p, FC_PIXEL_SIZE, 0, &v) != FcResultMatch 1100 && (FcPatternGet (p, FC_PIXEL_SIZE, 0, &v) != FcResultMatch
1102 && FcPatternGet (p, FC_SIZE, 0, &v) != FcResultMatch)) 1101 && FcPatternGet (p, FC_SIZE, 0, &v) != FcResultMatch))
1103 FcPatternAddInteger (p, FC_PIXEL_SIZE, prop.height); 1102 FcPatternAddInteger (p, FC_PIXEL_SIZE, prop.height);
1104 1103
1105 if (prop.weight != rxvt_fontprop::unset 1104 if (prop.weight != rxvt_fontprop::unset
1106 && FcPatternGet (p, FC_WEIGHT, 0, &v) != FcResultMatch) 1105 && (force_prop || FcPatternGet (p, FC_WEIGHT, 0, &v) != FcResultMatch))
1107 FcPatternAddInteger (p, FC_WEIGHT, prop.weight); 1106 FcPatternAddInteger (p, FC_WEIGHT, prop.weight);
1108 1107
1109 if (prop.slant != rxvt_fontprop::unset 1108 if (prop.slant != rxvt_fontprop::unset
1110 && FcPatternGet (p, FC_SLANT, 0, &v) != FcResultMatch) 1109 && (force_prop || FcPatternGet (p, FC_SLANT, 0, &v) != FcResultMatch))
1111 FcPatternAddInteger (p, FC_SLANT, prop.slant); 1110 FcPatternAddInteger (p, FC_SLANT, prop.slant);
1112 1111
1113#if 0 // clipping unfortunately destroys our precious double-width-characters 1112#if 0 // clipping unfortunately destroys our precious double-width-characters
1114 // clip width, we can't do better, or can we? 1113 // clip width, we can't do better, or can we?
1115 if (FcPatternGet (p, FC_CHAR_WIDTH, 0, &v) != FcResultMatch) 1114 if (FcPatternGet (p, FC_CHAR_WIDTH, 0, &v) != FcResultMatch)
1385void 1384void
1386rxvt_fontset::clear () 1385rxvt_fontset::clear ()
1387{ 1386{
1388 prop.width = prop.height = prop.ascent = prop.weight = prop.slant 1387 prop.width = prop.height = prop.ascent = prop.weight = prop.slant
1389 = rxvt_fontprop::unset; 1388 = rxvt_fontprop::unset;
1389 force_prop = false;
1390 1390
1391 for (rxvt_font **i = fonts.begin (); i != fonts.end (); i++) 1391 for (rxvt_font **i = fonts.begin (); i != fonts.end (); i++)
1392 FONT_UNREF (*i); 1392 FONT_UNREF (*i);
1393 1393
1394 for (pagemap **p = fmap.begin (); p != fmap.end (); p++) 1394 for (pagemap **p = fmap.begin (); p != fmap.end (); p++)
1506 if (fonts[i]->loaded) 1506 if (fonts[i]->loaded)
1507 return true; 1507 return true;
1508 1508
1509 fonts[i]->loaded = true; 1509 fonts[i]->loaded = true;
1510 1510
1511 if (!fonts[i]->load (prop)) 1511 if (!fonts[i]->load (prop, force_prop))
1512 { 1512 {
1513 fonts[i]->cs = CS_UNKNOWN; 1513 fonts[i]->cs = CS_UNKNOWN;
1514 return false; 1514 return false;
1515 } 1515 }
1516 1516

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines