diff options
-rw-r--r-- | pango/break.c | 66 | ||||
-rw-r--r-- | pango/pango-context.c | 9 | ||||
-rw-r--r-- | pango/pango-engine-private.h | 2 | ||||
-rw-r--r-- | pango/pango-layout.c | 11 |
4 files changed, 19 insertions, 69 deletions
diff --git a/pango/break.c b/pango/break.c index 11f4079e..11a1e34a 100644 --- a/pango/break.c +++ b/pango/break.c @@ -22,7 +22,6 @@ #include "config.h" #include "pango-break.h" -#include "pango-engine-private.h" #include "pango-script-private.h" #include "pango-emoji-private.h" #include "pango-break-table.h" @@ -1574,23 +1573,25 @@ pango_default_break (const gchar *text, } static gboolean +break_script (const char *item_text, + unsigned int item_length, + const PangoAnalysis *analysis, + PangoLogAttr *attrs, + int attrs_len); + +static gboolean tailor_break (const gchar *text, gint length, PangoAnalysis *analysis, PangoLogAttr *attrs, int attrs_len) { - if (analysis->lang_engine && PANGO_ENGINE_LANG_GET_CLASS (analysis->lang_engine)->script_break) - { - if (length < 0) - length = strlen (text); - else if (text == NULL) - text = ""; + if (length < 0) + length = strlen (text); + else if (text == NULL) + text = ""; - PANGO_ENGINE_LANG_GET_CLASS (analysis->lang_engine)->script_break (analysis->lang_engine, text, length, analysis, attrs, attrs_len); - return TRUE; - } - return FALSE; + return break_script (text, length, analysis, attrs, attrs_len); } /** @@ -1787,7 +1788,6 @@ pango_get_log_attrs (const char *text, g_return_if_fail (log_attrs != NULL); analysis.level = level; - analysis.lang_engine = _pango_get_language_engine (); pango_default_break (text, length, &analysis, log_attrs, attrs_len); @@ -1817,7 +1817,7 @@ pango_get_log_attrs (const char *text, #include "break-indic.c" #include "break-thai.c" -static void +static gboolean break_script (const char *item_text, unsigned int item_length, const PangoAnalysis *analysis, @@ -1846,43 +1846,9 @@ break_script (const char *item_text, case PANGO_SCRIPT_THAI: break_thai (item_text, item_length, analysis, attrs, attrs_len); break; + default: + return FALSE; } -} - - -/* Wrap language breaker in PangoEngineLang to pass it through old API, - * from times when there were modules and engines. */ -typedef PangoEngineLang PangoLanguageEngine; -typedef PangoEngineLangClass PangoLanguageEngineClass; -static GType pango_language_engine_get_type (void) G_GNUC_CONST; -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -G_DEFINE_TYPE (PangoLanguageEngine, pango_language_engine, PANGO_TYPE_ENGINE_LANG); -G_GNUC_END_IGNORE_DEPRECATIONS -static void -_pango_language_engine_break (PangoEngineLang *engine G_GNUC_UNUSED, - const char *item_text, - int item_length, - PangoAnalysis *analysis, - PangoLogAttr *attrs, - int attrs_len) -{ - break_script (item_text, item_length, analysis, attrs, attrs_len); -} -static void -pango_language_engine_class_init (PangoEngineLangClass *class) -{ - class->script_break = _pango_language_engine_break; -} -static void -pango_language_engine_init (PangoEngineLang *object) -{ -} -PangoEngineLang * -_pango_get_language_engine (void) -{ - static PangoEngineLang *engine; - if (g_once_init_enter (&engine)) - g_once_init_leave (&engine, g_object_new (pango_language_engine_get_type(), NULL)); - return engine; + return TRUE; } diff --git a/pango/pango-context.c b/pango/pango-context.c index 83fdc9a6..b8e78c22 100644 --- a/pango/pango-context.c +++ b/pango/pango-context.c @@ -758,7 +758,6 @@ struct _ItemizeState PangoEmojiIter emoji_iter; PangoLanguage *derived_lang; - PangoEngineLang *lang_engine; PangoFontset *current_fonts; FontCache *cache; @@ -1061,7 +1060,6 @@ itemize_state_init (ItemizeState *state, state->gravity_hint = state->context->gravity_hint; state->resolved_gravity = PANGO_GRAVITY_AUTO; state->derived_lang = NULL; - state->lang_engine = NULL; state->current_fonts = NULL; state->cache = NULL; state->base_font = NULL; @@ -1165,7 +1163,6 @@ itemize_state_add_character (ItemizeState *state, } if (!force_break && - state->item->analysis.lang_engine == state->lang_engine && state->item->analysis.shape_engine == shape_engine && state->item->analysis.font == font) { @@ -1181,7 +1178,6 @@ itemize_state_add_character (ItemizeState *state, state->item->length = 0; state->item->num_chars = 1; state->item->analysis.shape_engine = shape_engine; - state->item->analysis.lang_engine = state->lang_engine; if (font) g_object_ref (font); @@ -1404,11 +1400,6 @@ itemize_state_update_for_new_run (ItemizeState *state) state->changed |= DERIVED_LANG_CHANGED; } - if ((state->changed & DERIVED_LANG_CHANGED) || !state->lang_engine) - { - state->lang_engine = _pango_get_language_engine (); - } - if (state->changed & (EMOJI_CHANGED)) { state->changed |= FONT_CHANGED; diff --git a/pango/pango-engine-private.h b/pango/pango-engine-private.h index de54ee09..cd0b6103 100644 --- a/pango/pango-engine-private.h +++ b/pango/pango-engine-private.h @@ -42,8 +42,6 @@ PangoCoverageLevel _pango_engine_shape_covers (PangoEngineShape *engine, PangoEngineShape *_pango_get_fallback_shaper (void) /* XXX got to go when we switch to harfbuzz-only. */; -PangoEngineLang *_pango_get_language_engine (void); - G_END_DECLS #endif /* __PANGO_ENGINE_PRIVATE_H__ */ diff --git a/pango/pango-layout.c b/pango/pango-layout.c index b6e6ac89..84f96a94 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -3949,13 +3949,8 @@ get_items_log_attrs (const char *text, PangoItem *next_item = items->next->data; /* FIXME: Handle language tags */ - if (next_item->analysis.lang_engine != tmp_item.analysis.lang_engine) - break; - else - { - tmp_item.length += next_item->length; - tmp_item.num_chars += next_item->num_chars; - } + tmp_item.length += next_item->length; + tmp_item.num_chars += next_item->num_chars; items = items->next; } @@ -3968,7 +3963,7 @@ get_items_log_attrs (const char *text, } /* XXX This is wrong. we should call pango_default_break on the entire - * layout text and then tailor_break on each lang_engine change, like + * layout text and then tailor_break on each language change, like * pango_get_log_attrs does. */ pango_break (text + index, tmp_item.length, &tmp_item.analysis, |