1. 27 5月, 2014 5 次提交
    • R
      am 4d4e6bc8: Caching for layouts and harfbuzz faces · 8eef0a2e
      Raph Levien 提交于
      * commit '4d4e6bc8':
        Caching for layouts and harfbuzz faces
      8eef0a2e
    • R
      am d973b392: (-s ours) Merge "Do BiDi algorithm for text layout" into lmp-preview-dev · 4af2976a
      Raph Levien 提交于
      * commit 'd973b392':
        Do BiDi algorithm for text layout
      4af2976a
    • 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
      d973b392
    • 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
  2. 24 5月, 2014 3 次提交
  3. 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
  4. 22 5月, 2014 2 次提交
  5. 21 5月, 2014 1 次提交
  6. 20 5月, 2014 4 次提交
    • T
      edb291fb
    • R
      Fix incomplete refcounting and locking · 55f3653a
      Raph Levien 提交于
      These changes were supposed to be committed in the previous patch
      "Better refcounting and locking" but seem to have gotten lost in a
      rebase. It fixes a memory leak and some possible race conditions.
      
      Change-Id: I54ca1e37500ec49756fe317cc6d6d03da9911501
      55f3653a
    • 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
    • R
      Fix incomplete refcounting and locking · c31e3883
      Raph Levien 提交于
      These changes were supposed to be committed in the previous patch
      "Better refcounting and locking" but seem to have gotten lost in a
      rebase. It fixes a memory leak and some possible race conditions.
      
      Change-Id: I54ca1e37500ec49756fe317cc6d6d03da9911501
      c31e3883
  7. 15 5月, 2014 4 次提交
    • L
      Remove references to SkFloatToScalar. · a3998d4f
      Leon Scroggins III 提交于
      The macro has been deprecated, now that SkScalar is never fixed point.
      
      Fixes minikin build.
      
      Change-Id: I02838a7fa167c5cf58ad225f3f2f52659495492c
      a3998d4f
    • R
      Initial BiDi support · d231a4b0
      Raph Levien 提交于
      This patch contains a very basic implementation of BiDi. It respects the
      BiDi flags passed in as an explicit parameter (through the
      "-minikin-bidi" pseudo-CSS property), but doesn't yet do its own BiDi
      run detection. It also takes some shortcuts (marked as TODO) that are
      based on reasonable assumptions of the current font stack, but not
      universally valid.
      
      Even with these shortcomings, it seems to display RTL text from TextView
      correctly.
      
      Change-Id: I223433923c4eb06f90c0327e86bfbe0aff71d4f5
      d231a4b0
    • R
      Fix 64-bit cleanliness problem · 0a689bb9
      Raph Levien 提交于
      This patch fixes a problem where int and ssize_t were being conflated.
      
      Change-Id: I642a4ee1d59d81723034fdfe33bd8ca29a5dc322
      0a689bb9
    • R
      Fix build breakage in sample code · d133eab2
      Raph Levien 提交于
      This updates the Skia sample implementation to implement GetBounds,
      but the FreeType implementation is NYI (to be fixed in future commit).
      
      Change-Id: I24eda14d5fb11c2a1e81394ad8c779de3292dd79
      d133eab2
  8. 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
  9. 12 9月, 2013 2 次提交
  10. 28 6月, 2013 1 次提交
  11. 15 6月, 2013 2 次提交
    • R
      Fix build breakage · f660ef9e
      Raph Levien 提交于
      The MinikinFont class was missing a destructor. The build error was
      not caught because incremental builds didn't see fit to relink after
      I deleted one of the source files (that contained the impl of this
      destructor).
      
      Change-Id: Ic72d56fe28316cd2b2f808910e34ca6f177a1220
      f660ef9e
    • 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
  12. 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
  13. 20 4月, 2013 1 次提交