1. 17 2月, 2016 1 次提交
    • S
      Improve Paint.measureText and Paint.hasGlyph for variation sequences. · 6b1c227d
      Seigo Nonaka 提交于
      Before this patch, the font fallback chain iterated all installed font
      families if a variation selector was specified.
      
      This CL narrows down the range of iteration.
      To decide the font family for the variation sequence, we need to search
      for both the variation sequence and its base code point.
      The new range of the iteration is a union of them.
      
      With this change, the running time of Paint.hasGlyph for the variation
      sequence improves 50% and the running time of Paint.measureText for the
      variation sequence improves 40% for the large text case on Nexus 6
      userdebug.
      
      Bug: 26784699
      Bug: 11750374
      
      Change-Id: Iced1349e3ca750821d8882c551551f65bb569794
      6b1c227d
  2. 04 2月, 2016 1 次提交
    • S
      Improve Paint.hasGlyph performance by caching hb_font_t · 89e80237
      Seigo Nonaka 提交于
      It turned out that hb_font_t creation is not a lightweight operation.
      Especially, Paint.hasGlyph creates hb_font_t for all existing fonts
      every time. To improve the performance, cache hb_font_t instead
      of hb_face_t.
      
      Note that to calculate horizontal advance, MinikinPaint needs to be
      associated with hb_font_t by calling hb_font_set_funcs. With this patch,
      hb_font_set_funcs may be called multiple times for the same hb_font_t
      object. However this is not an issue since MinikinPaint is unique
      during layout.
      
      Bug: 26784699
      
      Change-Id: I516498ae9f0127d700fc9829327e9789845a1416
      89e80237
  3. 05 1月, 2016 1 次提交
    • S
      Save all kind of script tags into FontLanguage. · 198b46f1
      Seigo Nonaka 提交于
      This is 2nd attempt of I8df992a6851021903478972601a9a5c9424b100c.
      
      The main purpose of this CL is expanding FontLanguage to be able to
      save full script tag. Previously, FontLangauge kept only limited script
      tags. With this CL, FontLanguage keeps all script tags.
      
      This CL contains the following changes:
      - FontLanguage changes:
      -- Moved to private directory not to be instantiated outside of Minikin.
      -- Removed bool(), bits(), FontLanguage(uint32_t) methods which are no
         longer used.
      -- Change the FontLanguage internal data structure.
      -- Introduces script match logic.
      
      - FontLanguages changes:
      -- Moved to private directory not to be instantiated outside of Minikin.
      -- This is now std::vector<FontLanguage>
      
      - FontLanguageListCache changes:
      -- Now FontLanguageListCache::getId through
         FontStyle::registerLanguageList is the only way to instantiate the
         FontLanguage.
      -- Normalize input to be BCP47 compliant identifier by ICU.
      
      Bug: 26168983
      Change-Id: I431b3f361a7635497c05b85e8ecbeb48d9aef63e
      198b46f1
  4. 22 12月, 2015 2 次提交
    • B
      Revert "Save all kind of script tags into FontLanguage." · 6c4c098c
      Bart Sears 提交于
      This reverts commit 5e995fb8.
      
      Change-Id: I761e0e41906742fbe3d3ac34170af3101e18042a
      6c4c098c
    • S
      Save all kind of script tags into FontLanguage. · 5e995fb8
      Seigo Nonaka 提交于
      The main purpose of this CL is expanding FontLanguage to be able to
      save full script tag. Previously, FontLangauge kept only limited script
      tags. With this CL, FontLanguage keeps all script tags.
      
      This CL contains the following changes:
      - FontLanguage changes:
      -- Moved to private directory not to be instantiated outside of Minikin.
      -- Removed bool(), bits(), FontLanguage(uint32_t) methods which are no
         longer used.
      -- Change the FontLanguage internal data structure.
      -- Introduces script match logic.
      
      - FontLanguages changes:
      -- Moved to private directory not to be instantiated outside of Minikin.
      -- This is now std::vector<FontLanguage>
      
      - FontLanguageListCache changes:
      -- Now FontLanguageListCache::getId through
         FontStyle::registerLanguageList is the only way to instantiate the
         FontLanguage.
      -- Normalize input to be BCP47 compliant identifier by ICU.
      
      Bug: 26168983
      Change-Id: I8df992a6851021903478972601a9a5c9424b100c
      5e995fb8
  5. 11 12月, 2015 1 次提交
  6. 09 12月, 2015 1 次提交
    • S
      Introduce FontLanguageListCache. · 6d9dcd2c
      Seigo Nonaka 提交于
      FontLanguageListCache is an intentionally leaky singleton and its
      internal cache won't be purged.
      
      BUG: 25122318
      
      Change-Id: I272097e979fe44b83fd86822235350e12eda8f51
      6d9dcd2c
  7. 08 12月, 2015 1 次提交
    • S
      Select emoji font based on variation selectors. · 369d2d44
      Seigo Nonaka 提交于
      If U+FE0E is appended to the emoji code point, the glyph should have a
      text presentation.
      On the other hand, if U+FE0F is appended to the emoji code point, the
      glyph should have an emoji presentation.
      
      Bug: 11256006
      Change-Id: I5187d44500b13a138e7ffbcf2c72e2da06374c8c
      369d2d44
  8. 23 10月, 2015 1 次提交
  9. 12 10月, 2015 1 次提交
    • S
      Introduce FontFamily::hasVariationSelector · 0f2a025d
      Seigo Nonaka 提交于
      This CL introduces new method hasVariationSelector into FontFamily but it
      is not used in production code. So no behavior changes are expected.
      
      This CL contains the following changes:
      - Introduce hasVariationSelector which returns true if the corresponding
        font has a glyph for a code point and variation selector pair.
      - Introduce purgeHbFontCache since hb_face_t won't be released by
        keeping hb_font_t.
      - Introduce unit tests with self-built font.
      
      Change-Id: I659a6d03d9ec446b409e1fba2758452abb9f44fa
      0f2a025d
  10. 08 8月, 2015 1 次提交
  11. 04 12月, 2014 2 次提交
    • A
      Minikin: Remove unused variables, fix init order · cb20a2f0
      Andreas Gampe 提交于
      For build-system CFLAGS clean-up, fix unused variables.
      
      Reorder initializer list to initialize in the order of member
      declarations.
      
      Change-Id: I64358b2dcf0e39d0f4e18fdc3473de867f84fcba
      cb20a2f0
    • R
      Move coverage bitmap from FontCollection to FontFamily · 13f1aae0
      Raph Levien 提交于
      This will significantly reduce memory usage and also speed the creation
      of new font families. In particular, the coverage bitmaps for the fonts
      in the fallback stack will be computed once in the Zygote, rather than
      separately in each app process.
      
      Bug: 17756900
      Change-Id: I66f5706bddd4658d78fe5b709f7251ca9d2ff4f8
      13f1aae0
  12. 30 10月, 2014 1 次提交
    • R
      Move coverage bitmap from FontCollection to FontFamily · 253320d2
      Raph Levien 提交于
      This will significantly reduce memory usage and also speed the creation
      of new font families. In particular, the coverage bitmaps for the fonts
      in the fallback stack will be computed once in the Zygote, rather than
      separately in each app process.
      
      Bug: 17756900
      Change-Id: I66f5706bddd4658d78fe5b709f7251ca9d2ff4f8
      253320d2
  13. 25 7月, 2014 1 次提交
    • B
      Towards CSS removal · a5bb9119
      Behdad Esfahbod 提交于
      Extract language from FontStyle during shaping.  Don't attach CSS
      to LayoutContext.
      
      Change-Id: Ie621d3415410178d0d15fa7b810eb8e412342ab6
      a5bb9119
  14. 12 6月, 2014 1 次提交
    • R
      Support for fake bold and italics · 15651697
      Raph Levien 提交于
      This patch adds support for computing when fake bold and fake italics
      are needed (because the styles are requested but not provided by the
      matching FontFamily), and providing them as part of the layout result.
      
      Part of the fix for bug 15436379 Fake bold doesn't fully work (Minikin)
      
      Change-Id: I180c034b559837943673b5c272c8e890178dff0d
      15651697
  15. 11 6月, 2014 1 次提交
    • R
      Support for fake bold and italics · 9a5f713a
      Raph Levien 提交于
      This patch adds support for computing when fake bold and fake italics
      are needed (because the styles are requested but not provided by the
      matching FontFamily), and providing them as part of the layout result.
      
      Part of the fix for bug 15436379 Fake bold doesn't fully work (Minikin)
      
      Change-Id: I180c034b559837943673b5c272c8e890178dff0d
      9a5f713a
  16. 30 5月, 2014 1 次提交
    • R
      Language and variant selection · 7b221d97
      Raph Levien 提交于
      This patch adds a "lang" pseudo-CSS property and uses it both to select
      an appropriate font and control the "locl" OpenType feature to get the
      most appropriate rendering for the langauge and script.  In addition,
      the "-minikin-variant" property selects between "compact" and "elegant"
      variants of a font, as the former is needed for vertically cramped
      spaces.
      
      This is part of the fix for bug 15179652 "Japanese font isn't shown on
      LMP".
      
      Change-Id: I7fab23c12d4c797a6d339a16e497b79a3afe9df1
      7b221d97
  17. 27 5月, 2014 1 次提交
    • 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
  18. 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
  19. 20 5月, 2014 2 次提交
    • 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
      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
  20. 13 5月, 2014 1 次提交
    • 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
  21. 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
  22. 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