1. 18 9月, 2015 1 次提交
    • S
      Introduce unit tests for FontCollection::itemize. · 1c2bd209
      Seigo Nonaka 提交于
      Introduced tests depend on installed font list in running device.
      I verified these test passed  on Nexus 5(hammerhead), Nexus 6(shamu)
      and Nexus 9(volantis).
      
      Bug: 11256006
      Bug: 17759267
      Change-Id: I6f806370e17f6c6d3dad8df0cb70bb475a827873
      1c2bd209
  2. 29 8月, 2015 1 次提交
    • S
      Update word breaker to be aware tone mark and variation selector. · 4e3adc6f
      Seigo Nonaka 提交于
      This CL does:
      1. Move the getNextWordBreak/getPrevWordBreak function to a separate source file.
      2. Adding "ForCache" suffix for function name for making clear these function is
         for layout cache.
      3. Introduce unit tests for them.
      
      Bug: 11256006
      Change-Id: I4138751a4570915f1a0d6c8921f89700f8ec7f35
      4e3adc6f
  3. 20 8月, 2015 1 次提交
    • R
      Add basic unit tests for Minikin · d8dd94b8
      Raph Levien 提交于
      Initial unit tests for Minikin functionality. Also fixes an incorrect
      Hangul case (uncovered in testing), and improves handling of broken
      UTF-16.
      
      Change-Id: I69b441d8e3b19ed06abcc56f13271abadf3d1010
      d8dd94b8
  4. 16 4月, 2015 1 次提交
  5. 31 3月, 2015 3 次提交
  6. 27 3月, 2015 1 次提交
    • R
      Add LineBreaker to Minikin · 01f52661
      Raph Levien 提交于
      This patch adds a LineBreaker class to Minikin, which will be used for
      computing line breaks in StaticLayout. The version in this patch
      contains basically the same functionality that existed before, but
      hopefully better performance and an interface that's suitable for more
      sophisticated paragraph layout.
      
      Note that this version contains a high quality strategy, which mostly
      works but doesn't respect varying line width.
      
      Change-Id: I02485d58b1e52856296a72cdd4efd963bc572933
      01f52661
  7. 05 1月, 2015 1 次提交
  8. 12 11月, 2014 1 次提交
  9. 30 7月, 2014 1 次提交
  10. 11 7月, 2014 1 次提交
  11. 20 6月, 2014 1 次提交
    • R
      Implement grapheme cluster breaking · 3d28a3fc
      Raph Levien 提交于
      This patch includes an implementation of grapheme cluster breaking,
      which is especially useful for repositioning the cursor for left and
      right arrow key presses. The implementation is closely based on Unicode
      TR29, and uses the ICU grapheme cluster break property, but is tailored
      to more closely match the existing implementation and expected behavior.
      
      Part of a fix for b/15653110 Improve behavior of arrow keys in EditText
      
      Change-Id: I8eb742f77039c9ab7b2838285018cf8a8fc88343
      3d28a3fc
  12. 27 5月, 2014 2 次提交
    • R
      Caching for layouts and harfbuzz faces · 4d4e6bc8
      Raph Levien 提交于
      This patch adds caching for both layouts and for HarfBuzz face objects.
      The granularity of the cache for layouts is words, so it splits the
      input string at word boundaries (using a heuristic). There are is also
      some refactoring to reduce the amount of allocation and copying, and
      movement towards properly supporting contexts.
      
      The size of the caches is a fixed number of entries; thus, it is
      possible to consume a large amount of memory by filling the cache with
      lots of large strings. This should be refined towards a scheme that
      bounds the total memory used by the cache.
      
      This patch fixes bug 15237293 "Regression: Measure performance is
      significantly slower with minikin".
      
      Change-Id: Ie8176857e2d78656ce5479a7c04969819ef2718d
      4d4e6bc8
    • R
      Do BiDi algorithm for text layout · 86fa46c5
      Raph Levien 提交于
      This is a fix for bug 15130102 "Language name for Hebrew displayed the
      wrong way around on keyboard".
      
      This patch extends the previous BiDi support (when the direction for the
      entire string was given by the caller) to run the BiDi algorithm
      (provided by ICU) over the string to break it into BiDi runs. Thus, it
      handles mixed LTR and RTL strings in a single layout, and also respects
      heuristics for inferring the paragraph direction from the string.
      
      Change-Id: Ia4b869de3c139c5a7d16b8ce7766870b98a815ea
      (cherry picked from commit 4b3a9411)
      86fa46c5
  13. 23 5月, 2014 1 次提交
    • R
      Caching for layouts and harfbuzz faces · cf6d68c3
      Raph Levien 提交于
      This patch adds caching for both layouts and for HarfBuzz face objects.
      The granularity of the cache for layouts is words, so it splits the
      input string at word boundaries (using a heuristic). There are is also
      some refactoring to reduce the amount of allocation and copying, and
      movement towards properly supporting contexts.
      
      The size of the caches is a fixed number of entries; thus, it is
      possible to consume a large amount of memory by filling the cache with
      lots of large strings. This should be refined towards a scheme that
      bounds the total memory used by the cache.
      
      Change-Id: Ie8176857e2d78656ce5479a7c04969819ef2718d
      cf6d68c3
  14. 20 5月, 2014 1 次提交
    • R
      Do BiDi algorithm for text layout · 4b3a9411
      Raph Levien 提交于
      This patch extends the previous BiDi support (when the direction for the
      entire string was given by the caller) to run the BiDi algorithm
      (provided by ICU) over the string to break it into BiDi runs. Thus, it
      handles mixed LTR and RTL strings in a single layout, and also respects
      heuristics for inferring the paragraph direction from the string.
      
      Change-Id: Ia4b869de3c139c5a7d16b8ce7766870b98a815ea
      4b3a9411
  15. 13 5月, 2014 2 次提交
    • R
      Better refcounting and locking · b80c1f19
      Raph Levien 提交于
      All major externally accessible objects (especially FontFamily and
      FontCollection) are now reference counted. In addition, there is a
      global lock intended to make operations thread-safe.
      
      WIP notice: in this version of the patch, not all external API entry
      points are protected by the lock. That should be fixed.
      
      Change-Id: I14106196e99eb101e8bf1bcb4b81359759d2086c
      b80c1f19
    • R
      A basket of features: itemization, bounds, refcount · ecc2d34a
      Raph Levien 提交于
      This patch improves script run itemization and also exposes metrics
      and bounds for layouts. In addition, there is a fair amount of internal
      cleanup, including ref counting, and making the MinikinFont abstraction
      strong enough to support both FreeType and Skia implementations. There
      is also a sample implementation using Skia, in the sample directory.
      
      As part of its functionality, his patch measures the bounds of the
      layout and gives access through Layout::GetBounds().  The corresponding
      method is not implemented in the FreeType-only implementation of
      MinikinFont, so that will probably have to be fixed.
      
      Change-Id: Ib1a3fe9d7c90519ac651fb4aa957848e4bb758ec
      ecc2d34a
  16. 28 6月, 2013 1 次提交
  17. 15 6月, 2013 1 次提交
    • R
      Introduce MinikinFont abstraction · bcc3dc5a
      Raph Levien 提交于
      This commit removes the direct dependency on FreeType and replaces it
      with a MinikinFont abstraction, which is designed to support both
      FreeType and Skia fonts (and possibly others in the future).
      
      Also adds a "total advance" to the Layout, with an API for retrieving
      it.
      
      Change-Id: If20f92db9a43fd15b0fe9794b761ba00fb21338c
      bcc3dc5a
  18. 26 4月, 2013 1 次提交
    • R
      Initial commit of Minikin library · 9cc9bbe1
      Raph Levien 提交于
      This is the initial draft of Minikin, a library intended to perform text
      layout functions. This version does basic weight selection and font runs
      for scripts, and also has a simple renderer for drawing into bitmaps,
      but is lacking measurement, line breaking, and a number of other
      important features. It also lacks caching and other performance
      refinements.
      
      Change-Id: I789a2e47d11d71202dc84b4751b51a5e2cd9c451
      9cc9bbe1