diff --git a/meta/recipes-graphics/pango/pango.inc b/meta/recipes-graphics/pango/pango.inc
new file mode 100644
index 0000000..df0fdf6
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango.inc
@@ -0,0 +1,99 @@
+SUMMARY = "Framework for layout and rendering of internationalized text"
+DESCRIPTION = "Pango is a library for laying out and rendering of text, \
+with an emphasis on internationalization. Pango can be used anywhere \
+that text layout is needed, though most of the work on Pango so far has \
+been done in the context of the GTK+ widget toolkit. Pango forms the \
+core of text and font handling for GTK+-2.x."
+HOMEPAGE = "http://www.pango.org/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+SECTION = "libs"
+LICENSE = "LGPLv2.0+"
+
+X11DEPENDS = "virtual/libx11 libxft"
+DEPENDS = "glib-2.0 fontconfig freetype zlib virtual/libiconv cairo harfbuzz qemu-native"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'ptest', '', d)}"
+
+PACKAGECONFIG[x11] = "--with-xft,--without-xft,${X11DEPENDS}"
+PACKAGECONFIG[ptest] = "--enable-installed-tests,--disable-installed-tests,glib-2.0-native"
+
+BBCLASSEXTEND = "native"
+DEPENDS_class-native = "glib-2.0-native cairo-native harfbuzz-native"
+
+PACKAGES_DYNAMIC += "^pango-module-.*"
+
+RRECOMMENDS_${PN} = "pango-module-basic-fc"
+
+inherit gnomebase gtk-doc qemu ptest
+
+# Create a pango-modules package
+ALLOW_EMPTY_${BPN}-modules = "1"
+PACKAGES += "${BPN}-modules"
+RRECOMMENDS_${BPN}-modules =  "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("pango-module") != -1])}"
+
+
+EXTRA_AUTORECONF = ""
+
+# seems to go wrong with default cflags
+FULL_OPTIMIZATION_arm = "-O2"
+
+EXTRA_OECONF = "--disable-introspection \
+		--enable-explicit-deps=no \
+	        --disable-debug \
+	        --with-mlprefix=${MLPREFIX}"
+
+LEAD_SONAME = "libpango-1.0*"
+LIBV = "1.8.0"
+
+pango_postinst() {
+if ! [ -e $D${sysconfdir}/pango ] ; then
+	mkdir -p $D${sysconfdir}/pango
+fi
+
+if [ -n "$D" ]; then
+	${@qemu_run_binary(d, '$D','${bindir}/${MLPREFIX}pango-querymodules')} \
+		$D${libdir}/pango/${LIBV}/modules/*.so \
+		> $D${sysconfdir}/pango/${MLPREFIX}pango.modules 2>/dev/null
+
+	[ $? -ne 0 ] && exit 1
+
+	sed -i -e "s:$D::" $D${sysconfdir}/pango/${MLPREFIX}pango.modules
+
+	exit 0
+else
+	${bindir}/${MLPREFIX}pango-querymodules > /etc/pango/${MLPREFIX}pango.modules
+fi
+}
+
+# This binary needs to be compiled for the host architecture.  This isn't pretty!
+do_compile_prepend () {
+	if ${@base_contains('DISTRO_FEATURES', 'ptest', 'true', 'false', d)}; then
+		make CC="${BUILD_CC}" CFLAGS="" AM_CPPFLAGS="$(pkg-config-native --cflags glib-2.0)" gen_all_unicode_LDADD="$(pkg-config-native --libs glib-2.0)" -C ${B}/tests gen-all-unicode
+	fi
+}
+
+do_install_append () {
+	if [ "${MLPREFIX}" != "" ]; then
+		mv ${D}/${bindir}/pango-querymodules ${D}/${bindir}/${MLPREFIX}pango-querymodules 
+	fi
+}
+
+
+python populate_packages_prepend () {
+    pango_postinst = d.getVar("pango_postinst", True)
+
+    modules_root = d.expand('${libdir}/pango/${LIBV}/modules')
+
+    do_split_packages(d, modules_root, '^pango-(.*)\.so$', 'pango-module-%s', 'Pango module %s', pango_postinst)
+}
+
+FILES_${PN} = "${sysconfdir}/pango/* ${bindir}/* ${libdir}/libpango*${SOLIBS}"
+FILES_${PN}-dbg += "${libdir}/pango/${LIBV}/modules/.debug"
+FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
+
+FILES_${PN}-ptest += "${libexecdir}/installed-tests/* \
+                      ${datadir}/installed-tests/pango"
+FILES_${PN}-dbg += "${libexecdir}/installed-tests/.debug"
+
+RDEPENDS_${PN}-ptest += "gnome-desktop-testing liberation-fonts"
diff --git a/meta/recipes-graphics/pango/pango/multilib-fix-clean.patch b/meta/recipes-graphics/pango/pango/multilib-fix-clean.patch
new file mode 100644
index 0000000..ad414dd
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango/multilib-fix-clean.patch
@@ -0,0 +1,75 @@
+Upstream-Status: Pending
+
+Updated to apply to pango-1.32.5
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+diff -Nurd pango-1.32.5/configure.ac pango-1.32.5/configure.ac
+--- pango-1.32.5/configure.ac	2012-12-07 04:43:25.000000000 +0200
++++ pango-1.32.5/configure.ac	2013-01-09 08:27:40.328516792 +0200
+@@ -213,6 +213,11 @@
+
+ AC_SUBST(PANGO_DEBUG_FLAGS)
+
++AC_ARG_WITH(mlprefix,
++            AC_HELP_STRING([--with-mlprefix=<ARG>], [multilib prefix]),
++            mlprefix_str=$withval, mlprefix_str="")
++AC_DEFINE_UNQUOTED([MLPREFIX], ["$mlprefix_str"], [multilib prefix.])
++
+ AC_ARG_ENABLE(rebuilds,
+               [AC_HELP_STRING([--disable-rebuilds],
+                               [disable all source autogeneration rules])],,
+diff -Nurd pango-1.32.5/pango/modules.c pango-1.32.5/pango/modules.c
+--- pango-1.32.5/pango/modules.c	2012-12-17 20:27:56.000000000 +0200
++++ pango-1.32.5/pango/modules.c	2013-01-09 08:31:16.336512052 +0200
+@@ -555,11 +555,11 @@
+       files = g_new (char *, 3);
+
+       files[0] = g_build_filename (pango_get_sysconf_subdirectory (),
+-                                   "pango.modules",
++                                   MLPREFIX "pango.modules",
+                                    NULL);
+       files[1] = g_build_filename (pango_get_lib_subdirectory (),
+                                    MODULE_VERSION,
+-                                   "modules.cache",
++                                   MLPREFIX "modules.cache",
+                                    NULL);
+       files[2] = NULL;
+     }
+@@ -674,7 +674,8 @@
+       if (!no_module_warning)
+	{
+	  gchar *filename = g_build_filename (pango_get_sysconf_subdirectory (),
+-					      "pango.modules",
++/* For multilib case, keep multiple config file for different libs */
++					      MLPREFIX "pango.modules",
+					      NULL);
+	  g_critical ("No modules found:\n"
+		      "No builtin or dynamically loaded modules were found.\n"
+diff -Nurd pango-1.32.5/pango/modules.c.rej pango-1.32.5/pango/modules.c.rej
+--- pango-1.32.5/pango/modules.c.rej	1970-01-01 02:00:00.000000000 +0200
++++ pango-1.32.5/pango/modules.c.rej	2013-01-09 08:27:40.328516792 +0200
+@@ -0,0 +1,12 @@
++--- pango/modules.c	2010-09-22 03:37:01.000000000 +0800
+++++ pango/modules.c	2012-05-08 21:21:02.000000000 +0800
++@@ -529,7 +529,8 @@
++
++   if (!file_str)
++     file_str = g_build_filename (pango_get_sysconf_subdirectory (),
++-				 "pango.modules",
+++/* For multilib case, keep multiple config file for different libs */
+++				 MLPREFIX "pango.modules",
++ 				 NULL);
++
++   files = pango_split_file_list (file_str);
+diff -Nurd pango-1.32.5/pango/querymodules.c pango-1.32.5/pango/querymodules.c
+--- pango-1.32.5/pango/querymodules.c	2012-08-28 15:27:18.000000000 +0300
++++ pango-1.32.5/pango/querymodules.c	2013-01-09 08:31:47.828511359 +0200
+@@ -304,7 +304,7 @@
+
+       cache_file = g_build_filename (pango_get_lib_subdirectory (),
+                                      MODULE_VERSION,
+-                                     "modules.cache",
++                                     MLPREFIX "modules.cache",
+                                      NULL);
+       err = NULL;
+       if (!g_file_set_contents (cache_file, contents->str, -1, &err))
diff --git a/meta/recipes-graphics/pango/pango/run-ptest b/meta/recipes-graphics/pango/pango/run-ptest
new file mode 100644
index 0000000..fa87a75
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango/run-ptest
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+gnome-desktop-testing-runner pango
diff --git a/meta/recipes-graphics/pango/pango_1.36.8.bb b/meta/recipes-graphics/pango/pango_1.36.8.bb
new file mode 100644
index 0000000..f4e4250
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango_1.36.8.bb
@@ -0,0 +1,10 @@
+require pango.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+SRC_URI += "file://run-ptest \
+            file://multilib-fix-clean.patch \
+"
+
+SRC_URI[archive.md5sum] = "217a9a753006275215fa9fa127760ece"
+SRC_URI[archive.sha256sum] = "18dbb51b8ae12bae0ab7a958e7cf3317c9acfc8a1e1103ec2f147164a0fc2d07"
