Index: wp-content/themes/twentytwelve/inc/theme-options.php
===================================================================
--- wp-content/themes/twentytwelve/inc/theme-options.php	(revision 21395)
+++ wp-content/themes/twentytwelve/inc/theme-options.php	(working copy)
@@ -37,9 +37,10 @@
 		if ( 'twentytwelve' != get_stylesheet() )
 			$this->option_key = get_stylesheet() . '_theme_options';
 
-		add_action( 'admin_init',         array( $this, 'options_init'       ) );
-		add_action( 'admin_menu',         array( $this, 'add_page'           ) );
-		add_action( 'customize_register', array( $this, 'customize_register' ) );
+		add_action( 'admin_init',             array( $this, 'options_init'         ) );
+		add_action( 'admin_menu',             array( $this, 'add_page'             ) );
+		add_action( 'customize_register',     array( $this, 'customize_register'   ) );
+		add_action( 'customize_preview_init', array( $this, 'customize_preview_js' ) );
 	}
 
 	/**
@@ -203,6 +204,11 @@
 	 * @return void
 	 */
 	public function customize_register( $wp_customize ) {
+		
+		// Add postMessage support for site title and tagline
+		$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
+		$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
+		
 		// Enable Web Fonts
 		$wp_customize->add_section( $this->option_key . '_enable_fonts', array(
 			'title'    => __( 'Fonts', 'twentytwelve' ),
@@ -215,6 +221,7 @@
 			'default'    => $defaults['enable_fonts'],
 			'type'       => 'option',
 			'capability' => 'edit_theme_options',
+			'transport'  => 'postMessage',
 		) );
 
 		$wp_customize->add_control( $this->option_key . '_enable_fonts', array(
@@ -224,4 +231,44 @@
 			'type'     => 'checkbox',
 		) );
 	}
+	
+	/**
+	 * Bind JS handlers to make Theme Customizer preview reload changes asynchronously.
+	 *
+	 * @since Twenty Twelve 1.0
+	 * @access public
+	 * 
+	 * @return void
+	 */
+	public function customize_preview_js() {
+		wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20120725', true );
+		wp_localize_script( 'twentytwelve-customizer', 'twentytwelve_customizer', array(
+			'option_key' => $this->option_key,
+			'style'      => "
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzKRDOzjiPcYnFooOUGCOsRk.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxhbnBKKEOwRKgsHDreGcocg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBrrIa-7acMAeDBVuclsi6Gc.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Open Sans'), local('OpenSans'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/cJZKeOuBrn4kERxqtaUH3bO3LdcAZYWl9Si6vvxL-qU.woff) format('woff');
+}"
+		) );
+	}
 }
\ No newline at end of file
Index: wp-content/themes/twentytwelve/functions.php
===================================================================
--- wp-content/themes/twentytwelve/functions.php	(revision 21395)
+++ wp-content/themes/twentytwelve/functions.php	(working copy)
@@ -369,15 +369,4 @@
 		$content_width = 960;
 	}
 }
-add_action( 'template_redirect', 'twentytwelve_content_width' );
-
-/**
- * Bind JS handler to make Theme Customizer preview reload
- * custom background `body_class` value changes asynchronously.
- *
- * @since Twenty Twelve 1.0
- */
-function twentytwelve_customize_preview_js() {
-	wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20120725', true );
-}
-add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );
\ No newline at end of file
+add_action( 'template_redirect', 'twentytwelve_content_width' );
\ No newline at end of file
Index: wp-content/themes/twentytwelve/js/theme-customizer.js
===================================================================
--- wp-content/themes/twentytwelve/js/theme-customizer.js	(revision 21395)
+++ wp-content/themes/twentytwelve/js/theme-customizer.js	(working copy)
@@ -1,4 +1,25 @@
 ( function( $ ){
+	wp.customize( 'blogname', function( value ) {
+		value.bind( function( to ) {
+			$( '.site-title a' ).html( to );
+		} );
+	} );
+	
+	wp.customize( 'blogdescription', function( value ) {
+		value.bind( function( to ) {
+			$( '.site-description' ).html( to );
+		} );
+	} );
+	
+	wp.customize( twentytwelve_customizer.option_key + '[enable_fonts]', function( value ) {
+		value.bind( function( to ) {
+			if ( to )
+				$( 'head' ).prepend('<style id="twentytwelve-fonts-css" type="text/css">' + twentytwelve_customizer.style + '</style>');
+			else
+				$( '#twentytwelve-fonts-css' ).remove();
+		} );
+	} );
+	
 	// Hook into background color change and adjust body class value as needed.
 	wp.customize( 'background_color', function( value ) {
 		var body = $( 'body' );
