1. 06 8月, 2014 1 次提交
  2. 03 8月, 2014 1 次提交
    • 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
  3. 18 7月, 2014 5 次提交
  4. 22 6月, 2014 3 次提交
  5. 21 6月, 2014 1 次提交
  6. 23 1月, 2014 1 次提交
  7. 31 12月, 2013 1 次提交
  8. 28 10月, 2013 1 次提交
    • B
      Revert "Zero marks by GDEF for Tibetan" · 71b4c999
      Behdad Esfahbod 提交于
      This reverts commit d5bd0590.
      
      The reasoning behind that logic was flawed and made under
      a misunderstanding of the original problem, and caused
      regressions as reported by Jonathan Kew in thread titled
      "tibetan marks" in Oct 2013.  Apparently I have had fixed
      the original problem with this commit:
      
        7e08f125
      
      So, revert the faulty commit and everything seems to be in good
      shape.
      71b4c999
  9. 19 10月, 2013 2 次提交
  10. 16 10月, 2013 1 次提交
    • B
      [arabic] Make ZWJ prevent ligatures instead of facilitating it · c52ddab7
      Behdad Esfahbod 提交于
      Unicode 6.2.0 Section 16.2 / Figure 16.3 says:
      
      "For backward compatibility, between Arabic characters a ZWJ acts just
      like the sequence <ZWJ, ZWNJ, ZWJ>, preventing a ligature from forming
      instead of requesting the use of a ligature that would not normally be
      used. As a result, there is no plain text mechanism for requesting the
      use of a ligature in Arabic text."
      
      As such, we flip internal zwj to zwnj flags for GSUB matching, which
      means it will block ligation in all features, unless the font
      explicitly matches U+200D glyph.  This doesn't affect joining behavior.
      c52ddab7
  11. 05 8月, 2013 1 次提交
  12. 20 5月, 2013 1 次提交
  13. 05 4月, 2013 1 次提交
    • B
      [Arabic] Zero marks by GDEF, not Unicode category · f368ba4a
      Behdad Esfahbod 提交于
      Testing shows that this is closer to what Uniscribe does.
      
      Reported by Khaled Hosny:
      
      """
      commit 56800027
      ...
      This commit is causing a regression with Amiri, the string “هَٰذ” with
      Uniscribe and HarfBuzz before this commit, gives:
      
      	[uni0630.fina=3+965|uni0670.medi=0+600|uni064E=0@-256,0+0|uni0647.init=0+926]
      
      But now it gives:
      
      	[uni0630.fina=3+965|uni0670.medi=0+0|uni064E=0@-256,0+0|uni0647.init=0+926]
      
      i.e. uni0670.medi is zeroed though it has a base glyph GDEF class.
      """
      
      The test case is U+0647,U+064E,U+0670,U+0630 with Amiri.
      f368ba4a
  14. 15 2月, 2013 3 次提交
  15. 12 2月, 2013 1 次提交
    • B
      Adjust mark advance-width zeroing logic for Myanmar · 56800027
      Behdad Esfahbod 提交于
      Before, we were zeroing advance width of attached marks for
      non-Indic scripts, and not doing it for Indic.
      
      We have now three different behaviors, which seem to better
      reflect what Uniscribe is doing:
      
        - For Indic, no explicit zeroing happens whatsoever, which
          is the same as before,
      
        - For Myanmar, zero advance width of glyphs marked as marks
          *in GDEF*, and do that *before* applying GPOS.  This seems
          to be what the new Win8 Myanmar shaper does,
      
        - For everything else, zero advance width of glyphs that are
          from General_Category=Mn Unicode characters, and do so
          before applying GPOS.  This seems to be what Uniscribe does
          for Latin at least.
      
      With these changes, positioning of all tests matches for Myanmar,
      except for the glitch in Uniscribe not applying 'mark'.  See preivous
      commit.
      56800027
  16. 06 12月, 2012 1 次提交
  17. 15 11月, 2012 2 次提交
  18. 14 11月, 2012 3 次提交
    • B
      [Arabic] Fix post-context handling · 5669a6cf
      Behdad Esfahbod 提交于
      Ouch!
      5669a6cf
    • B
      Add buffer flags · 0c7df222
      Behdad Esfahbod 提交于
      New API:
      
      	hb_buffer_flags_t
      
      	HB_BUFFER_FLAGS_DEFAULT
      	HB_BUFFER_FLAG_BOT
      	HB_BUFFER_FLAG_EOT
      	HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
      
      	hb_buffer_set_flags()
      	hb_buffer_get_flags()
      
      We use the BOT flag to decide whether to insert dottedcircle if the
      first char in the buffer is a combining mark.
      
      The PRESERVE_DEFAULT_IGNORABLES flag prevents removal of characters like
      ZWNJ/ZWJ/...
      0c7df222
    • B
      [Indic] Decompose Sinhala split matras the way old HarfBuzz / Pango did · 0736915b
      Behdad Esfahbod 提交于
      Had to do some refactoring to make this happen...
      
      Under uniscribe bug compatibility mode, we still plit them
      Uniscrie-style, but Jonathan and I convinced ourselves that there is no
      harm doing this the Unicode way.  This change makes that happen, and
      unbreaks free Sinhala fonts.
      0736915b
  19. 09 11月, 2012 1 次提交
  20. 06 11月, 2012 1 次提交
    • B
      Adjust Mongolian shaping · 22a68583
      Behdad Esfahbod 提交于
      For U+1880..U+1886 Uniscribe thinks they are non-joining.
      For U+1887 Uniscribe thinks it's joining, but looks wrong to me.
      For now, match Uniscribe.
      22a68583
  21. 02 11月, 2012 1 次提交
  22. 30 10月, 2012 1 次提交
  23. 26 9月, 2012 1 次提交
  24. 06 9月, 2012 1 次提交
  25. 05 9月, 2012 2 次提交
  26. 30 8月, 2012 1 次提交
    • B
      Port Arabic fallback ligating to share code with GSUB · 2fcbbdb4
      Behdad Esfahbod 提交于
      This will eventually allow us to skip marks, as well as (fallback)
      attach marks to ligature components of fallback-shaped Arabic.
      That would be pretty cool.  I kludged GDEF props in, so mark-skipping
      works, but the produced ligature id/components will be cleared later
      by substitute_start() et al.
      
      Perhaps using a synthetic table for Arabic fallback shaping was a better
      idea.  The current approach has way too many layering violations...
      2fcbbdb4
  27. 29 8月, 2012 1 次提交