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

Reply via email to