summaryrefslogtreecommitdiffstats
path: root/libs/minikin/Android.mk
Commit message (Collapse)AuthorAgeFilesLines
* Complete half-done cherry-picking of Android.mk. DO NOT MERGERoozbeh Pournader2015-10-141-5/+9
| | | | | | | | The previous commit, 6e2cccdc518f8d3424c84ae6fbe0e87ae3c3f66a, was incompletely cherry-picked. This adds the missing parts. Bug: 24570591 Change-Id: I1097c60587fb8a88cfe6b8ffed5b1689d9bdd429
* Binary format for hyphenation patternsRaph Levien2015-10-141-0/+25
| | | | | | | | | | | | | | | | | | | 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 f0be43de02a1e07308d3d95408349c3c7f973430)
* Add functions for measuring cursor positioningRaph Levien2015-04-151-0/+1
| | | | | | | New functions for computing the correspondence between cursor position and advance, respecting grapheme boundaries. Change-Id: I620378d5f64cd74300cd43db522adeb555825dff
* Revert "Fix build: Revert "Add hyphenation to line breaking""Raph Levien2015-03-301-0/+1
| | | | This reverts commit 0b25d5ac85533f64764a0d53d5e5d33b46b715fa.
* Fix build: Revert "Add hyphenation to line breaking"Ed Heyl2015-03-301-1/+0
| | | | | | This reverts commit daf6a6bdbf2ff1f66496d6200cb253e2f50759d5. Change-Id: I3fed65046274d3aeb748f0730585ab89927f5741
* Add hyphenation to line breakingRaph Levien2015-03-301-0/+1
| | | | | | | | | | | | | | | | 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-261-0/+1
| | | | | | | | | | | | | 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
* Remove hardcoded ICU include paths.Narayan Kamath2015-01-051-1/+0
| | | | | | | ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS. bug: 18581021 Change-Id: Ia57b3b4d231966203274b0e7e7b850beb1bd11c0
* Move frameworks/minikin over to libc++.Dan Albert2014-11-111-2/+0
| | | | | Bug: 15193147 Change-Id: I5e15c95415c39515340e2663acd5fd26666db720
* Remove CSS string doLayout entrypoint and supporting codeBehdad Esfahbod2014-07-291-1/+0
| | | | | | | All usage is ported to the new doLayout() API now. Bug: 16651112 Change-Id: I2c959138a69853b5e30098889d771fe5f4cfaa66
* Switch minikin to the new icu.Elliott Hughes2014-07-101-1/+1
| | | | Change-Id: I29a59edfe6102257c9f308aac1b4348ef7a18db7
* Implement grapheme cluster breakingRaph Levien2014-06-191-0/+1
| | | | | | | | | | | | This patch includes an implementation of grapheme cluster breaking, which is especially useful for repositioning the cursor for left and right arrow key presses. The implementation is closely based on Unicode TR29, and uses the ICU grapheme cluster break property, but is tailored to more closely match the existing implementation and expected behavior. Part of a fix for b/15653110 Improve behavior of arrow keys in EditText Change-Id: I8eb742f77039c9ab7b2838285018cf8a8fc88343
* Caching for layouts and harfbuzz facesRaph Levien2014-05-271-1/+2
| | | | | | | | | | | | | | | | | 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
* Do BiDi algorithm for text layoutRaph Levien2014-05-271-1/+2
| | | | | | | | | | | | | 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 4b3a941128454e55893d65433a835e78a9e9781d)
* Better refcounting and lockingRaph Levien2014-05-121-0/+2
| | | | | | | | | | | 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
* A basket of features: itemization, bounds, refcountRaph Levien2014-05-121-1/+3
| | | | | | | | | | | | | | | 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
* Use shared ft2 lib, deal with libpng/zlib depsVictoria Lease2013-06-271-3/+3
| | | | | Bug: 9603326 Change-Id: I7df1f68fa3a44b37b1b279387f4ddfe942928bb0
* Introduce MinikinFont abstractionRaph Levien2013-06-141-0/+1
| | | | | | | | | | | 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
* Initial commit of Minikin libraryRaph Levien2013-04-251-0/+43
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