In class HyphenationTree, method public Hyphenation hyphenate(char[] w, int offset, int len, int remainCharCount, int pushCharCount) the value for pushCharCount, i.e., the minimum number of characters after the last hyphen, is not used properly. The test for the hyphenation points is if (((il[i + 1] & 1) == 1) && i >= remainCharCount && i < (len - pushCharCount)) {...} but it should be if (((il[i + 1] & 1) == 1) && i >= remainCharCount && i <= (len - pushCharCount)) {...} ^^^^ This bug makes the program assume the right limit is 1 unit higher than specified, preventing hyphens to appear where they can. I developed a Portuguese hyphenation table and this bug did not allow it to work correctly. I had to write <hyphen-min before="2" after="1"/> instead of <hyphen-min before="2" after="2"/> to get around the bug. I will gladly submit the table but it will only work properly if this bug is fixed. (Well, the other tables are not working properly too.) To observe the error, simply try to hyphenate "banana". In English you get "ba-nana" instead of the correct (?) "ba-nan-a" (jeez, hyphenation in English is a complete madness...) even with after="1". In Spanish (and in the original Portuguese, from a obscure origin) you get the same "ba-nana" instead of the correct (!) "ba-na-na", unless you deviously use after="1".
batch transition pre-FOP1.0 resolved+fixed bugs to closed+fixed