summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| | | | | * | | | | | | | merge in mnc-release history after reset to mnc-devThe Android Automerger2015-07-130-0/+0
| | | | | |\ \ \ \ \ \ \ \ | | | | | | |/ / / / / / / | | | | | |/| | | | | | |
| | | | | | * | | | | | | merge in mnc-release history after reset to mnc-devThe Android Automerger2015-07-010-0/+0
| | | | | | |\ \ \ \ \ \ \ | | | | | | | |/ / / / / / | | | | | | |/| | | | | |
| | | | | | | * | | | | | merge in mnc-release history after reset to mnc-devThe Android Automerger2015-06-270-0/+0
| | | | | | | |\ \ \ \ \ \
| | | | | | | | * | | | | | merge in mnc-release history after reset to mnc-devThe Android Automerger2015-06-250-0/+0
| | | | | | | | |\| | | | |
| | | | | | | | | * | | | | merge in mnc-release history after reset to mnc-devThe Android Automerger2015-06-160-0/+0
| | | | | | | | | |\ \ \ \ \
| | | | | | | | | | * \ \ \ \ merge in mnc-release history after reset to mnc-devThe Android Automerger2015-06-150-0/+0
| | | | | | | | | | |\ \ \ \ \ | | | | | | | | | | |/ / / / / | | | | | | | | | |/| | | | |
* | | | | | | | | / | | | | | Improve fallback where explicit variant is not givenRaph Levien2015-07-291-2/+5
|/ / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | | | | | | Merge "Revert "Allow clusters to start with zero-width characters"" into mnc-devRaph Levien2015-07-211-2/+1
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / / / |/| | | | | | | | | | | | |
| * | | | | | | | | | | | | Revert "Allow clusters to start with zero-width characters"Raph Levien2015-07-211-2/+1
| | |_|_|/ / / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 3e0fc64da064b8c4156daf53242b8eeb47830f64. Bug: 22589743 Bug: 22121742 Change-Id: I7b482ffb8a0ee174ddc804aa890de45bdbd758e3
* | | | | | | | | | | | | Consistently apply break opportunities in text spansRaph Levien2015-07-201-2/+2
| |/ / / / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | | | | Use ICU to lowercase words to hyphenate.Roozbeh Pournader2015-07-151-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the standard C tolower() function was used, which didn't support any characters beyond the basic ASCII letters. Bug: 22506121 Change-Id: Ibb81121caa29be44fbb59aa98891e9faafc57592
* | | | | | | | | | | | Add missing hyphen-like characters.Roozbeh Pournader2015-07-151-3/+19
| |/ / / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | | | Avoid re-hyphenating already-hyphenated phrases.Roozbeh Pournader2015-07-141-0/+9
| |/ / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | | Add HyphenEdit to layout cacheRaph Levien2015-07-092-3/+6
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | Allow clusters to start with zero-width charactersRaph Levien2015-06-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | Fix logspam and incorrect cluster offsetRaph Levien2015-06-292-2/+2
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* / / / / / / / Disable letterspacing for connected scriptsRaph Levien2015-06-261-9/+38
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* / / / / / / Separate additional penalty for last line with hyphenRaph Levien2015-06-241-2/+10
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | Merge "Use ASCII HYPHEN-MINUS when there's no HYPHEN in the font." into mnc-devRoozbeh Pournader2015-06-121-1/+11
|\ \ \ \ \ \
| * | | | | | Use ASCII HYPHEN-MINUS when there's no HYPHEN in the font.Roozbeh Pournader2015-06-121-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we just assumed the font in use had a U+2010 HYPHEN character, resulting in a tofu (or an empty space) being shown when U+2010 was not supported in the font used to render the hyphenated word. Now we try to fallback to U+002D HYPHEN-MINUS, which has a very good chance of being available in at least any Latin font. We still show a tofu when neither character is supported, to intentionally alert that something is missing. Bug: 20497913 Bug: 21088552 Bug: 21570828 Change-Id: Iff69bbc38836c03495e9124502b5207c39270da2
* | | | | | | Merge "Increase hyphenation penalty for short last line" into mnc-devRaph Levien2015-06-122-70/+39
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | |
| * | | | | | Increase hyphenation penalty for short last lineRaph Levien2015-06-082-70/+39
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* / / / / / Fix: getOffsetForAdvance can return worng offset.Keisuke Kuroyanagi2015-06-101-8/+14
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Merge "Use context start correctly in getRunAdvance" into mnc-devRaph Levien2015-06-011-1/+1
|\ \ \ \ \
| * | | | | Use context start correctly in getRunAdvanceRaph Levien2015-06-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were not taking context start into account when deciding whether to split a ligature, which was causing inconsistent behavior. This patch consistently references the widths array relative to the start of the context. Bug: 21549197 Change-Id: I7c71e10c1af84354fefe782fc0b87120016e6555
* | | | | | Disable hyphenation for unreasonably long wordsRaph Levien2015-06-011-1/+7
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Very long words cause O(n^2) behavior. These are unlikely to happen in real text, but do happen with synthetic strings, so in those cases we just disable hyphenation. Bug: 20790394 Change-Id: Idf957dd40b24efe1476f619f17093a48b5bc56f7
* | | | | Support hyphenation frequency in Minikin.Roozbeh Pournader2015-05-122-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Move Bitmap to a different namespaceJohn Reck2015-04-273-47/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | namespace naming collision. Move minikin's Bitmap out of android:: and into minikin:: Change-Id: I5ae3925f81b848dc79576429ab55243b96f7fed2
* | | | | Don't include trailing newline in width for line breakingRaph Levien2015-04-221-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Add functions for measuring cursor positioningRaph Levien2015-04-155-5/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New functions for computing the correspondence between cursor position and advance, respecting grapheme boundaries. Change-Id: I620378d5f64cd74300cd43db522adeb555825dff
* | | | | Rename "margins" to "indents"Raph Levien2015-04-152-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Add margins array to line widths objectRaph Levien2015-04-152-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Revert "Fix build: Revert "Add hyphenation to line breaking""Raph Levien2015-03-305-49/+407
| | | | | | | | | | | | | | | | | | | | This reverts commit 0b25d5ac85533f64764a0d53d5e5d33b46b715fa.
* | | | | Fix build: Revert "Add hyphenation to line breaking"Ed Heyl2015-03-305-407/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit daf6a6bdbf2ff1f66496d6200cb253e2f50759d5. Change-Id: I3fed65046274d3aeb748f0730585ab89927f5741
* | | | | Add hyphenation to line breakingRaph Levien2015-03-305-49/+407
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds hyphenation using the Liang hyphenation algorithm, similar to TeX. It also improves the optimized line breaker so that it works correctly and efficiently even when the line width is not constant (there is a specialization for constant width, which is probably worthwhile, but performance TODOs remain). Still to be done: * hyphenator has many shortcuts, only tested with English * interaction between punctuation and hyphenation is problematic Change-Id: I2d94a1668ebc536398b7c43fcf486333eeb7c6aa
* | | | | Add LineBreaker to MinikinRaph Levien2015-03-265-13/+522
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | HyphenEdit in support of hyphenationRaph Levien2015-03-122-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | Disable HarfBuzz's fallback to compatibility decompositionsRoozbeh Pournader2015-02-251-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | am 79298c34: am 5870d4f0: Remove hardcoded ICU include paths.Narayan Kamath2015-01-052-3/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | * commit '79298c346088e13a0ddc93d49f4bb100afdbd14b': Remove hardcoded ICU include paths.
| * | | | am 5870d4f0: Remove hardcoded ICU include paths.Narayan Kamath2015-01-052-3/+0
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * commit '5870d4f0d46f185568a2d2ea45afe48ae999b223': Remove hardcoded ICU include paths.
| | * | | | Remove hardcoded ICU include paths.Narayan Kamath2015-01-052-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS. bug: 18581021 Change-Id: Ia57b3b4d231966203274b0e7e7b850beb1bd11c0
* | | | | | am 919fbb99: am cb20a2f0: Minikin: Remove unused variables, fix init orderAndreas Gampe2014-12-046-12/+22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '919fbb99f1d5d0c95bf165cec9b7b178b42908ec': Minikin: Remove unused variables, fix init order
| * | | | | am cb20a2f0: Minikin: Remove unused variables, fix init orderAndreas Gampe2014-12-046-12/+22
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'cb20a2f0b366bfc16db3a489a60156dec7a9fe21': Minikin: Remove unused variables, fix init order
| | * | | | Minikin: Remove unused variables, fix init orderAndreas Gampe2014-12-036-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For build-system CFLAGS clean-up, fix unused variables. Reorder initializer list to initialize in the order of member declarations. Change-Id: I64358b2dcf0e39d0f4e18fdc3473de867f84fcba
* | | | | | am 58b25145: am 13f1aae0: Move coverage bitmap from FontCollection to FontFamilyRaph Levien2014-12-040-0/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '58b25145c1a14dd2e45d2b995d4b07d8fe70510c': Move coverage bitmap from FontCollection to FontFamily
| * | | | | am 13f1aae0: Move coverage bitmap from FontCollection to FontFamilyRaph Levien2014-12-040-0/+0
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '13f1aae02bacd475722bc8ea3fc2cf6abc1a82e3': Move coverage bitmap from FontCollection to FontFamily
| | * | | | Move coverage bitmap from FontCollection to FontFamilyRaph Levien2014-12-034-60/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | am dc81fbad: am 69d4fba2: Move frameworks/minikin over to libc++.Dan Albert2014-11-123-9/+5
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'dc81fbad809f08564199c8f08df7e7f72310961a': Move frameworks/minikin over to libc++.
| * | | | | am 69d4fba2: Move frameworks/minikin over to libc++.Dan Albert2014-11-123-9/+5
| |\| | | | | | |/ / / | |/| | | | | | | | | | | | | * commit '69d4fba2f2b7bb2c248cc0e78cf277a6e44665f8': Move frameworks/minikin over to libc++.
| | * | | Move frameworks/minikin over to libc++.Dan Albert2014-11-113-9/+5
| | | |/ | | |/| | | | | | | | | | | | | Bug: 15193147 Change-Id: I5e15c95415c39515340e2663acd5fd26666db720