I'm investigating what would be necessary to implement hyphenation-keep. After some thought, I think this is one of those very mean properties that fire back from page-breaking back into line-breaking. IOW, when you detect a page/column break at a line which is hyphenated you'll basically have to track back and redo the line breaking, disabling that particular hyphenation possibility. You then have to redo the page breaking possibly having to backtrack again if another hyphenated line is again at the end of a column/page. Doesn't sound like a small change.
The cheap way, of course, is to add penalty values to discourage page breaks between hyphenated lines (when hyphenation-keep is activated) but that could lead to ugly layout. It's certainly better to disable certain hyphenation points based on feedback from page breaking but it obviously means starting to backtrack into line breaking. Maybe the "changing available IPD" problem also plays into this. As we've seen, it may be necessary to redo certain line breaks based on events in page breaking. Does anyone see a relatively simple way I have not yet seen? Or am I more or less on track? Another topic that we may have to adress at some point is the distinction of keeps on column level and keeps on page level. So far, we can only map the keeps on column level. I wonder how we would go about an implementation here. It seems to me that the page breaker would have to start being more clever. Anyway, the important thing for me right now is to have an idea how hyphenation-keep would have to be implemented so I can take an estimate and determine dependencies of tasks. Thanks for any ideas, Jeremias Maerki
