Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.623
diff -u -p -r1.623 theme.inc
--- includes/theme.inc	20 Nov 2010 04:03:51 -0000	1.623
+++ includes/theme.inc	22 Nov 2010 07:14:55 -0000
@@ -2194,14 +2194,18 @@ function template_preprocess_html(&$vari
 
   // Construct page title.
   if (drupal_get_title()) {
-    $head_title = array(strip_tags(drupal_get_title()), check_plain(variable_get('site_name', 'Drupal')));
+    $head_title = array(
+      'title' => strip_tags(drupal_get_title()),
+      'name' => check_plain(variable_get('site_name', 'Drupal')),
+    );
   }
   else {
-    $head_title = array(check_plain(variable_get('site_name', 'Drupal')));
+    $head_title = array('name' => check_plain(variable_get('site_name', 'Drupal')));
     if (variable_get('site_slogan', '')) {
-      $head_title[] = filter_xss_admin(variable_get('site_slogan', ''));
+      $head_title['slogan'] = filter_xss_admin(variable_get('site_slogan', ''));
     }
   }
+  $variables['head_title_array'] = $head_title;
   $variables['head_title'] = implode(' | ', $head_title);
 
   // Populate the page template suggestions.
@@ -2419,18 +2423,22 @@ function template_preprocess_maintenance
 
   // Construct page title
   if (drupal_get_title()) {
-    $head_title = array(strip_tags(drupal_get_title()), variable_get('site_name', 'Drupal'));
+    $head_title = array(
+      'title' => strip_tags(drupal_get_title()),
+      'name' => variable_get('site_name', 'Drupal'),
+    );
   }
   else {
-    $head_title = array(variable_get('site_name', 'Drupal'));
+    $head_title = array('name' => variable_get('site_name', 'Drupal'));
     if (variable_get('site_slogan', '')) {
-      $head_title[] = variable_get('site_slogan', '');
+      $head_title['slogan'] = variable_get('site_slogan', '');
     }
   }
 
   // set the default language if necessary
   $language = isset($GLOBALS['language']) ? $GLOBALS['language'] : language_default();
 
+  $variables['head_title_array']  = $head_title;
   $variables['head_title']        = implode(' | ', $head_title);
   $variables['base_path']         = base_path();
   $variables['front_page']        = url();
Index: modules/system/html.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/html.tpl.php,v
retrieving revision 1.5
diff -u -p -r1.5 html.tpl.php
--- modules/system/html.tpl.php	30 Oct 2010 03:52:14 -0000	1.5
+++ modules/system/html.tpl.php	22 Nov 2010 07:23:20 -0000
@@ -14,6 +14,13 @@
  * - $rdf_namespaces: All the RDF namespace prefixes used in the HTML document.
  * - $grddl_profile: A GRDDL profile allowing agents to extract the RDF data.
  * - $head_title: A modified version of the page title, for use in the TITLE tag.
+ * - $head_title_array: (array) An associative array containing the string parts
+ *   that were used to generate the $head_title variable, already prepared to be
+ *   output as TITLE tag. The key/value pairs may be one or maximally two of the
+ *   following:
+ *   - title: The title of the current page, if any.
+ *   - name: The name of the site.
+ *   - slogan: The slogan of the site, if any, and if there is no title.
  * - $head: Markup for the HEAD section (including meta tags, keyword tags, and
  *   so on).
  * - $styles: Style tags necessary to import all CSS files for the page.
Index: modules/system/maintenance-page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/maintenance-page.tpl.php,v
retrieving revision 1.9
diff -u -p -r1.9 maintenance-page.tpl.php
--- modules/system/maintenance-page.tpl.php	23 Feb 2010 05:02:02 -0000	1.9
+++ modules/system/maintenance-page.tpl.php	22 Nov 2010 07:24:30 -0000
@@ -5,8 +5,8 @@
  * @file
  * Default theme implementation to display a single Drupal page while offline.
  *
- * All the available variables are mirrored in page.tpl.php. Some may be left
- * blank but they are provided for consistency.
+ * All the available variables are mirrored in html.tpl.php and page.tpl.php.
+ * Some may be blank but they are provided for consistency.
  *
  * @see template_preprocess()
  * @see template_preprocess_maintenance_page()
