Index: font-view.c
===================================================================
--- font-view.c	(revision 9243)
+++ font-view.c	(working copy)
@@ -253,7 +253,7 @@
     } else {
 	value_w = gtk_label_new(value);
 	gtk_misc_set_alignment(GTK_MISC(value_w), 0.0, 0.5);
-	gtk_label_set_selectable(GTK_LABEL(value_w), TRUE);
+	gtk_label_set_selectable(GTK_LABEL(value_w), FALSE);
     }
 
     gtk_table_attach(GTK_TABLE(table), name_w, 0, 1, *row_p, *row_p + 1,
@@ -265,6 +265,44 @@
 }
 
 static void
+open_url (GtkWidget *widget,
+	  gpointer   data)
+{
+    const gchar *link;
+    link = gtk_link_button_get_uri (GTK_LINK_BUTTON (widget));
+    gnome_url_show(link, NULL);
+}
+
+static void
+add_row_url(GtkWidget *table, gint *row_p,
+	const gchar *name, const gchar *value, gboolean multiline)
+{
+    gchar *bold_name;
+    GtkWidget *name_w, *value_w;
+
+    bold_name = g_strconcat("<b>", name, "</b>", NULL);
+    name_w = gtk_label_new(bold_name);
+    g_free(bold_name);
+    gtk_misc_set_alignment(GTK_MISC(name_w), 0.0, 0.0);
+    gtk_label_set_use_markup(GTK_LABEL(name_w), TRUE);
+
+    GtkWidget *button;
+    button = gtk_link_button_new (value);
+    g_signal_connect (button, "clicked",
+		      G_CALLBACK (open_url), NULL);
+
+    gtk_button_set_alignment(button, 0.0, 0.0);
+    value_w = button;
+
+    gtk_table_attach(GTK_TABLE(table), name_w, 0, 1, *row_p, *row_p + 1,
+		     GTK_FILL, GTK_FILL, 0, 0);
+    gtk_table_attach(GTK_TABLE(table), value_w, 1, 2, *row_p, *row_p + 1,
+		     GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0);
+
+    (*row_p)++;
+}
+
+static void
 add_face_info(GtkWidget *table, gint *row_p, const gchar *uri, FT_Face face)
 {
     gchar *s;
@@ -286,21 +324,11 @@
                               NULL, NULL);
     g_object_unref (file);
 
-    if (info) {
-        s = g_content_type_get_description (g_file_info_get_content_type (info));
-        add_row (table, row_p, _("Type:"), s, FALSE);
-        g_free (s);
-
-        s = g_format_size_for_display (g_file_info_get_size (info));
-        add_row (table, row_p, _("Size:"), s, FALSE);
-        g_free (s);
-
-        g_object_unref (info);
-    }
-
     if (FT_IS_SFNT(face)) {
 	gint i, len;
-	gchar *version = NULL, *copyright = NULL, *description = NULL;
+	gchar *version = NULL, *copyright = NULL, *license = NULL, 
+		  *license_url = NULL, *designer = NULL, *designer_url = NULL,
+		  *trademark = NULL, *description = NULL;
 
 	len = FT_Get_Sfnt_Name_Count(face);
 	for (i = 0; i < len; i++) {
@@ -326,6 +354,31 @@
 		version = g_convert(sname.string, sname.string_len,
 				    "UTF-8", "UTF-16BE", NULL, NULL, NULL);
 		break;
+	    case TT_NAME_ID_LICENSE:
+		g_free(license);
+		license = g_convert(sname.string, sname.string_len,
+					"UTF-8", "UTF-16BE", NULL, NULL, NULL);
+		break;
+	    case TT_NAME_ID_LICENSE_URL:
+		g_free(license_url);
+		license_url = g_convert(sname.string, sname.string_len,
+					"UTF-8", "UTF-16BE", NULL, NULL, NULL);
+		break;
+	    case TT_NAME_ID_DESIGNER:
+		g_free(designer);
+		designer = g_convert(sname.string, sname.string_len,
+					"UTF-8", "UTF-16BE", NULL, NULL, NULL);
+		break;
+	    case TT_NAME_ID_DESIGNER_URL:
+		g_free(designer_url);
+		designer_url = g_convert(sname.string, sname.string_len,
+					"UTF-8", "UTF-16BE", NULL, NULL, NULL);
+		break;
+	    case TT_NAME_ID_TRADEMARK:
+		g_free(trademark);
+		trademark = g_convert(sname.string, sname.string_len,
+					"UTF-8", "UTF-16BE", NULL, NULL, NULL);
+		break;
 	    case TT_NAME_ID_DESCRIPTION:
 		g_free(description);
 		description = g_convert(sname.string, sname.string_len,
@@ -343,15 +396,47 @@
 	    add_row(table, row_p, _("Copyright:"), copyright, TRUE);
 	    g_free(copyright);
 	}
+	if (license) {
+	    add_row(table, row_p, _("License:"), license, TRUE);
+	    g_free(license);
+	}
+	if (license_url) {
+	    add_row_url(table, row_p, (""), license_url, FALSE);
+	    g_free(license_url);
+	}
+	if (designer) {
+	    add_row(table, row_p, _("Designer:"), designer, FALSE);
+	    g_free(designer);
+	}
+	if (designer_url) {
+	    add_row_url(table, row_p, _(""), designer_url, FALSE);
+	    g_free(designer_url);
+	}
 	if (description) {
 	    add_row(table, row_p, _("Description:"), description, TRUE);
 	    g_free(description);
 	}
+	if (trademark) {
+	    add_row(table, row_p, _("Trademark:"), trademark, TRUE);
+	    g_free(trademark);
+	}	
     } else if (FT_Get_PS_Font_Info(face, &ps_info) == 0) {
 	if (ps_info.version && g_utf8_validate(ps_info.version, -1, NULL))
 	    add_row(table, row_p, _("Version:"), ps_info.version, FALSE);
 	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
 	    add_row(table, row_p, _("Copyright:"), ps_info.notice, TRUE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("License:"), ps_info.notice, TRUE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("License URL:"), ps_info.notice, TRUE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("Designers:"), ps_info.notice, FALSE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("Designers URL:"), ps_info.notice, FALSE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("Trademark:"), ps_info.notice, FALSE);
+	if (ps_info.notice && g_utf8_validate(ps_info.notice, -1, NULL))
+	    add_row(table, row_p, _("Description:"), ps_info.notice, FALSE);
     }
 }
 
@@ -465,7 +550,8 @@
     }
 
     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    title = g_strconcat(face->family_name,
+    title = g_strconcat("Font viewer: ", 
+			face->family_name,
 			face->style_name ? ", " : "",
 			face->style_name, NULL);
     gtk_window_set_title(GTK_WINDOW(window), title);
@@ -487,10 +573,11 @@
     gtk_table_set_row_spacings(GTK_TABLE(table), 2);
 
     swin = gtk_scrolled_window_new(NULL, NULL);
-    gtk_widget_set_size_request(swin, 500, 200);
+    gtk_widget_set_size_request(swin, 600, 300);
     gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),
 				   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
     gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0);
+    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
 
     drawing_area = gtk_drawing_area_new();
     gtk_widget_modify_bg(drawing_area, GTK_STATE_NORMAL, &white);
