- Timestamp:
- Dec 24, 2007, 10:14:09 AM (17 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 9866c3a
- Parents:
- 762512d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
text.c
r28ee32b rdd24b6a 51 51 { 52 52 char *ptr_s, *ptr_e, *ptr_c, *tmpbuff, *last; 53 int col, cnt ;53 int col, cnt, padding; 54 54 55 55 tmpbuff=owl_malloc(strlen(in)+20); … … 73 73 col = 0; 74 74 cnt = 0; 75 padding = 0; 75 76 ptr_c = ptr_s; 76 77 while(col < bcol && ptr_c < ptr_e) { 77 78 gunichar c = g_utf8_get_char(ptr_c); 78 if (g_unichar_iswide(c)) { 79 if (col + 2 > bcol) break; 80 else col += 2; 79 if (col + wcwidth(c) > bcol) break; 80 col += wcwidth(c); 81 ptr_c = g_utf8_next_char(ptr_c); 82 if (col >= acol) { 83 if (cnt == 0) { 84 ptr_s = ptr_c; 85 padding = col - acol; 86 } 87 ++cnt; 81 88 } 82 else if (g_unichar_type(c) == G_UNICODE_NON_SPACING_MARK) ; /*do nothing*/ 83 /* We may need more special cases here... unicode spacing is hard. */ 84 else { 85 if (col + 1 > bcol) break; 86 else ++col; 89 } 90 if (cnt) { 91 while(padding-- > 0) { 92 strcat(tmpbuff, " "); 87 93 } 88 ptr_c = g_utf8_next_char(ptr_c); 89 if (col >= acol) ++cnt; 90 if (col <= acol) ptr_s = ptr_c; 91 } 92 strncat(tmpbuff, ptr_s, ptr_c - ptr_s - 1); 94 strncat(tmpbuff, ptr_s, ptr_c - ptr_s - 1); 95 } 93 96 strcat(tmpbuff, "\n"); 94 97 ptr_s = ptr_e + 1;
Note: See TracChangeset
for help on using the changeset viewer.