[HarfBuzz] Flags for start/end of text/line

Behdad Esfahbod behdad at behdad.org
Sat Nov 9 14:40:07 PST 2013


Hi Lóránt,

I discussed this with Jonathan Kew in detail.  There hasn't been much in terms
of code yet, but it's something I want to address soon.  Unfortunately I
cannot provide any accurate timeline right now.

Cheers,
behdad

On 13-10-24 12:10 PM, Lóránt Pintér wrote:
> Hi Behdad,
> 
> I’m not sure if this is that thread, but I seem to recall that you talked a
> while ago about adding support for better line ending shaping. I.e. when the
> last letter of a line is kerned with the next character, I’ll get the kerned
> width of the character, even though the kerning won’t be used on anything, and
> the line will slightly hang outside the line.
> 
> Are there any improvements regarding this?
> 
> -- 
> 
> *Lóránt Pintér*
> 
> Developer at Prezi <http://prezi.com>
> 
> On Saturday 27 October 2012 at 17:00, Lóránt Pintér wrote:
> 
>> I'm not sure I completely understand this feature. Would this help with
>> shaping around line-endings as well?
>>
>> -- 
>> Lóci
>>
>> On 2012.10.25., at 3:17, Behdad Esfahbod <behdad at behdad.org
>> <mailto:behdad at behdad.org>> wrote:
>>
>>> Hi,
>>>
>>> A while back I added support for dottedcircle insertion in HarfBuzz. That
>>> happens in two cases:
>>>
>>> - In Indic module, when a cluster is not wellformed. This seems to be
>>> functioning good enough.
>>>
>>> - At the beginning of text, when text starts with a combining mark.
>>>
>>> The latter caused the same bug in GNOME, Firefox, and Chromium: if a combining
>>> mark is not supported by the default font, it gets associated with a fallback
>>> font, and the mark is shaped in the fallback font in isolation. This would
>>> then cause a dottedcircle to be inserted because a mark starts the run text.
>>> To address this bug, I added "textual context" support, where the client can
>>> tell HarfBuzz what text precedes, and what follows, the text being shaped.
>>> This "fixed" the problem in GNOME after I changed Pango to pass that
>>> information to HarfBuzz.
>>>
>>> However, this concerns me now, because I imagine most users won't pass the
>>> textual context information in, and will hit the same bug. So I like to
>>> explore addressing it in a way that the simplest usecase won't be affected by
>>> the bug.
>>>
>>> At the same time, I started looking at adding AAT/morx support to HarfBuzz,
>>> and looks like morx has different modes for when text is paragraph/line
>>> start/end. OpenType has similar features, but only for optical alignment.
>>>
>>> So it made me wondering whether I should add a set of flags to hb_shape() to
>>> let user specify whether the text run is paragraph/line start/end. If we add
>>> that, the default (no flags) would mark the run being "in the middle", and
>>> dottedcircle won't be inserted. The flags also address the AAT/morx
>>> requirement. Whether we should automatically enable OpenType line start/end
>>> optical alignment is not very clear to me yet, but that would be a possibility.
>>>
>>> So, what do people think? Should I go ahead and do that? If yes, I need to
>>> think the logical/visual distinctions and implications. And, should I change
>>> the hb_shape() / hb_shape_full() API? Or add new parallel API, or what? I
>>> used to have placeholder for shaper-options in the API but removed it for
>>> simplicity. If I add now, it would be a small headache for all users, but
>>> will keep it open for use to add more binary flags in the future. In the
>>> interest of breaking users sooner than later, I thought I bring it up now.
>>>
>>> If we add that API, we can also add more flags, like "don't remove invisible
>>> characters", or "don't add dottedcircle", though the value of the latter is
>>> not quite clear to me. I definitely don't want to expose too much of the
>>> internal workings, so I'm not sure whether I want to expose "don't do fallback
>>> positioning", but I'm still undecided. Leaving it possible to add up to 32
>>> flags by one ABI change sounds compelling though.
>>>
>>> Cheers,
>>> behdad
>>> _______________________________________________
>>> HarfBuzz mailing list
>>> HarfBuzz at lists.freedesktop.org <mailto:HarfBuzz at lists.freedesktop.org>
>>> http://lists.freedesktop.org/mailman/listinfo/harfbuzz
> 

-- 
behdad
http://behdad.org/



More information about the HarfBuzz mailing list