| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
The previous commit, 6e2cccdc518f8d3424c84ae6fbe0e87ae3c3f66a, was
incompletely cherry-picked. This adds the missing parts.
Bug: 24570591
Change-Id: I1097c60587fb8a88cfe6b8ffed5b1689d9bdd429
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
| |
New functions for computing the correspondence between cursor
position and advance, respecting grapheme boundaries.
Change-Id: I620378d5f64cd74300cd43db522adeb555825dff
|
|
|
|
| |
This reverts commit 0b25d5ac85533f64764a0d53d5e5d33b46b715fa.
|
|
|
|
|
|
| |
This reverts commit daf6a6bdbf2ff1f66496d6200cb253e2f50759d5.
Change-Id: I3fed65046274d3aeb748f0730585ab89927f5741
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS.
bug: 18581021
Change-Id: Ia57b3b4d231966203274b0e7e7b850beb1bd11c0
|
|
|
|
|
| |
Bug: 15193147
Change-Id: I5e15c95415c39515340e2663acd5fd26666db720
|
|
|
|
|
|
|
| |
All usage is ported to the new doLayout() API now.
Bug: 16651112
Change-Id: I2c959138a69853b5e30098889d771fe5f4cfaa66
|
|
|
|
| |
Change-Id: I29a59edfe6102257c9f308aac1b4348ef7a18db7
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Bug: 9603326
Change-Id: I7df1f68fa3a44b37b1b279387f4ddfe942928bb0
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
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
|