Comment 12 for bug 986008

Revision history for this message
Sebastien Bacher (seb128) wrote :

Thanks, that's a bug in the code that helps wrapping labels at the right position for the icon view

nautilus-icon-canvas-item.c has this code

"
#define ZERO_WIDTH_SPACE "\xE2\x80\x8B"

  for (p = text; *p != '\0'; p++) {
   str = g_string_append_c (str, *p);

   if (*p == '_' || *p == '-' || (*p == '.' && !g_ascii_isdigit(*(p+1)))) {
    /* Ensure that we allow to break after '_' or '.' characters,
     * if they are not followed by a number */
    str = g_string_append (str, ZERO_WIDTH_SPACE);
   }
  }"

it seems like the "zero width space" is what is creating the issue, I'm unsure why that's happening though.

One bug I can see is that the code is iterating over char types, and an utf8 non ascii glyph might not fit in a char, so it could insert value in the middle of an utf8 sequence and corrupt it, but that doesn't seem to be what is happening there since the "weird" glyphs are added after "_" and "."