| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |\ |
|
| | |\
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\ \ \
| |_|/
|/| | |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
namespace naming collision. Move minikin's
Bitmap out of android:: and into minikin::
Change-Id: I5ae3925f81b848dc79576429ab55243b96f7fed2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
New functions for computing the correspondence between cursor
position and advance, respecting grapheme boundaries.
Change-Id: I620378d5f64cd74300cd43db522adeb555825dff
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\
| |
| |
| |
| | |
* commit '79298c346088e13a0ddc93d49f4bb100afdbd14b':
Remove hardcoded ICU include paths.
|
| |\
| | |
| | |
| | |
| | | |
* commit '5870d4f0d46f185568a2d2ea45afe48ae999b223':
Remove hardcoded ICU include paths.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS.
bug: 18581021
Change-Id: Ia57b3b4d231966203274b0e7e7b850beb1bd11c0
|
|\| |
| | |
| | |
| | |
| | | |
* commit '919fbb99f1d5d0c95bf165cec9b7b178b42908ec':
Minikin: Remove unused variables, fix init order
|
| |\|
| | |
| | |
| | |
| | | |
* commit 'cb20a2f0b366bfc16db3a489a60156dec7a9fe21':
Minikin: Remove unused variables, fix init order
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For build-system CFLAGS clean-up, fix unused variables.
Reorder initializer list to initialize in the order of member
declarations.
Change-Id: I64358b2dcf0e39d0f4e18fdc3473de867f84fcba
|
|\| |
| | |
| | |
| | |
| | | |
* commit '58b25145c1a14dd2e45d2b995d4b07d8fe70510c':
Move coverage bitmap from FontCollection to FontFamily
|
| |\|
| | |
| | |
| | |
| | | |
* commit '13f1aae02bacd475722bc8ea3fc2cf6abc1a82e3':
Move coverage bitmap from FontCollection to FontFamily
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\| |
| | |
| | |
| | |
| | | |
* commit 'dc81fbad809f08564199c8f08df7e7f72310961a':
Move frameworks/minikin over to libc++.
|
| |\|
| | |
| | |
| | |
| | | |
* commit '69d4fba2f2b7bb2c248cc0e78cf277a6e44665f8':
Move frameworks/minikin over to libc++.
|
| | |
| | |
| | |
| | |
| | | |
Bug: 15193147
Change-Id: I5e15c95415c39515340e2663acd5fd26666db720
|
|\| |
| | |
| | |
| | |
| | | |
* commit '253320d25fccbb49621926d49dcf5ef64cf529c6':
Move coverage bitmap from FontCollection to FontFamily
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\| |
| | |
| | |
| | |
| | | |
* commit '5f11abd31fa8cfa723f54bd1c98ce4e27e7d3c77':
Silently ignore invalid rangeOffset values
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some fonts contain a cmap segment for char 0xffff that contains an
invalid rangeOffset. This was rejected by the existing code, which
means the font is considered to have empty Unicode coverage. This patch
just discards the invalid segment (consistent with OpenType Sanitizer),
making the custom font display.
Bug: 18106256
Change-Id: Icc8616a3030f80e62db906332be64d434ae72ea2
|
|\|
| |
| |
| |
| | |
* commit 'd5804e3937a961736e5cef0e8a70eacf91ee00bb':
Fine-tune fake-bolding condition
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old logic for fake bolding results in no fake bolding for a bold
span on a light weight (300) because the target weight (600 in this
case) didn't meet the condition. This patch fine-tunes the threshold
to enable fake bolding for this.
Bug: 17587185
Change-Id: I04abd00a74240cbed79c417f81486aa2158b2806
|
|\|
| |
| |
| |
| | |
* commit '6740536e3927d25bf5c2567e5f6e8c175973cbb7':
Snap advance widths to integers
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fractional advance widths were causing subtle problems with text
positioning when the same text was drawn with different spans in the
hwui renderer. Quantizing the coordinates on layout (as opposed to
waiting until the renderer draws the glyphs) solves the problem.
This patch also fixes a discrepancy between x position and advance
widths when letterspacing.
Bug: 17347779
Change-Id: Ia705944047408c2839d5ad078eefd6bbec446872
|
|\|
| |
| |
| |
| | |
* commit '997c799e3ec6bf8adf687e29670d23d91e0f5fee':
Try Unicode decomposition for selecting fallback font
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch finds an appropriate fallback font in the case where no font
directly maps the requested character, but a font does exist for the
character's canonical decomposition. This yields correct rendering of
compatibility characters such as U+FA70.
Bug: 15816880
Bug: 16856221
Change-Id: Idff8ed6b942fec992a0815a32028b95af091d0ee
|
|\|
| |
| |
| |
| | |
* commit '56c7fb8c0633f1b02115bb4370854016f8c84fb4':
Allocate font vector on stack
|