2004-05-10  Joe Marcus Clarke  <marcus@FreeBSD.org>
	* src/gnome-terminal.glade2: add an option menu for controlling the
	  font smoothing behavior in the terminal.
	* src/gnome-terminal.schemas.in: add a key for font smoothing behavior.
	* src/profile-editor.c(font_smoothing_changed,
	  profile_editor_update_font_smoothing): new functions for controlling
	  font smoothing behavior.
	* src/terminal-profile.c(terminal_profile_get_font_smoothing,
	  terminal_profile_set_font_smoothing, set_font_smoothing): new
	  functions for controlling font smoothing behavior.
	* src/terminal-profile.h: add function prototypes for controlling font
	  smoothing behavior.
	* src/terminal-screen.c(terminal_screen_update_on_realize):
	* src/terminal-widget-zvt.c(terminal_widget_set_pango_font):
	* src/terminal-widget-vte.c(terminal_widget_set_pango_font): add
	  support for setting font smoothing behavior in terminal widgets.
	* src/terminal-widget.h(terminal_widget_set_pango_font): modify
	  prototype to support a font smoothing argument.
--- src/gnome-terminal.glade2.orig	Mon Mar  1 20:06:53 2004
+++ src/gnome-terminal.glade2	Mon May 10 14:38:56 2004
@@ -1784,7 +1784,7 @@
 		    <widget class="GtkTable" id="table29">
 		      <property name="border_width">12</property>
 		      <property name="visible">True</property>
-		      <property name="n_rows">6</property>
+		      <property name="n_rows">7</property>
 		      <property name="n_columns">1</property>
 		      <property name="homogeneous">False</property>
 		      <property name="row_spacing">12</property>
@@ -1859,129 +1859,6 @@
 		      </child>
 
 		      <child>
-			<widget class="GtkAlignment" id="alignment15">
-			  <property name="visible">True</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.1</property>
-			  <property name="xscale">0.95</property>
-			  <property name="yscale">0</property>
-			  <property name="top_padding">0</property>
-			  <property name="bottom_padding">0</property>
-			  <property name="left_padding">0</property>
-			  <property name="right_padding">0</property>
-
-			  <child>
-			    <widget class="GtkVBox" id="darken-background-vbox">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">0</property>
-
-			      <child>
-				<widget class="GtkLabel" id="darken-background-scale-label">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">_Shade transparent or image background:</property>
-				  <property name="use_underline">True</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="mnemonic_widget">darken-background-scale</property>
-				</widget>
-				<packing>
-				  <property name="padding">1</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkHBox" id="hbox6">
-				  <property name="visible">True</property>
-				  <property name="homogeneous">False</property>
-				  <property name="spacing">0</property>
-
-				  <child>
-				    <widget class="GtkLabel" id="label64">
-				      <property name="visible">True</property>
-				      <property name="label" translatable="yes">&lt;small&gt;&lt;i&gt;None&lt;/i&gt;&lt;/small&gt;</property>
-				      <property name="use_underline">False</property>
-				      <property name="use_markup">True</property>
-				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-				      <property name="wrap">False</property>
-				      <property name="selectable">False</property>
-				      <property name="xalign">0.5</property>
-				      <property name="yalign">0.5</property>
-				      <property name="xpad">6</property>
-				      <property name="ypad">0</property>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">False</property>
-				      <property name="fill">False</property>
-				    </packing>
-				  </child>
-
-				  <child>
-				    <widget class="GtkHScale" id="darken-background-scale">
-				      <property name="visible">True</property>
-				      <property name="can_focus">True</property>
-				      <property name="draw_value">False</property>
-				      <property name="value_pos">GTK_POS_BOTTOM</property>
-				      <property name="digits">2</property>
-				      <property name="update_policy">GTK_UPDATE_DELAYED</property>
-				      <property name="inverted">False</property>
-				      <property name="adjustment">0.1 0 1 0.01 0.1 0</property>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">True</property>
-				      <property name="fill">True</property>
-				    </packing>
-				  </child>
-
-				  <child>
-				    <widget class="GtkLabel" id="label63">
-				      <property name="visible">True</property>
-				      <property name="label" translatable="yes">&lt;small&gt;&lt;i&gt;Maximum&lt;/i&gt;&lt;/small&gt;</property>
-				      <property name="use_underline">False</property>
-				      <property name="use_markup">True</property>
-				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-				      <property name="wrap">False</property>
-				      <property name="selectable">False</property>
-				      <property name="xalign">0.5</property>
-				      <property name="yalign">0.5</property>
-				      <property name="xpad">6</property>
-				      <property name="ypad">0</property>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">False</property>
-				      <property name="fill">False</property>
-				    </packing>
-				  </child>
-				</widget>
-				<packing>
-				  <property name="padding">1</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="left_attach">0</property>
-			  <property name="right_attach">1</property>
-			  <property name="top_attach">5</property>
-			  <property name="bottom_attach">6</property>
-			</packing>
-		      </child>
-
-		      <child>
 			<widget class="GtkHBox" id="hbox7">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
