1. 17 12月, 2015 1 次提交
  2. 08 12月, 2015 1 次提交
    • B
      Remove final pause from Arabic shaper · 98460779
      Behdad Esfahbod 提交于
      Back in the old days, we used to apply 'calt' and 'cswh' in Arabic shaper,
      with a pause in between.  Then we disabled the 'cswh' because Microsoft
      disabled it, but forgot to remove the unnecessary pause.  Do that now.
      
      This has the benefit that it fixes shaping with monbaiti from Windows 10.
      In that version of that font, the lookups from 'calt' are duplicated in
      'rclt', and Mongolian was changed to go through Universal Shaping Engine.
      We still use the Arabic shaper for Mongolian.  With a pause after 'calt',
      we were applying the duplicate lookups from 'calt' and 'rclt' twice.  It
      happened to be the case that these lookups were NOT idempotent.  So we
      were getting wrong shaping.  See thread "Windows 10 monbaiti.ttf upgrade
      (5.01 -> 5.51) caused loss of diacritical marks when shaped with harfbuz"
      on the mailing list.  This fixes that.
      98460779
  3. 06 12月, 2015 1 次提交
    • J
      Make apply_stch() give a more precise fit · a7ffe353
      jfkthame 提交于
      This aims to make Syriac Abbr Mark sizing more accurate when repeating segments are used, by adding an extra repeat and tightening up the spacing slightly rather than leaving a shortfall corresponding to a partial repeat-width.
      a7ffe353
  4. 16 11月, 2015 1 次提交
  5. 07 11月, 2015 2 次提交
  6. 06 11月, 2015 2 次提交
  7. 22 7月, 2015 1 次提交
  8. 21 7月, 2015 1 次提交
  9. 06 8月, 2014 1 次提交
  10. 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
  11. 18 7月, 2014 5 次提交
  12. 22 6月, 2014 3 次提交
  13. 21 6月, 2014 1 次提交
  14. 23 1月, 2014 1 次提交
  15. 31 12月, 2013 1 次提交
  16. 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
  17. 19 10月, 2013 2 次提交
  18. 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
  19. 05 8月, 2013 1 次提交
  20. 20 5月, 2013 1 次提交
  21. 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
  22. 15 2月, 2013 3 次提交
  23. 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
  24. 06 12月, 2012 1 次提交
  25. 15 11月, 2012 2 次提交
  26. 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