diff --git a/pango/pango-language.c b/pango/pango-language.c index 725559fa96a9eaa1009ff8d4a644c019cca1cffe..c6ed91c61ddc75e8926a7a90ebc40e11d49505e7 100644 --- a/pango/pango-language.c +++ b/pango/pango-language.c @@ -28,6 +28,7 @@ #include "pango-language.h" #include "pango-impl-utils.h" +#include "pango-utils-internal.h" #ifdef HAVE_CORE_TEXT #include @@ -714,7 +715,8 @@ pango_language_includes_script (PangoLanguage *language, /* copied from the one in pango-script.c */ #define REAL_SCRIPT(script) \ - ((script) > PANGO_SCRIPT_INHERITED && (script) != PANGO_SCRIPT_UNKNOWN) + (((script) > PANGO_SCRIPT_INHERITED && (script) != PANGO_SCRIPT_UNKNOWN) || \ + ( _pango_use_fixed_font () && script == PANGO_SCRIPT_COMMON)) if (!REAL_SCRIPT (script)) return TRUE; diff --git a/pango/pango-script.c b/pango/pango-script.c index 43be3fa0f8081c110e0395281484032d55d8a49d..ccf9ff6a5b2b273c876cd5dea054a952e8f28fd1 100644 --- a/pango/pango-script.c +++ b/pango/pango-script.c @@ -69,6 +69,9 @@ #include "pango-script.h" #include "pango-script-private.h" +#include "pango-attributes.h" +#include "pango-utils-internal.h" + /** * pango_script_for_unichar: * @ch: a Unicode character @@ -229,7 +232,8 @@ get_pair_index (gunichar ch) /* duplicated in pango-language.c */ #define REAL_SCRIPT(script) \ - ((script) > PANGO_SCRIPT_INHERITED && (script) != PANGO_SCRIPT_UNKNOWN) + (((script) > PANGO_SCRIPT_INHERITED && (script) != PANGO_SCRIPT_UNKNOWN) || \ + (_pango_use_fixed_font () && script == PANGO_SCRIPT_COMMON)) #define SAME_SCRIPT(script1, script2) \ (!REAL_SCRIPT (script1) || !REAL_SCRIPT (script2) || (script1) == (script2)) @@ -260,6 +264,9 @@ pango_script_iter_next (PangoScriptIter *iter) iter->script_code = PANGO_SCRIPT_COMMON; iter->script_start = iter->script_end; + if (_pango_use_fixed_font ()) + iter->script_code = PANGO_SCRIPT_UNKNOWN; + for (; iter->script_end < iter->text_end; iter->script_end = g_utf8_next_char (iter->script_end)) { gunichar ch = g_utf8_get_char (iter->script_end); diff --git a/pango/pango-utils-internal.h b/pango/pango-utils-internal.h index d6e55d7c2837f42f58812575b9b6219ab8a64adf..0649505e5bedc410108e4924e32af60556336def 100644 --- a/pango/pango-utils-internal.h +++ b/pango/pango-utils-internal.h @@ -43,6 +43,8 @@ gboolean _pango_color_parse_with_alpha (PangoColor *color, guint16 *alpha, const char *spec); +gboolean _pango_use_fixed_font (void); + G_END_DECLS diff --git a/pango/pango-utils.c b/pango/pango-utils.c index 088a60d66ef59d601b1df809a9e9c24da61271a9..67d66b0acc772505b06978b53d8b50a747b7f04e 100644 --- a/pango/pango-utils.c +++ b/pango/pango-utils.c @@ -1089,3 +1089,19 @@ _pango_shape_get_extents (gint n_chars, } } +gboolean _pango_use_fixed_font (void) +{ + static gint use_fixed_font = -1; + + if (-1 == use_fixed_font) + { + use_fixed_font = FALSE; + + const gchar * common_font = getenv ("PANGO_COMMON_FONT"); + + if (0 == g_strcmp0 ("fixed", common_font)) + use_fixed_font = TRUE; + } + + return use_fixed_font; +}