@@ -2154,6 +2031,218 @@
 			  <property name="top_attach">2</property>
 			  <property name="bottom_attach">3</property>
 			  <property name="y_options">fill</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment15">
+			  <property name="visible">True</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.1</property>
+			  <property name="xscale">0.95</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkVBox" id="darken-background-vbox">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
+
+			      <child>
+				<widget class="GtkLabel" id="darken-background-scale-label">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_Shade transparent or image background:</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">darken-background-scale</property>
+				</widget>
+				<packing>
+				  <property name="padding">1</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox6">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">0</property>
+
+				  <child>
+				    <widget class="GtkLabel" id="label64">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">&lt;small&gt;&lt;i&gt;None&lt;/i&gt;&lt;/small&gt;</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">True</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">6</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkHScale" id="darken-background-scale">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="draw_value">False</property>
+				      <property name="value_pos">GTK_POS_BOTTOM</property>
+				      <property name="digits">2</property>
+				      <property name="update_policy">GTK_UPDATE_DELAYED</property>
+				      <property name="inverted">False</property>
+				      <property name="adjustment">0.1 0 1 0.01 0.1 0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">True</property>
+				      <property name="fill">True</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label63">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">&lt;small&gt;&lt;i&gt;Maximum&lt;/i&gt;&lt;/small&gt;</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">True</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">6</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">1</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">5</property>
+			  <property name="bottom_attach">6</property>
+			  <property name="y_options">fill</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkTable" id="table34">
+			  <property name="visible">True</property>
+			  <property name="n_rows">1</property>
+			  <property name="n_columns">2</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">12</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="label68">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Font smoothing:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_CENTER</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">font-smoothing-optionmenu</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkOptionMenu" id="font-smoothing-optionmenu">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="history">0</property>
+
+			      <child>
+				<widget class="GtkMenu" id="menu1">
+
+				  <child>
+				    <widget class="GtkMenuItem" id="default1">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Default</property>
+				      <property name="use_underline">True</property>
+				    </widget>
+				  </child>
+
+				  <child>
+				    <widget class="GtkMenuItem" id="enabled1">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Enabled</property>
+				      <property name="use_underline">True</property>
+				    </widget>
+				  </child>
+
+				  <child>
+				    <widget class="GtkMenuItem" id="disabled1">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Disabled</property>
+				      <property name="use_underline">True</property>
+				    </widget>
+				  </child>
+				</widget>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">6</property>
+			  <property name="bottom_attach">7</property>
+			  <property name="x_options">fill</property>
 			</packing>
 		      </child>
 		    </widget>
--- src/gnome-terminal.schemas.in.orig	Mon May 10 14:39:24 2004
+++ src/gnome-terminal.schemas.in	Mon May 10 14:42:43 2004
@@ -458,6 +458,21 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/gnome-terminal/profiles/Default/font_smoothing</key>
+      <applyto>/apps/gnome-terminal/profiles/Default/font_smoothing</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <default>default</default>
+      <locale name="C">
+        <short>Font smoothing behavior</short>
+        <long>
+         Controls the font smoothing behavior for this profile.  Possibilities
+         are "default", "enabled", and "disabled".
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/gnome-terminal/profiles/Default/background_type</key>
       <applyto>/apps/gnome-terminal/profiles/Default/background_type</applyto>
       <owner>gnome-terminal</owner>
--- src/profile-editor.c.orig	Sat Feb 14 02:22:21 2004
+++ src/profile-editor.c	Mon May 10 14:39:01 2004
@@ -135,6 +135,8 @@
                                                               TerminalProfile *profile);
 static void       profile_editor_update_use_system_font      (GtkWidget       *widget,
                                                               TerminalProfile *profile);
+static void       profile_editor_update_font_smoothing        (GtkWidget       *widget,
+                                                              TerminalProfile *profile);
 static void       profile_editor_update_font                 (GtkWidget       *widget,
                                                               TerminalProfile *profile);
 
