Index: includes/features.content.inc
===================================================================
--- includes/features.content.inc	(revision 283)
+++ includes/features.content.inc	(working copy)
@@ -28,6 +28,12 @@
   $modules = module_implements('content_default_fields');
   foreach ($modules as $module) {
     $fields = module_invoke($module, 'content_default_fields');
+    if (isset($fields['extra'])) {
+      foreach (array_keys($fields['extra']) as $type_name) {
+        $map['{$type_name}-extra'] = $module;
+      }
+      unset($fields['extra']);
+    }
     foreach ($fields as $field) {
       $map["{$field['type_name']}-{$field['field_name']}"] = $module;
     }
@@ -102,6 +108,9 @@
     unset($field['locked']);
     unset($field['db_storage']);
 
+    // Weight doesn't seem to be set unless it's at the top level of the object
+    $field['weight'] = $field['display_settings']['weight'];
+
     $code[] = '  // Exported field: '. $field_name;
     $code[] = '  $fields[] = '. features_var_export($field, '  ') .';';
     $code[] = '';
@@ -111,6 +120,31 @@
       $translatables[] = $field['widget']['label'];
     }
   }
+
+  // Add extra weights to the fields
+  $extra = array();
+  foreach ($data as $instance) {
+    $instance = explode('-', $instance);
+    $type_name = $instance[0];
+    if (array_key_exists($type_name, $extra)) continue;
+    if ($weights = variable_get('content_extra_weights_' . $type_name, NULL)) {
+      $extra[$type_name] = $weights;
+    }
+  }
+  if (!empty($extra)) {
+    $code[] = '  // Extra field weights';
+    $code[] = '  $fields[\'extra\'] = array(';
+    foreach ($extra as $type_name => $weights) {
+      $code[] = "    '$type_name' => array(";
+      foreach ($weights as $field_name => $weight) {
+        $code[] = "      '$field_name' => '$weight',";
+      }
+      $code[] = '    ),';
+    }
+    $code[] = '  );';
+    $code[] = '';
+  }
+  
   if (!empty($translatables)) {
     $code[] = features_translatables_export($translatables, '  ');
   }
@@ -136,6 +170,13 @@
     module_load_include('inc', 'content', 'includes/content.crud');
     content_clear_type_cache(TRUE);
 
+    if (isset($fields['extra'])) {
+      foreach ($fields['extra'] as $type_name => $weights) {
+        variable_set('content_extra_weights_' . $type_name, $weights);
+      }
+      unset($fields['extra']);
+    }
+
     foreach ($fields as $field) {
       $existing_field = content_fields($field['field_name']);
       $existing_instance = content_fields($field['field_name'], $field['type_name']);
