1. 13 9月, 2016 2 次提交
  2. 12 8月, 2016 1 次提交
  3. 14 7月, 2016 3 次提交
    • S
      Lookup glyph from color emoji font before and after ZWJ. · 9431bb96
      Seigo Nonaka 提交于
      Unicode recommends that the zwj sequences should be emoji presentation
      even if they don't have the proper U+FE0F. Thus always lookup the glyph
      for the code point before and after zwj as if they have a U+FE0F
      variation selector.
      
      Bug: 30056627
      Change-Id: I03958a92337eaba4a8dd9c5be824b2665aa4a103
      9431bb96
    • S
      Treat U+2695, U+2640, U+2642 as emoji characters. · c2642f9a
      Seigo Nonaka 提交于
      Bug: 29885295
      Change-Id: I1bf191a46d05e7099265d863bae0523c50817d0b
      c2642f9a
    • S
      Add some gender balanced components in to the sticky whitelist. · fab99dde
      Seigo Nonaka 提交于
      FEMALE SIGN(U+2640), MALE SIGN(U+2642), StAFF OF AESCULAPIUS(U+2695)
      will be used as the ZWJ sequenced in gender balanced emoji sequence.
      To be in the same run with ZWJ, mark these emoji as sticky chracters.
      
      With this fix, Female police officer sequence will be shown correctly
      regardless of VS16.
      
      Bug: 30026374
      Change-Id: I503fc061eaa943d45208bb69e885151610c430ce
      fab99dde
  4. 26 5月, 2016 1 次提交
  5. 19 4月, 2016 1 次提交
  6. 15 4月, 2016 1 次提交
    • S
      Returns hasVariationSelector true for VS15/VS16 · 994aa84f
      Seigo Nonaka 提交于
      Minikin has a special font fallback for VS15/VS16, so
      hasVariationSelector for emojis with VS15/VS16 should always return
      true.
      
      Bug: 27531970
      Change-Id: Ieebd58f48b135b6ec50d999df68dcc09b1284606
      994aa84f
  7. 13 4月, 2016 1 次提交
    • R
      Clear mLineWidths in LineBreaker::finish() · 879e8a3a
      Raph Levien 提交于
      There was the possibility of stale indents from previous invocations
      persisting in the mLineWidths across multiple invocations. This patch
      clears them.
      
      Bug: 28090810
      Change-Id: I3621dfbe983512046289373711709aeade52eab4
      879e8a3a
  8. 12 4月, 2016 1 次提交
    • S
      Fix minikin_unittests · 6c60831c
      Seigo Nonaka 提交于
      This CL fixes following test cases in minikin_tests
      - FontFamilyTest.hasVariationSelectorTest
      - HbFontCacheTest.getHbFontLockedTest
      - HbFontCacheTest.purgeCacheTest
      
      For the fix of FontFamilyTest.hasVariationSelectorTest, removing virtual
      from GetUniqueId() in MinikinFont.  After [1], MinikinFont's destructor
      started calling purgeHbCache() which calls virtual method,
      MinikinFont::GetUniqueId().  Fortunately, the SkTypeface::uniqueID()
      returns just internal value, so we can store it at the construction time
      and use it instead of calling SkTypeface::uniqueID() every time.
      
      This patch also changes purgeHbFont to purgeHbFontLocked, as all uses of
      it were already under global mutex. This change avoids deadlock on
      explicit unref, as when invoked by a Java finalizer from the Java object
      that holds a reference to the font.
      
      Some of the tests needed to change to using the ref counting protocol
      rather than explicitly destructing font objects, as well.
      
      [1] 9afcc6e2
      
      Bug: 28105730
      Bug: 28105688
      Change-Id: Ie5983c4869147dacabdca81af1605066cd680b3f
      6c60831c
  9. 08 4月, 2016 2 次提交
    • R
      Avoid copying of font table data · aaa4e347
      Raph Levien 提交于
      The hb_font_t object holds on to tables of font data, acquired through
      the MinikinFont::GetTable interface, which is based on copying data
      into caller-owned buffers. Now that we're caching lots of hb_font_t's,
      the cost of these buffers is significant.
      
      This patch moves to a different interface, inspired by HarfBuzz's
      hb_reference_table API, where the font can provide a pointer to the
      actual font data (which will often be mmap'ed, so it doesn't even
      consume physical RAM).
      
      Bug: 27860101
      Change-Id: Id766ab16a8d342bf7322a90e076e801271d527d4
      aaa4e347
    • R
      Purge hb font on Minikin font destruction · 9afcc6e2
      Raph Levien 提交于
      This patch eagerly purges the corresponding hb_font_t object from
      the HbFontCache when the underlying MinikinFont is destroyed. After
      that, the key will no longer be accessed, so having the entry is
      wastes memory.
      
      Bug: 27251075
      Bug: 27860101
      Change-Id: I1b98016133fe3baf6525ac37d970a65ddccadb4f
      9afcc6e2
  10. 04 4月, 2016 1 次提交
    • S
      Support multiple locales for font language settings. · f3afe92d
      Seigo Nonaka 提交于
      Some fonts support multiple scripts, for example, some fonts for
      Korean supports not only "Kore" but also "Jamo".
      
      To select fonts based on their multiple languages, this CL introduces
      the following changes:
      - Compares all languages of the font family and use the maximum score
        for font selection.
      - Even if each language of the font family doesn't support the requested
        language, the font get score of 2 if the requested font is covered by
        all of the languages of the font family. For example, the font for
        "ko-Hang,ko-Hani" gets score of 2 for the requested language "ko-Kore".
      
      Bug: 26687969
      
      Change-Id: I7f13b51464c9b01982bb573251d77052b9ddbd70
      f3afe92d
  11. 31 3月, 2016 1 次提交
    • R
      Try putting combining marks in the same font run · 16ed4ef0
      Roozbeh Pournader 提交于
      Indic combining marks, when combined with a common character such as
      a hyphen or a dotted circle, used to get rendered in a different font
      due to the greedy algorithm used in determining runs, which resulted
      in the base character and the combining mark getting rendered in
      separate font runs, resulting in a dotted circle appearing in phrases
      such as "100-ാം" (0031 0030 0030 002D 0D3E 0D02).
      
      This change makes combining marks change the font run of the base
      character if the base character is supported in the same font as the
      combining mark, similar to the support for emoji modifiers and the
      combining keycap.
      
      Bug: 25036888
      Bug: 24535344
      Change-Id: I8e2798e8ecb8efaf723a0fd02c05c6fbdef8b365
      16ed4ef0
  12. 17 3月, 2016 1 次提交
  13. 04 3月, 2016 1 次提交
  14. 03 3月, 2016 1 次提交
  15. 27 2月, 2016 2 次提交
    • R
      Fix wrong conditions in isEmojiBase · 1934c2c3
      Raph Levien 提交于
      I computed ranges using low <= c || c <= high, should be &&.
      
      Bug: 26829153
      Change-Id: Ic1002d90b6a408a0b415f2d117d0e57adcbc2fa9
      1934c2c3
    • R
      Suppress line breaks in emoji + modifier · 56840e80
      Raph Levien 提交于
      An emoji base with an emoji modifier renders as a single glyph and
      thus should not be a line break. Current (Unicode 8) logic does
      indicate a line break, so we override the results of the ICU line
      break iterator. The code references a proposal to improve Unicode
      behavior; when that is adopted and we upgrade ICU accordingly, the
      special-case code should be deleted, but the tests can remain.
      
      Bug: 27343378
      Change-Id: I5de9c53e9a34c503816f9131e3d894e6f7a57d13
      56840e80
  16. 26 2月, 2016 1 次提交
    • S
      Use color font if skin tone is specified. · 0036da16
      Seigo Nonaka 提交于
      If skin tone is specified, the base emoji should be emoji style even
      if it is text presentation default emoji.
      
      This patch also removes wrong test case which expects default emoji
      presentation but it is controlled by family order in /etc/fonts.xml
      and there is no special logic for default presentation in minikin.
      Thus the default presentation unit test should not be in minikin.
      
      Bug: 27342346
      
      Change-Id: I74a2b2feab4d559535049e368cfd833063cce81c
      0036da16
  17. 25 2月, 2016 1 次提交
    • R
      Suppress grapheme cluster breaks in emoji with modifiers · adfa580f
      Raph Levien 提交于
      An emoji with a modifier should be treated as a single grapheme, i.e.
      it should not be possible to place the cursor between the base and
      modifier.  This patch implements the proposed Rule GB9c from Mark
      Davis's proposal entitled "Fixing breaking properties for emoji",
      L2/16-011R3.
      
      The patch also skips over variation sequences attached the to the
      preceding character, for computing grapheme cluster boundaries.
      
      Bug: 26829153
      Change-Id: Iff5bc2bb8e5246223a017c7cf33acfbf63817f16
      adfa580f
  18. 19 2月, 2016 3 次提交
    • R
      Suppress linebreaks in emoji ZWJ sequences · d3f45892
      Raph Levien 提交于
      Due to the way emoji ZWJ sequences are defined, the ICU line breaking
      algorithm determines that there are valid line breaks inside the
      sequence. This patch suppresses these line breaks.
      
      This is an adaptation of I225ebebc0f4186e4b8f48fee399c4a62b3f0218a
      into the nyc-dev branch.
      
      Bug: 25433289
      Change-Id: I84b50b1e6ef13d436965eab389659d02a30d100f
      d3f45892
    • K
      Optimize: Use measureText instead of doLayout. · ea408fc1
      Keisuke Kuroyanagi 提交于
      With this CL, measureText is used for getRunAdvance,
      getOffsetForAdvance and line breaking.
      
      Bug: 24505153
      Change-Id: Ib699f6b1391b46537736fc274cdb41686586b550
      ea408fc1
    • R
      Disable hyphenation when word overlaps style boundary · aa736d00
      Raph Levien 提交于
      In cases when a word (as defined by the ICU break iterator) overlaps a
      style boundary, the returned wordStart can be extend before the range
      currently being measured for layout. When we try to hyphenate the
      resulting substrings, we get a negative range, which crashes. This
      patch disables hyphenation in this case.
      
      Bug: 27237112
      Change-Id: I76d04b39dd3b4d6d267aaaf4bebc9ab361891646
      aa736d00
  19. 18 2月, 2016 4 次提交
    • S
      Support Hanb script. · 533a01ea
      Seigo Nonaka 提交于
      Hanb is a union of Han and Bopomofo.
      
      Bug: 26687969
      Change-Id: Ic696bcbbc9607f3842fd0115668b8e7bd917e62b
      533a01ea
    • R
      Add penalty for breaks in URLs and email addresses · c88ef135
      Raph Levien 提交于
      Recent changes have added special cases for line breaks within URLs
      and email addresses. Such breaks are undesirable when they can be
      avoided, but at other times are needed to avoid huge gaps, or indeed
      to make the line fit at all.
      
      This patch assigns a penalty for such breaks, equal to the hyphenation
      penalty. The mechanism is currently very simple, but would be easy to
      fine-tune based on more detailed information about break quality.
      
      Bug: 20126487
      Bug: 20566159
      Change-Id: I0d3323897737a2850f1e734fa17b96b065eabd9c
      c88ef135
    • R
      Add line breaks to email addresses and URLs · 6d15657e
      Raph Levien 提交于
      This change adds accceptable line breaks according to sections 7.42
      (Dividing URLs and e-mail addresses) and 14.12 (URLs or DOIs and line
      breaks) of the Chicago Manual of Style (16th ed.). In general, these
      place breaks before punctuation symbols, and suppresses them after
      hyphens.
      
      Bug: 20126487
      Bug: 20566159
      Change-Id: I2d07d516b920a506a2f718c38fb435c5eb1ee1f8
      6d15657e
    • R
      Special-case URLs and email addresses for line breaking · 9c4cc648
      Raph Levien 提交于
      Detect URLs and email addresses, and suppress both line breaking and
      hyphenation within them.
      
      Bug: 20126487
      Bug: 20566159
      
      Change-Id: I43629347a063dcf579e355e5b678d7195f453ad9
      9c4cc648
  20. 17 2月, 2016 2 次提交
    • 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
    • R
      Refine hyphenation around punctuation · 57b6dae9
      Raph Levien 提交于
      Implement a WordBreaker that defines our concept of valid word
      boundaries, customizing the ICU behavior. Currently, we suppress line
      breaks at soft hyphens (these are handled specially). Also, the
      new WordBreaker class has methods that determine the start and end
      of the word (punctuation stripped) for the purpose of hyphenation.
      
      This patch, in its current form, doesn't handle email addresses and
      URLs specially, but the WordBreaker class is the correct place to do
      so. Also, special case handling of hyphens and dashes is still done
      in LineBreaker, but all of that should be moved to WordBreaker.
      
      Bug: 20126487
      Bug: 20566159
      Change-Id: I492cbad963f9b74a2915f010dad46bb91f97b2fe
      57b6dae9
  21. 13 2月, 2016 2 次提交
  22. 12 2月, 2016 1 次提交
  23. 08 2月, 2016 1 次提交
  24. 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
  25. 26 1月, 2016 1 次提交
  26. 21 1月, 2016 1 次提交
  27. 15 1月, 2016 1 次提交
    • S
      Introduce multiple language based font fallback. · 6f9966ea
      Seigo Nonaka 提交于
      The motivation of this CL is enhance the font fallback score design
      to support multiple language font fallback.
      
      This CL contains following changes:
      - Break language based font score into two: script-based score and
        primary-language-based score.
      - The primary-language-based score is 0 if the script-based score is 0.
        If the script-based score is not 0 and the primary language is the
        as same as the requested one, the font gets an extra score of 1.
      - The language score gets a higher multiplier for languages higher in
        the locale list.
      
      Bug: 25122318
      Bug: 26168983
      Change-Id: Ib999997a88e6977e341f4c325e2a1b41a59db2d5
      6f9966ea
  28. 14 1月, 2016 1 次提交