@@ -336,6 +338,9 @@
   if (mask->use_system_font)
     profile_editor_update_use_system_font (editor, profile);
 
+  if (mask->font_smoothing)
+    profile_editor_update_font_smoothing (editor, profile);
+
   if (mask->font)
     profile_editor_update_font (editor, profile);
   
@@ -737,6 +742,17 @@
 }
 
 static void
+font_smoothing_changed (GtkWidget       *option_menu,
+                        TerminalProfile *profile)
+{
+  int i;
+
+  i = gtk_option_menu_get_history (GTK_OPTION_MENU (option_menu));
+
+  terminal_profile_set_font_smoothing (profile, i);
+}
+
+static void
 font_set (GtkWidget       *fontpicker,
           TerminalProfile *profile)
 {
@@ -1172,6 +1188,7 @@
       if (terminal_widget_supports_pango_fonts ())
         {
           GtkWidget *font_label;
+	  GtkWidget *font_smoothing_optionmenu;
           
           fontsel = gtk_font_button_new ();
           g_object_set_data (G_OBJECT (editor), "font-selector", fontsel);
@@ -1206,6 +1223,13 @@
                                      glade_xml_get_widget (xml,
                                                            "profile-icon-label"));
           g_object_unref (G_OBJECT (size_group));
+
+          font_smoothing_optionmenu =
+            glade_xml_get_widget (xml, "font-smoothing-optionmenu");
+          profile_editor_update_font_smoothing (editor, profile);
+          g_signal_connect (G_OBJECT (font_smoothing_optionmenu), "changed",
+                            G_CALLBACK (font_smoothing_changed),
+                            profile);
         }
       else
         {
@@ -1439,6 +1463,9 @@
   set_insensitive (editor, "system-font-checkbutton",
                    mask->use_system_font);
 
+  set_insensitive (editor, "font-smoothing-optionmenu",
+                   mask->font_smoothing);
+
   
   {
     int i;
@@ -1976,6 +2003,19 @@
   
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
                                 terminal_profile_get_use_system_font (profile));
+}
+
+static void
+profile_editor_update_font_smoothing (GtkWidget       *editor,
+                                      TerminalProfile *profile)
+{
+  GtkWidget *w;
+
+  w = profile_editor_get_widget (editor, "font-smoothing-optionmenu");
+
+  gtk_option_menu_set_history (GTK_OPTION_MENU (w),
+                               terminal_profile_get_font_smoothing (profile));
+
 }
 
 static void
--- src/terminal-profile.c.orig	Tue Sep 30 20:06:17 2003
+++ src/terminal-profile.c	Mon May 10 14:39:01 2004
@@ -68,6 +68,7 @@
 #define KEY_DELETE_BINDING "delete_binding"
 #define KEY_USE_THEME_COLORS "use_theme_colors"
 #define KEY_USE_SYSTEM_FONT "use_system_font"
+#define KEY_FONT_SMOOTHING "font_smoothing"
 #define KEY_USE_SKEY "use_skey"
 #define KEY_FONT "font"
 
@@ -93,6 +94,7 @@
   TerminalTitleMode title_mode;
   char *word_chars;
   TerminalScrollbarPosition scrollbar_position;
+  TerminalFontSmoothing font_smoothing;
   int scrollback_lines;
   TerminalExitAction exit_action;
   char *custom_command;
@@ -167,6 +169,13 @@
   { -1, NULL }
 };
 
