Index: modules/field/field.attach.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.attach.inc,v
retrieving revision 1.27
diff -u -p -r1.27 field.attach.inc
--- modules/field/field.attach.inc	28 Jun 2009 01:00:42 -0000	1.27
+++ modules/field/field.attach.inc	28 Jun 2009 22:28:47 -0000
@@ -475,6 +475,15 @@ function field_attach_load($obj_type, $o
 }
 
 /**
+ * Allow formatters to act on fieldable objects prior to rendering.
+ */
+function field_attach_formatter_load($obj_type, $objects) {
+
+  // Invoke field_formatter_load().
+  _field_invoke_multiple('formatter_load', $obj_type, $queried_objects, $age);
+}
+
+/**
  * Load all fields for a previous version of each of a set of
  * objects of a single object type.
  *
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1075
diff -u -p -r1.1075 node.module
--- modules/node/node.module	27 Jun 2009 18:19:41 -0000	1.1075
+++ modules/node/node.module	28 Jun 2009 22:28:51 -0000
@@ -1950,6 +1950,7 @@ function node_feed($nids = FALSE, $chann
  *   An array in the format expected by drupal_render().
  */
 function node_build_multiple($nodes, $build_mode = 'teaser', $weight = 0) {
+  field_attach_formatter_load('node', $nodes);
   $build = array();
   foreach ($nodes as $node) {
     $build['nodes'][$node->nid] = node_build($node, $build_mode);
Index: modules/taxonomy/taxonomy.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.pages.inc,v
retrieving revision 1.30
diff -u -p -r1.30 taxonomy.pages.inc
--- modules/taxonomy/taxonomy.pages.inc	28 Jun 2009 13:37:29 -0000	1.30
+++ modules/taxonomy/taxonomy.pages.inc	28 Jun 2009 22:28:51 -0000
@@ -54,6 +54,7 @@ function taxonomy_term_page($terms, $dep
           // confusion.
           if (count($tids) == 1) {
             $term = taxonomy_term_load($tids[0]);
+            field_attach_formatter_load('taxonomy_term', array($term));
             $build += field_attach_view('taxonomy_term', $term);
             if (!empty($term->description)) {
               $build['term_description'] = array(
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1003
diff -u -p -r1.1003 user.module
--- modules/user/user.module	28 Jun 2009 12:52:57 -0000	1.1003
+++ modules/user/user.module	28 Jun 2009 22:28:52 -0000
@@ -2041,7 +2041,8 @@ function _user_cancel($edit, $account, $
  * @return
  *   A structured array containing the individual elements of the profile.
  */
-function user_build_content(&$account) {
+function user_build_content($account) {
+  field_attach_formatter_load('user', $account);
   $edit = NULL;
   $account->content = array();
 
@@ -2053,8 +2054,6 @@ function user_build_content(&$account) {
 
   // Allow modules to modify the fully-built profile.
   drupal_alter('profile', $account);
-
-  return $account->content;
 }
 
 /**
