Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 23447)
+++ wp-includes/default-filters.php	(working copy)
@@ -132,12 +132,13 @@
 add_filter( 'the_title', 'convert_chars' );
 add_filter( 'the_title', 'trim'          );
 
-add_filter( 'the_content', 'wptexturize'        );
-add_filter( 'the_content', 'convert_smilies'    );
-add_filter( 'the_content', 'convert_chars'      );
-add_filter( 'the_content', 'wpautop'            );
-add_filter( 'the_content', 'shortcode_unautop'  );
-add_filter( 'the_content', 'prepend_attachment' );
+add_filter( 'the_content', 'post_formats_compat', 7 );
+add_filter( 'the_content', 'wptexturize'            );
+add_filter( 'the_content', 'convert_smilies'        );
+add_filter( 'the_content', 'convert_chars'          );
+add_filter( 'the_content', 'wpautop'                );
+add_filter( 'the_content', 'shortcode_unautop'      );
+add_filter( 'the_content', 'prepend_attachment'     );
 
 add_filter( 'the_excerpt',     'wptexturize'      );
 add_filter( 'the_excerpt',     'convert_smilies'  );
Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 23447)
+++ wp-includes/formatting.php	(working copy)
@@ -1799,6 +1799,201 @@
 }
 
 /**
+ * Return the class for a post format content wrapper
+ *
+ * @since 3.6.0
+ *
+ * @param string $format
+ */
+function get_post_format_content_class( $format ) {
+	return apply_filters( 'post_format_content_class', $format . '-post-format-content', $format );
+}
+
+/**
+ * Ouput the class for a post format content wrapper
+ *
+ * @since 3.6.0
+ *
+ * @param string $format
+ */
+function post_format_content_class( $format ) {
+	echo get_post_format_content_class( $format );
+}
+
+/**
+ * Provide fallback behavior for Posts that have associated post format
+ *
+ * @since 3.6.0
+ *
+ * @param string $content
+ */
+function post_formats_compat( $content, $id = 0 ) {
+	$post = empty( $id ) ? get_post() : get_post( $id );
+	if ( empty( $post ) )
+		return $content;
+
+	$format = get_post_format( $post );
+	if ( empty( $format ) )
+		return $content;
+
+	if ( current_theme_supports( 'post-formats', $format ) )
+		return $content;
+
+	$defaults = array(
+		'position' => 'after',
+		'tag' => 'div',
+		'class' => get_post_format_content_class( $format ),
+		'chat_tag' => 'span',
+		'chat_tag_class' => 'chat-line',
+		'chat_delimiter' => PHP_EOL,
+		'link_class' => '',
+		'image_class' => '',
+		'gallery' => '[gallery]',
+		'audio' => '[audio]',
+		'video' => '[video]'
+	);
+
+	$args = apply_filters( 'post_format_compat', array() );
+	$compat = wp_parse_args( $args, $defaults );
+
+	$show_content = true;
+	$format_output = '';
+	$meta = get_post_format_meta( $post->ID );
+
+	switch ( $format ) {
+	case 'chat':
+		$show_content = false;
+		$lines = explode( $compat['chat_delimiter'], $content );
+		foreach ( $lines as $line )
+			$format_output .= sprintf( '<%1$s class="%2$s">%3$s</%1$s>', $compat['chat_tag'], $compat['chat_tag_class'], $line );
+		break;
+
+	case 'link':
+		$compat['tag'] = '';
+
+		if ( ! empty( $meta['url'] ) ) {
+			$esc_url = preg_quote( $meta['url'], '#' );
+			// Make sure the same URL isn't in the post (modified/extended versions allowed)
+			if ( ! preg_match( '#' . $esc_url . '[^/&\?]#', $content ) ) {
+				$format_output .= sprintf(
+					'<a %shref="%s">%s</a>',
+					empty( $compat['link_class'] ) ? '' : sprintf( 'class="%s" ', $compat['link_class'] ),
+					esc_url( $meta['url'] ),
+					empty( $post->post_title ) ? esc_url( $meta['url'] ) : apply_filters( 'the_title', $post->post_title )
+				);
+			}
+		}
+		break;
+
+	case 'quote':
+		if ( ! empty( $meta['quote'] ) && ! stristr( $content, $meta['quote'] ) ) {
+			$format_output .= sprintf( '<blockquote>%s</blockquote>', $meta['quote'] );
+			if ( ! empty( $meta['quote_source'] ) ) {
+				$format_output .= sprintf(
+					'<cite>%s</cite>',
+					! empty( $meta['url'] ) ?
+						sprintf( '<a href="%s">%s</a>', esc_url( $meta['url'] ), $meta['quote_source'] ) :
+						$meta['quote_source']
+				);
+			}
+		}
+		break;
+
+	case 'image':
+		if ( ! empty( $meta['image'] ) ) {
+			$image = is_numeric( $meta['image'] ) ? wp_get_attachment_url( $meta['image'] ) : $meta['image'];
+
+			if ( ! empty( $image ) && ! stristr( $content, $image ) ) {
+				$image_html = sprintf(
+					'<img %ssrc="%s" alt="" />',
+					empty( $compat['image_class'] ) ? '' : sprintf( 'class="%s" ', $compat['image_class'] ),
+					$image
+				);
+				if ( empty( $meta['url'] ) ) {
+					$format_output .= $image_html;
+				} else {
+					$format_output .= sprintf(
+						'<a href="%s">%s</a>',
+						esc_url( $meta['url'] ),
+						$image_html
+					);
+				}
+			}
+		}
+		break;
+
+	case 'gallery':
+		preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches );
+		if ( ! empty( $matches ) && isset( $matches[2] ) ) {
+			foreach ( (array) $matches[2] as $match ) {
+				if ( 'gallery' === $match )
+					break 2; // foreach + case
+			}
+		}
+
+		if ( empty( $meta['gallery'] ) && ! empty( $compat['gallery'] ) ) {
+			$format_output .= $compat['gallery'];
+		} elseif ( ! empty( $meta['gallery'] ) ) {
+			$format_output .= $meta['gallery'];
+		}
+		break;
+
+	case 'video':
+	case 'audio':
+		$shortcode_regex = '/' . get_shortcode_regex() . '/s';
+		$matches = preg_match( $shortcode_regex, $content );
+		if ( ! $matches || $format !== $matches[2] ) {
+			if ( empty( $meta['media'] ) && ! empty( $compat[$format] ) ) {
+				$format_output .= $compat[$format];
+			} elseif ( ! empty( $meta['media'] ) ) {
+				// the metadata is a shortcode or an embed code
+				if ( preg_match( $shortcode_regex, $meta['media'] ) || preg_match( '#<[^>]+>#', $meta['media'] ) ) {
+					$format_output .= $meta['media'];
+				} elseif ( ! stristr( $content, $meta['media'] ) ) {
+					$mime_type = wp_check_filetype( $meta['media'] );
+					// URL that can be shortcode'd
+					if ( ! empty( $mime_type['type'] )
+						&& ( ( 'video' === $format && 'video/mp4' === $mime_type['type'] )
+							|| ( 'audio' === $format && 'audio/mpeg' === $mime_type['type'] ) ) ) {
+						$format_output .= sprintf( '[%s src="%s"]', $format, esc_url( $meta['media'] ) );
+					// URL that isn't embeddable outputs string
+					} else {
+						$format_output .= sprintf( '[embed]%s[/embed]', $meta['media'] );
+					}
+				}
+			}
+		}
+		break;
+	case 'standard':
+	case 'status':
+	case 'aside':
+	default:
+		return $content;
+		break;
+	}
+
+	if ( empty( $format_output ) )
+		return $content;
+
+	$output = '';
+	if ( ! empty( $compat['tag'] ) )
+		$output .= sprintf( '<%s class="%s">', $compat['tag'], $compat['class'] );
+
+	if ( ! empty( $content ) && $show_content && 'before' !== $compat['position'] )
+		$output .= $content . PHP_EOL . PHP_EOL;
+
+	$output .= $format_output;
+
+	if ( ! empty( $content ) && $show_content && 'before' === $compat['position'] )
+		$output .= PHP_EOL . PHP_EOL . $content;
+
+	if ( ! empty( $compat['tag'] ) )
+		$output .= sprintf( '</%s>', $compat['tag'] );;
+
+	return $output;
+}
+
+/**
  * Verifies that an email is valid.
  *
  * Does not grok i18n domains. Not RFC compliant.
