--- pango-1.8.2.orig/pango/pango-context.c	2005-06-15 07:54:01.000000000 +1200
+++ pango-1.8.2/pango/pango-context.c	2005-08-07 21:45:46.137016112 +1200
@@ -479,12 +479,14 @@
 static gboolean
 shaper_font_cache_get (ShaperFontCache   *cache,
 		       gunichar           wc,
+                       PangoLanguage     *language,
+                       PangoScript        script,
 		       PangoEngineShape **shape_engine,
 		       PangoFont        **font)
 {
   ShaperFontElement *element;
   
-  element = g_hash_table_lookup (cache->hash, GUINT_TO_POINTER (wc));
+  element = g_hash_table_lookup (cache->hash, GUINT_TO_POINTER (wc+(guint)language+(guint)script*0x10000));
   if (element)
     {
       *shape_engine = element->shape_engine;
@@ -499,6 +501,8 @@
 static void
 shaper_font_cache_insert (ShaperFontCache   *cache,
 			  gunichar           wc,
+                          PangoLanguage     *language,
+                          PangoScript        script,
 			  PangoEngineShape  *shape_engine,
 			  PangoFont         *font)
 {
@@ -506,7 +510,7 @@
   element->shape_engine = shape_engine;
   element->font = font;
   
-  g_hash_table_insert (cache->hash, GUINT_TO_POINTER (wc), element);
+  g_hash_table_insert (cache->hash, GUINT_TO_POINTER (wc+(guint)language+(guint)script*0x10000), element);
 }
 
 /**********************************************************************/
@@ -918,7 +922,7 @@
 
   /* We'd need a separate cache when fallback is disabled, but since lookup
    * with fallback disabled is faster anyways, we just skip caching */
-  if (state->enable_fallback && shaper_font_cache_get (state->cache, wc, shape_engine, font))
+  if (state->enable_fallback && shaper_font_cache_get (state->cache, wc, state->derived_lang, state->script, shape_engine, font))
     return *shape_engine != NULL;
 
   if (!state->exact_engines && !state->fallback_engines)
@@ -943,7 +947,7 @@
 
       /* skip caching if fallback disabled (see above) */
       if (state->enable_fallback)
-        shaper_font_cache_insert (state->cache, wc, *shape_engine, *font);
+        shaper_font_cache_insert (state->cache, wc, state->derived_lang, state->script, *shape_engine, *font);
 
       return TRUE;
     }
@@ -959,8 +963,8 @@
 
   /* skip caching if fallback disabled (see above) */
   if (state->enable_fallback)
-    shaper_font_cache_insert (state->cache, wc, *shape_engine, *font);
-      
+    shaper_font_cache_insert (state->cache, wc, state->derived_lang, state->script, *shape_engine, *font);
+
   return *shape_engine != NULL;
 }
 
