1. 03 11月, 2015 1 次提交
    • R
      Suppress linebreaks in emoji ZWJ sequences - DO NOT MERGE · c65e6f1e
      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.
      
      Bug: 25433289
      Change-Id: I225ebebc0f4186e4b8f48fee399c4a62b3f0218a
      c65e6f1e
  2. 30 10月, 2015 1 次提交
    • R
      Accept variation selector in emoji sequences - DO NOT MERGE · adaf42f0
      Raph Levien 提交于
      This patch basically ignores variation selectors for the purpose of
      itemization into font runs. This allows GSUB to be applied when input
      sequences contain variation selectors.
      
      Bug: 25368653
      Change-Id: I9c1d325ae0cd322c21b7e850d0ec4d73551b2372
      adaf42f0
  3. 15 10月, 2015 3 次提交
    • R
      Complete half-done cherry-picking of Android.mk. DO NOT MERGE · e8264e06
      Roozbeh Pournader 提交于
      The previous commit, 6e2cccdc, was
      incompletely cherry-picked. This adds the missing parts.
      
      Bug: 24570591
      Change-Id: I1097c60587fb8a88cfe6b8ffed5b1689d9bdd429
      e8264e06
    • R
      Explicitly set utf-8 encoding for hyb file verification · e5e7aa0e
      Raph Levien 提交于
      Not all platforms default to UTF-8 encoding, so we set it explicitly.
      This patch should fix build breakages resulting from failed verification
      of binary hyb files for hyphenation patterns.
      
      Bug: 24570591
      Change-Id: I65ac4536d3436586c2633e2b57554fc6ff16d3a8
      (cherry picked from commit 138b93f0)
      e5e7aa0e
    • R
      Binary format for hyphenation patterns · 6e2cccdc
      Raph Levien 提交于
      In the current state, hyphenation in all languages than Sanskrit seems
      to work (case-folding edge cases). Thus, we just disable Sanskrit.
      Packed tries are implemented, but not the finite state machine
      (space/speed tradeoff).
      
      This commit contains a throw-away test app, which runs on the host.
      I think I want to replace it with unit tests, but I'm including it in
      the CL because it's useful during development.
      
      Bug: 21562869
      Bug: 21826930
      Bug: 23317038
      Bug: 23317904
      Bug: 24570591
      Change-Id: I7479a565a4a062fa319651c2c14c0fa18c5ceaea
      (cherry picked from commit f0be43de)
      6e2cccdc
  4. 30 7月, 2015 1 次提交
    • R
      Improve fallback where explicit variant is not given · 90a09c3f
      Raph Levien 提交于
      In computing scores for which fallback font to choose, a match of a
      variant given explicitly in the xml config file scores higher than a
      family with no explicit variant. One consequence is that U+2010
      HYPHEN is chosen from the Naskh Arabic font in the fallback case.
      
      This patch scores families with no variants as a match (effectively
      the same as if the xml file specified both variants). Thus, it will
      choose the first matching font (Roboto), which is a better choice.
      
      This patch also revises the list of "sticky" characters to include
      various hyphens, so Arabic (and potentially other scripts) text that
      includes hyphens can access the script-specific variants matched to
      the underlying text.
      
      Bug: 22824219
      Change-Id: I6ec1043037f89cad50ca99ac24c473395546bcdf
      90a09c3f
  5. 22 7月, 2015 2 次提交
  6. 21 7月, 2015 1 次提交
    • R
      Consistently apply break opportunities in text spans · e9ec9a1d
      Raph Levien 提交于
      It's essential not to apply a break opportunity within a replacement
      span, otherwise things can happen such as displaying the span twice.
      The old code tested this case based on zero-width characters.
      However, this test was both imprecise, and also in some cases read
      uninitialized values from the mCharWidths array, which in turn led
      to inconsistent line breaking of the same text.
      
      This patch applies all line break opportunities (as identified by
      ICU) within text (as opposed to replacement spans), and also applies
      break opportunities at the beginning and end of replacement spans,
      but avoids breaks within a replacement span.
      
      Bug: 20138621
      Change-Id: I36baeb44d6808356649e1bb69ca57f093fc8c723
      e9ec9a1d
  7. 16 7月, 2015 2 次提交
    • R
      Use ICU to lowercase words to hyphenate. · cdd19dad
      Roozbeh Pournader 提交于
      Previously, the standard C tolower() function was used, which
      didn't support any characters beyond the basic ASCII letters.
      
      Bug: 22506121
      Change-Id: Ibb81121caa29be44fbb59aa98891e9faafc57592
      cdd19dad
    • R
      Add missing hyphen-like characters. · daf62d0e
      Roozbeh Pournader 提交于
      This adds various hyphen-like characters missed in the previous
      patch, that should disallow automatic hyphenation of words containing
      them.
      
      Bug: 22484266
      Change-Id: Ie972cb50384dbe0aa1ab5ec50286b75f9877953a
      daf62d0e
  8. 15 7月, 2015 1 次提交
    • R
      Avoid re-hyphenating already-hyphenated phrases. · baf6d0a4
      Roozbeh Pournader 提交于
      Previously, automatic hyphenation blindly took almost every line
      breaking opportunity as a word break, so words like "low-budget" were
      treated as two separate words, "low-", and "budget", each
      automatically hyphenated.
      
      This patch makes sure the subwords in already-hyphenated phrases are
      not passed to the automatic hyphenator, while keeping the possibility
      of a potential line break where a hyphen already exists.
      
      Bug: 22484266
      Bug: 22287425
      Change-Id: Ie46dbdd70e993d64a9b9cf44b4ae93b21459dbc2
      baf6d0a4
  9. 10 7月, 2015 1 次提交
    • R
      Add HyphenEdit to layout cache · 6c4d167b
      Raph Levien 提交于
      We bypass the word layout cache for "complex" cases, which includes
      things like OpenType features. We were counting a hyphen edit as such
      a case, but the problem is that we measure a _lot_ of these when
      doing layout with hyphenation.
      
      This patch adds plumbing for hyphen edits to the layout cache, so
      that word fragments with hyphens can be cached as well.
      
      Bug: 22378829
      
      Change-Id: Idba4df4faa14f48a5faccc8a7a7955a36c19ef27
      6c4d167b
  10. 01 7月, 2015 1 次提交
    • R
      Allow clusters to start with zero-width characters · 3e0fc64d
      Raph Levien 提交于
      The logic in getRunAdvance() assumed that any zero-width character was
      part of the preceding cluster, which is valid most of the time. However,
      characters such as ZWNBSP (U+FEFF) renders as a zero width glyph
      and is also a grapheme cluster boundary. This patch adds a clause to
      handle that case.
      
      Bug: 22121742
      Change-Id: Iad79a7d988bded1ef05f0fd7905d20669ea22051
      3e0fc64d
  11. 30 6月, 2015 1 次提交
    • R
      Fix logspam and incorrect cluster offset · 91425f05
      Raph Levien 提交于
      An incorrect cluster offset calculation was causing a lot of log
      messages to appear. Separately, a confusion between #if and #ifdef was
      causing unintended logging of line breaks. This patch fixes both.
      
      Bug: 22178333
      Change-Id: I2b3673ed66c784f5082fd127a8dc10bd3df6ed79
      91425f05
  12. 27 6月, 2015 1 次提交
    • R
      Disable letterspacing for connected scripts · e8721b2d
      Raph Levien 提交于
      The appearance of letterspacing with scripts with cursive connections
      is poor, so we simply disable letterspacing for those scripts. There
      may be some cases where some form of letterspacing is desirable, but
      this gives the highest likelihood that the final result will be good
      without requiring additional work from clients.
      
      Bug: 21935803
      Change-Id: Ie25266249ac3a2605aa89ef5132e8edbe3a06d35
      e8721b2d
  13. 25 6月, 2015 1 次提交
    • R
      Separate additional penalty for last line with hyphen · a6f8bf6f
      Raph Levien 提交于
      A recent change added a penalty for a hyphen at the last line break,
      which is visually undesirable. However, the penalty was assessed to
      "widthScore", which broke the assumption (used for another
      optimization) that widthScore increases monotonically. This patch
      separates the penalty into a different parameter, restoring the
      validity of the monotonicity assumption.
      
      Bug: 22066119
      Change-Id: I6a47a350ef3ceee2f00ee430d6954d0c307227f0
      a6f8bf6f
  14. 13 6月, 2015 3 次提交
  15. 10 6月, 2015 1 次提交
    • K
      Fix: getOffsetForAdvance can return worng offset. · 4ea1cc82
      Keisuke Kuroyanagi 提交于
      searchStart was passed to getRunAdvance, but it can be
      different from the start that has been used to initialize
      Layout object. As a result, wrong index could be used in
      getRunAdvance.
      
      Bug: 21744454
      Change-Id: Ibe83cc50ed6f0da2a1532318bc224502be350699
      4ea1cc82
  16. 09 6月, 2015 1 次提交
    • R
      Increase hyphenation penalty for short last line · abae97a3
      Raph Levien 提交于
      Tuning for hyphenation parameters. We discourage hyphenation on the
      last line, but offset this penalty by also applying a penalty for
      each line, which optimizes for minimizing the number of lines. Thus,
      when hyphenation can reduce the number of lines, it increases the
      chance they're used.
      
      There's probably more tuning and refinement that can be done, but
      testing suggests that the tunable parameters are appropriate.
      
      Bug: 20883322
      
      Change-Id: Ida7eaf8aced109e426694f5a386924a842d29c4b
      abae97a3
  17. 02 6月, 2015 3 次提交
  18. 13 5月, 2015 1 次提交
    • R
      Support hyphenation frequency in Minikin. · 0dc07c0b
      Roozbeh Pournader 提交于
      Three hyphenation frequencies are now supported:
      
      kHyphenationFrequency_None, which turns off both automatic
      hyphenation and soft hyphens.
      
      kHyphenationFrequency_Normal, which has aconservative amount of
      hyphenation useful as a conservative default.
      
      kHyphenationFrequency_Full, which has a typographic-quality amount of
      hyphenation useful for running text and tight screens.
      
      Bug: 21038249
      Change-Id: I2800f718c887c9389a1a059d7ec07d7fa2ca1dee
      0dc07c0b
  19. 28 4月, 2015 1 次提交
    • J
      Move Bitmap to a different namespace · 8920e817
      John Reck 提交于
      namespace naming collision. Move minikin's
      Bitmap out of android:: and into minikin::
      
      Change-Id: I5ae3925f81b848dc79576429ab55243b96f7fed2
      8920e817
  20. 23 4月, 2015 1 次提交
    • R
      Don't include trailing newline in width for line breaking · 68ae337a
      Raph Levien 提交于
      In a paragraph with a trailing newline, the width of the newline
      character was included in the line width for breaking purposes,
      basically as if it were a non-breaking space. This caused a
      discrepancy, where Layout.getDesiredWidth() suggested that the text
      would fit in a single line, but StaticLayout would break it because of
      the added width of the newline character.
      
      The proposed fix is simply to consider newline to be a space that
      disappears at the end of a line.
      
      Bug: 20152308
      Change-Id: I539574c5b8ea892c8ed6aca6c59e90ccdf74a680
      68ae337a
  21. 16 4月, 2015 3 次提交
    • R
      Add functions for measuring cursor positioning · 40beb774
      Raph Levien 提交于
      New functions for computing the correspondence between cursor
      position and advance, respecting grapheme boundaries.
      
      Change-Id: I620378d5f64cd74300cd43db522adeb555825dff
      40beb774
    • R
      Rename "margins" to "indents" · bb86b433
      Raph Levien 提交于
      The name "margin" conflicts with another meaning, so we're making the
      name in the public api "idents" and the code consistent in naming.
      
      Change-Id: I9170116b4d972e4b25f0f319e78376310288eb41
      bb86b433
    • R
      Add margins array to line widths object · dc7bc6e3
      Raph Levien 提交于
      In order to support layout in non-rectangular regions, the LineWidths
      object needs to accept an arbitrary array of margins. This is
      implemented in addition to the existing firstWidthLineCount/restWidth
      mechanism for convenience, though using only arrays would have the
      same expressive power.
      
      Bug: 20182243
      Change-Id: Iea96bca1a92012314ac27e617c67f306c1f1b2f2
      dc7bc6e3
  22. 31 3月, 2015 3 次提交
  23. 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
  24. 13 3月, 2015 1 次提交
    • R
      HyphenEdit in support of hyphenation · d692d6a9
      Raph Levien 提交于
      Adds a "HyphenEdit" field to the Minikin Paint object, which represents
      an edit to the text to add a hyphen (and, in the future, other edits to
      support nonstandard hyphenation).
      
      Change-Id: Ib4ee690b0fe2137e1d1e2c9251e5526b274ec3a7
      d692d6a9
  25. 26 2月, 2015 1 次提交
    • R
      Disable HarfBuzz's fallback to compatibility decompositions · 0bbff3a9
      Roozbeh Pournader 提交于
      Previously, HarfBuzz's default fallback to compatibility
      decompositions resulted in Mathematical Alphanumeric Symbols getting
      rendered as normal letters and digits when there was no font
      available to render them. This patch disables that fallback, to
      ensure they are displayed as tofus.
      
      Based on a patch by Behdad Esfahbod.
      
      Bug: 19202569
      Change-Id: I357f172302448d4ab0b24efc86119f1977b5996b
      0bbff3a9
  26. 06 1月, 2015 2 次提交
  27. 05 1月, 2015 1 次提交