+static const GConfEnumStringPair font_smoothing_behaviors[] = {
+  { TERMINAL_FONT_SMOOTHING_DEFAULT, "default" },
+  { TERMINAL_FONT_SMOOTHING_ENABLED, "enabled" },
+  { TERMINAL_FONT_SMOOTHING_DISABLED, "disabled" },
+  { -1, NULL }
+};
+
 static const GConfEnumStringPair exit_actions[] = {
   { TERMINAL_EXIT_CLOSE, "close" },
   { TERMINAL_EXIT_RESTART, "restart" },
@@ -290,6 +299,7 @@
   profile->priv->delete_binding = TERMINAL_ERASE_ESCAPE_SEQUENCE;
   profile->priv->use_theme_colors = TRUE;
   profile->priv->use_system_font = TRUE;
+  profile->priv->font_smoothing = TERMINAL_FONT_SMOOTHING_DEFAULT;
   profile->priv->use_skey = TRUE;
   profile->priv->font = pango_font_description_new ();
   pango_font_description_set_family (profile->priv->font,
@@ -1438,6 +1448,36 @@
   g_free (key);
 }
 
+TerminalFontSmoothing
+terminal_profile_get_font_smoothing (TerminalProfile *profile)
+{
+  g_return_val_if_fail (TERMINAL_IS_PROFILE (profile), 0);
+
+  return profile->priv->font_smoothing;
+}
+
+void
+terminal_profile_set_font_smoothing (TerminalProfile      *profile,
+                                     TerminalFontSmoothing setting)
+{
+  char *key;
+  const char *smoothing_behavior;
+
+  RETURN_IF_NOTIFYING (profile);
+
+  key = gconf_concat_dir_and_key (profile->priv->profile_dir,
+                                  KEY_FONT_SMOOTHING);
+
+  smoothing_behavior = gconf_enum_to_string (font_smoothing_behaviors, setting);
+
+  gconf_client_set_string (profile->priv->conf,
+                           key,
+                           smoothing_behavior,
+                           NULL);
+
+  g_free (key);
+}
+
 gboolean
 terminal_profile_get_use_skey (TerminalProfile *profile)
 {
@@ -1648,6 +1688,25 @@
 }
 
 static gboolean
+set_font_smoothing (TerminalProfile *profile,
+                    const char      *str_val)
+{
+  int behavior; /* TerminalFontSmoothing */
+
+  if (str_val &&
+      gconf_string_to_enum (font_smoothing_behaviors, str_val, &behavior) &&
+      behavior != profile->priv->font_smoothing)
+    {
+      profile->priv->font_smoothing = behavior;
+      return TRUE;
+    }
+  else
+    {
+      return FALSE;
+    }
+}
+
+static gboolean
 set_exit_action (TerminalProfile *profile,
                  const char      *str_val)
 {
@@ -1981,6 +2040,7 @@
   UPDATE_STRING  (KEY_DELETE_BINDING,       delete_binding);
   UPDATE_BOOLEAN (KEY_USE_THEME_COLORS,     use_theme_colors);
   UPDATE_BOOLEAN (KEY_USE_SYSTEM_FONT,      use_system_font);
+  UPDATE_STRING  (KEY_FONT_SMOOTHING,       font_smoothing);
   UPDATE_STRING  (KEY_FONT,                 font);
   
 #undef UPDATE_BOOLEAN
@@ -2127,6 +2187,7 @@
      UPDATE_STRING  (KEY_DELETE_BINDING,         delete_binding,         NULL);
      UPDATE_BOOLEAN (KEY_USE_THEME_COLORS,       use_theme_colors,       TRUE);
      UPDATE_BOOLEAN (KEY_USE_SYSTEM_FONT,        use_system_font,        TRUE);
+     UPDATE_STRING  (KEY_FONT_SMOOTHING,         font_smoothing,         NULL);
      UPDATE_STRING  (KEY_FONT,                   font,                   NULL);
    }
   
@@ -2858,6 +2919,16 @@
   gconf_client_set_bool (base_profile->priv->conf,
                          key, base_profile->priv->use_system_font,
                          &err);
+  BAIL_OUT_CHECK ();
+
+  g_free (key);
+  key = gconf_concat_dir_and_key (profile_dir,
+                                  KEY_FONT_SMOOTHING);
+  cs = gconf_enum_to_string (font_smoothing_behaviors,
+                             base_profile->priv->font_smoothing);
+  gconf_client_set_string (base_profile->priv->conf,
+                           key, cs,
+                           &err);
   BAIL_OUT_CHECK ();
 
   g_free (key);
--- src/terminal-profile.h.orig	Sun Dec  8 00:00:25 2002
+++ src/terminal-profile.h	Mon May 10 14:39:01 2004
@@ -65,6 +65,7 @@
   unsigned int delete_binding : 1;
   unsigned int use_theme_colors : 1;
   unsigned int use_system_font : 1;
+  unsigned int font_smoothing : 1;
   unsigned int font : 1;
 } TerminalSettingMask;
 
@@ -95,6 +96,13 @@
   TERMINAL_SCROLLBAR_HIDDEN
 } TerminalScrollbarPosition;
 
