• B
    Make it easier to use HB_BUFFER_FLAG_BOT/EOT · 763e5466
    Behdad Esfahbod 提交于
    Previously, we expected users to provide BOT/EOT flags when the
    text *segment* was at paragraph boundaries.  This meant that for
    clients that provide full paragraph to HarfBuzz (eg. Pango), they
    had code like this:
    
      hb_buffer_set_flags (hb_buffer,
                           (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
                           (item_offset + item_length == paragraph_length ?
                            HB_BUFFER_FLAG_EOT : 0));
    
      hb_buffer_add_utf8 (hb_buffer,
                          paragraph_text, paragraph_length,
                          item_offset, item_length);
    
    After this change such clients can simply say:
    
      hb_buffer_set_flags (hb_buffer,
                           HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
    
      hb_buffer_add_utf8 (hb_buffer,
                          paragraph_text, paragraph_length,
                          item_offset, item_length);
    
    Ie, HarfBuzz itself checks whether the segment is at the beginning/end
    of the paragraph.  Clients that only pass item-at-a-time to HarfBuzz
    continue not setting any flags whatsoever.
    
    Another way to put it is: if there's pre-context text in the buffer,
    HarfBuzz ignores the BOT flag.  If there's post-context, it ignores
    EOT flag.
    763e5466
hb-ot-shape-complex-arabic.cc 11.9 KB