Index: pango-1.42.4/pango/break.c =================================================================== --- pango-1.42.4.orig/pango/break.c +++ pango-1.42.4/pango/break.c @@ -409,15 +409,6 @@ pango_default_break (const gchar *text GB_type = GB_ControlCRLF; break; - case G_UNICODE_UNASSIGNED: - /* Unassigned default ignorables */ - if ((wc >= 0xFFF0 && wc <= 0xFFF8) || - (wc >= 0xE0000 && wc <= 0xE0FFF)) - { - GB_type = GB_ControlCRLF; - break; - } - case G_UNICODE_OTHER_LETTER: if (makes_hangul_syllable) GB_type = GB_InHangulSyllable; @@ -446,67 +437,103 @@ pango_default_break (const gchar *text GB_type = GB_Extend; /* Grapheme_Extend */ break; + case G_UNICODE_UNASSIGNED: + /* Unassigned default ignorables */ + if ((wc >= 0xFFF0 && wc <= 0xFFF8) || + (wc >= 0xE0000 && wc <= 0xE0FFF)) + { + GB_type = GB_ControlCRLF; + break; + } + + /* In Unicode 9.0, some emoji characters are unassigned. + * To support Unicode emoji 13.0, check the emoji characters here. + */ case G_UNICODE_OTHER_SYMBOL: if (G_UNLIKELY(wc == 0x261D || - wc == 0x26F9 || - (wc >= 0x270A && wc <= 0x270D) || - wc == 0x1F385 || - (wc >= 0x1F3C2 && wc <= 0x1F3C4) || - wc == 0x1F3C7 || - (wc >= 0x1F3CA && wc <= 0x1F3CC) || - (wc >= 0x1F442 && wc <= 0x1F443) || - (wc >= 0x1F446 && wc <= 0x1F450) || - wc == 0x1F46E || - (wc >= 0x1F470 && wc <= 0x1F478) || - wc == 0x1F47C || - (wc >= 0x1F481 && wc <= 0x1F483) || - (wc >= 0x1F485 && wc <= 0x1F487) || - wc == 0x1F4AA || - (wc >= 0x1F574 && wc <= 0x1F575) || - wc == 0x1F57A || - wc == 0x1F590 || - (wc >= 0x1F595 && wc <= 0x1F596) || - (wc >= 0x1F645 && wc <= 0x1F647) || - (wc >= 0x1F64B && wc <= 0x1F64F) || - wc == 0x1F6A3 || - (wc >= 0x1F6B4 && wc <= 0x1F6B6) || - wc == 0x1F6C0 || - wc == 0x1F6CC || - (wc >= 0x1F918 && wc <= 0x1F91C) || - (wc >= 0x1F91E && wc <= 0x1F91F) || - wc == 0x1F926 || - (wc >= 0x1F930 && wc <= 0x1F939) || - (wc >= 0x1F93D && wc <= 0x1F93E) || - (wc >= 0x1F9D1 && wc <= 0x1F9DD))) + wc == 0x26F9 || + (wc >= 0x270A && wc <= 0x270D) || + wc == 0x1F385 || + (wc >= 0x1F3C2 && wc <= 0x1F3C4) || + wc == 0x1F3C7 || + (wc >= 0x1F3CA && wc <= 0x1F3CC) || + (wc >= 0x1F442 && wc <= 0x1F443) || + (wc >= 0x1F446 && wc <= 0x1F450) || + (wc >= 0x1F46A && wc <= 0x1F478) || + wc == 0x1F47C || + (wc >= 0x1F481 && wc <= 0x1F483) || + (wc >= 0x1F485 && wc <= 0x1F487) || + wc == 0x1F48F || + wc == 0x1F491 || + wc == 0x1F4AA || + (wc >= 0x1F574 && wc <= 0x1F575) || + wc == 0x1F57A || + wc == 0x1F590 || + (wc >= 0x1F595 && wc <= 0x1F596) || + (wc >= 0x1F645 && wc <= 0x1F647) || + (wc >= 0x1F64B && wc <= 0x1F64F) || + wc == 0x1F6A3 || + (wc >= 0x1F6B4 && wc <= 0x1F6B6) || + wc == 0x1F6C0 || + wc == 0x1F6CC || + wc == 0x1F90C || + wc == 0x1F90F || + (wc >= 0x1F918 && wc <= 0x1F91C) || + (wc >= 0x1F91E && wc <= 0x1F91F) || + wc == 0x1F926 || + (wc >= 0x1F930 && wc <= 0x1F939) || + (wc >= 0x1F93C && wc <= 0x1F93E) || + wc == 0x1F977 || + (wc >= 0x1F9B5 && wc <= 0x1F9B6) || + (wc >= 0x1F9B8 && wc <= 0x1F9B9) || + wc == 0x1F9BB || + (wc >= 0x1F9CD && wc <= 0x1F9CF) || + (wc >= 0x1F9D2 && wc <= 0x1F9DD))) { GB_type = GB_E_Base; break; } - if (G_UNLIKELY(wc == 0x2640 || - wc == 0x2642 || - (wc >= 0x2695 && wc <= 0x2696) || - wc == 0x2708 || - wc == 0x2764 || - wc == 0x1F308 || - wc == 0x1F33E || - wc == 0x1F373 || - wc == 0x1F393 || - wc == 0x1F3A4 || - wc == 0x1F3A8 || - wc == 0x1F3EB || - wc == 0x1F3ED || - wc == 0x1F48B || - (wc >= 0x1F4BB && wc <= 0x1F4BC) || - wc == 0x1F527 || - wc == 0x1F52C || - wc == 0x1F5E8 || - wc == 0x1F680 || - wc == 0x1F692)) + if (G_UNLIKELY(wc == 0x2620 || + wc == 0x2640 || + wc == 0x2642 || + (wc >= 0x2695 && wc <= 0x2696) || + wc == 0x26A7 || + wc == 0x2708 || + wc == 0x2744 || + wc == 0x2764 || + wc == 0x2B1B || + wc == 0x1F308 || + wc == 0x1F32B || + wc == 0x1F33E || + wc == 0x1F373 || + wc == 0x1F37C || + wc == 0x1F384 || + wc == 0x1F393 || + wc == 0x1F3A4 || + wc == 0x1F3A8 || + wc == 0x1F3EB || + wc == 0x1F3ED || + wc == 0x1F48B || + wc == 0x1F4A8 || + wc == 0x1F4AB || + (wc >= 0x1F4BB && wc <= 0x1F4BC) || + wc == 0x1F525 || + wc == 0x1F527 || + wc == 0x1F52C || + wc == 0x1F5E8 || + wc == 0x1F680 || + wc == 0x1F692 || + (wc >= 0x1F9AF && wc <= 0x1F9B3) || + wc == 0x1F9BA || + (wc >= 0x1F9BC && wc <= 0x1F9BD) || + wc == 0x1FA79)) { GB_type = GB_Glue_After_Zwj; break; } - if (G_UNLIKELY(wc >= 0x1F466 && wc <= 0x1F469)) + if (G_UNLIKELY((wc >= 0x1F466 && wc <= 0x1F469) || + wc == 0x1F91D || + wc == 0x1F9D1)) { GB_type = GB_E_Base_GAZ; break;