+typedef enum
+{
+  TERMINAL_FONT_SMOOTHING_DEFAULT,
+  TERMINAL_FONT_SMOOTHING_ENABLED,
+  TERMINAL_FONT_SMOOTHING_DISABLED
+} TerminalFontSmoothing;
+
 typedef enum 
 {
   TERMINAL_EXIT_CLOSE,
@@ -183,6 +191,7 @@
 
 gboolean               terminal_profile_get_use_theme_colors      (TerminalProfile *profile);
 gboolean               terminal_profile_get_use_system_font       (TerminalProfile *profile);
+TerminalFontSmoothing  terminal_profile_get_font_smoothing        (TerminalProfile *profile);
 gboolean               terminal_profile_get_use_skey              (TerminalProfile *profile);
 const PangoFontDescription* terminal_profile_get_font             (TerminalProfile *profile);
 
@@ -256,6 +265,9 @@
 
 void terminal_profile_set_use_system_font       (TerminalProfile        *profile,
 						 gboolean                setting);
+
+void terminal_profile_set_font_smoothing         (TerminalProfile        *profile,
+                                                  TerminalFontSmoothing   setting);
 
 void terminal_profile_set_use_skey              (TerminalProfile        *profile,
 						 gboolean                setting);
--- src/terminal-screen.c.orig	Fri Feb 20 18:14:09 2004
+++ src/terminal-screen.c	Mon May 10 14:39:01 2004
@@ -727,17 +727,20 @@
   if (terminal_widget_supports_pango_fonts ())
     {
       PangoFontDescription *desc;
+      TerminalFontSmoothing font_smoothing;
 
       if (terminal_profile_get_use_system_font (profile))
         desc = get_system_monospace_font ();
       else
         desc = pango_font_description_copy (terminal_profile_get_font (profile));
 
+      font_smoothing = terminal_profile_get_font_smoothing (profile);
+
       pango_font_description_set_size (desc,
                                        screen->priv->font_scale *
                                        pango_font_description_get_size (desc));
 
-      terminal_widget_set_pango_font (term, desc);
+      terminal_widget_set_pango_font (term, desc, font_smoothing);
 
       pango_font_description_free (desc);
     }
--- src/terminal-widget-vte.c.orig	Tue Sep 30 20:06:17 2003
+++ src/terminal-widget-vte.c	Mon May 10 14:39:01 2004
@@ -565,10 +565,26 @@
 
 void
 terminal_widget_set_pango_font (GtkWidget                  *widget,
-                                const PangoFontDescription *font_desc)
+                                const PangoFontDescription *font_desc,
+                                TerminalFontSmoothing       font_smoothing)
 {
+  VteTerminalAntiAlias vte_antialias;
+
   g_return_if_fail (font_desc != NULL);
-  vte_terminal_set_font (VTE_TERMINAL (widget), font_desc);
+
+  switch (font_smoothing) {
+    case TERMINAL_FONT_SMOOTHING_ENABLED:
+      vte_antialias = VTE_ANTI_ALIAS_FORCE_ENABLE;
+      break;
+    case TERMINAL_FONT_SMOOTHING_DISABLED:
+      vte_antialias = VTE_ANTI_ALIAS_FORCE_DISABLE;
+      break;
+    default:
+      vte_antialias = VTE_ANTI_ALIAS_USE_DEFAULT;
+      break;
+  }
+
+  vte_terminal_set_font_full (VTE_TERMINAL (widget), font_desc, vte_antialias);
 }
 
 gboolean
--- src/terminal-widget.h.orig	Mon Dec  2 23:07:17 2002
+++ src/terminal-widget.h	Mon May 10 14:39:01 2004
@@ -156,7 +156,8 @@
                                           int         len);
 
 void terminal_widget_set_pango_font (GtkWidget                  *widget,
-                                     const PangoFontDescription *font_desc);
+                                     const PangoFontDescription *font_desc,
+                                     TerminalFontSmoothing       font_smoothing);
 
 gboolean terminal_widget_supports_pango_fonts (void);
 
--- src/terminal-widget-zvt.c.orig	Mon May 10 14:56:34 2004
+++ src/terminal-widget-zvt.c	Mon May 10 14:57:29 2004
@@ -1130,7 +1130,8 @@
 
 void
 terminal_widget_set_pango_font (GtkWidget                  *widget,
-                                const PangoFontDescription *font_desc)
+                                const PangoFontDescription *font_desc,
+                                TerminalFontSmoothing       font_smoothing)
 {
   g_return_if_fail (font_desc != NULL);
   zvt_term_set_pango_font (ZVT_TERM (widget), font_desc);
