--- misc//hyphen-2.8.4/hyphen.c +++ misc/build/hyphen-2.8.4/hyphen.c @@ -734,13 +734,13 @@ int hnj_hyphen_rhmin(int utf8, const char *word, int word_size, char * hyphens, char *** rep, int ** pos, int ** cut, int rhmin) { - int i = 1; + int i = 0; int j; // ignore numbers for (j = word_size - 1; j > 0 && word[j] <= '9' && word[j] >= '0'; j--) i--; - for (j = word_size - 2; i < rhmin && j > 0; j--) { + for (j = word_size - 1; i < rhmin && j > 0; j--) { // check length of the non-standard part if (*rep && *pos && *cut && (*rep)[j]) { char * rh = strchr((*rep)[j], '='); @@ -753,7 +753,7 @@ } else { hyphens[j] = '0'; } - if (!utf8 || (word[j] & 0xc0) != 0xc0) i++; + if (!utf8 || (word[j] & 0xc0) == 0xc0 || (word[j] & 0x80) != 0x80) i++; } return 0; }