On 14/06/2016 13:16, Kelvin Ma wrote: > The problem is, I have no idea where, in terms of x-coordinate, any of > these breakpoints are going to be until I shape them. So I will have to > shape the entire sentence.
You do have to shape the entire sentence, yes. But that's got nothing to do with where your breakpoints are. Shaping doesn't tell you anything about break points. That's why it's not Harfbuzz's job. Let's take your example again. How do you get from: > Take these five sentences which I need to break into a paragraph. The > shaper is always going to be involved in this. Did you only count two? to: > |Take |these |five |sen-|ten|-ces |which |I |need |to |break |into |a > |para-|graph. |The |sha-|per |is |al-|ways |go-|ing |to |be > |in-|vol-|ved |in |this. |Did |you |on-|ly |count |two?| Shaping won't give you the hyphenation points. That's a matter of language analysis. So you have to do line breaking at the text layer; this is *why* Harfbuzz doesn't involve itself in line breaking. > You are right. But I hope I explained why the shaping information has to > come before the textual-breakpoint information, because without shaping, > you don’t know *where* the breakpoints lie Even with shaping, you don't know where the breakpoints lie. Shaping and breakpoints are completely orthogonal. And line breaking *will* change your shaping - think about what happens when you break an RTL Hebrew sentence inside a majority LTR text - you need to swap around the two ends of the sentence. The safe-to-break API is just an optimization; it says, if you break at this point, you won't have to reshape. But it doesn't tell you anything about where you *should* or *shouldn't* break - that depends entirely on your justification strategy. Simon _______________________________________________ HarfBuzz mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/harfbuzz
