History log of /frameworks/base/core/jni/android/graphics/TextLayoutCache.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
832815cb53e951485ff5a0e6c705446d0bfb5883 02-Oct-2012 Raph Levien <raph@google.com> Fix for bug 7234184 F/TextLayoutCache: Failed to put an entry...

This bug was triggered by user code concurrently mutating the character
array while calling into a drawText method in another thread. When the
value of the array changed, it caused inconsistent state, leading to
assert failures.

This is arguably bad behavior by the user code, but it shouldn't cause a
native crash. The fix is to do a defensive copy of the text into the
key, so the value is guaranteed to remain constant throughout the text
layout process. The change is mostly deletion of code, because there was
an optimization to try to avoid such a copy. That optimization was not
actually effective, however, because the indexOfKey() operation in the
KeyedVector underlying the TextLayoutCache did the copy anyway. Thus,
even though this change looks like it's introducing a copy where there
wasn't one before, the actual performance impact should be nil.

Note that the ability to handle a mutating argument is now part of the
contract for TextLayoutEngine::getValue(), and is now documented. That
contract may change, as the result of future optimization. Also, care
was taken to only use the value after the copy.

Other performance issues with TextLayoutCache are tracked in bug
7271109.

Change-Id: I9c90e8e4d501f3f37e2f22a7851f032808d46fbe
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
13ba4e478d19001ddb6828bd1fd8fbc1e0cb208f 13-Sep-2012 Raph Levien <raph@google.com> Fix for b7155617 race condition in TextLayoutCache.cpp

There was the possibility for a race between clearing the caches and
using fonts. This patch simply protects both under the same mLock held
by the TextLayoutCache object.

Change-Id: Ib366e16a9a9ba702a46bc078d1bc0602713991e5
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
ac1cbaf2e5575ac75a0160e13089d51a0bb232fa 18-Jul-2012 Billy Hewlett <billyh@google.com> DO NOT MERGE Han Preference

Cherry-pick Ib5dd86950156c5a438f25c289acb839206bb455a from master.

Data: label MTLmr3m with "ja" locale attribute, fallback_fonts-ja.xml removed,
as we only need a single fallback font file
Code: Add locale and variant to TextLayoutCache. Paint.java sets textLocale as
the language (for example, "ja") rather than the language/locale concatenated
(for example "ja_JP")

This checkin, along with Change-Id: Id8c91ae0be6cad8a7ef77a0cd5803676290986c1,
allows text view objects to set their locale dynamically and skia will use the
correct font for the locale.

Change-Id: Ieb60b0d7a39fcfef4f8ce90cd4f6065d33673710
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
161ebab85d976320f156cb4e55140533ae15f92d 19-Jul-2012 Raph Levien <raph@google.com> Increase text layout cache size in bytes

The mark positioning changes increase the number of bytes needed per
glyph from 6 to 14. This patch compensates by allocating more total
memory for the text layout cache.

Change-Id: I3cf59547394a41779cf6e92e67688b0fdc85f1a3
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
2301d32f7e2ba584abc31ac177dde754385d3c04 18-Jul-2012 Raph Levien <raph@google.com> Software-only implementation of glyph positioning (bug 5443796)

This patch implements glyph positioning in the Skia-based renderer. Note
that it depends on a fix for bug 6833339 being in place (correct
calculation of advance widths under skew and scale transforms),
otherwise there will be regressions.

Careful attention was paid to correct results in a wide variety of
conditions: alignments, text decorations, scale, skew, etc. Many of
these are exercised in the test app attached to bug 6833339.

Note that this patch also changes slightly the way that the total
advance is calculated - the running is accumulated and passed through to
computeRunValues(), so that the x positions of each glyph can be set
according to the total advance of all glyphs (in all runs) appearing
before (plus, of course, the offset for mark positioning).

After committing this patch, text rendering will no longer match between
the software and hardware rendering cases. Implementing positioning in
the hardware renderer will resolve that, and fully implement bug 5443796.

Change-Id: Ie0f7835d48bc120475a19afbfe159aa5304fcaa8
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
d6deccb346e913d906f484d279b19e0f6ea18d94 22-Jun-2012 Billy Hewlett <billyh@google.com> Remove hardcoded typeface pointers

There were a number of extraneous typeface pointers, one per
language, in TextLayoutCache. Removing these makes adding additional
supported fonts easier. This checkin now properly
unrefs typefaces returned by SkCreateTypefaceForScript. Additionally,
all harfbuzz shaped fonts (with exceptions Greek, Cyrillic, Hangul)
should call SkCreateTypefaceForScript.

Change-Id: I7dcf603a89e5ff52c6dab8fb87ae1807a79c351c
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
f62034d89611fbd3e1d41413847241757acd0c10 26-Jun-2012 Raph Levien <raph@google.com> Initialize shaper offset array. Needed for bug 5443796.

Harfbuzz apparently requires the offset array to be initialized to zero,
otherwise it can report corrupt glyph positions. This change also
contains a small amount of refactoring to avoid code duplication.

Change-Id: I2553974f40bc8e0549876c7d31243960ca92a8a2
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
960511848ade732f7dab838a1625729698c7c952 21-Jun-2012 Billy Hewlett <billyh@google.com> Revert "Revert "Use Elegant fonts for Webkit, Compact fonts for Textview""

This reverts commit 6fadccd2484233ed570218b3f97c085ef1a1ec28
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
6fadccd2484233ed570218b3f97c085ef1a1ec28 21-Jun-2012 Billy Hewlett <billyh@google.com> Revert "Use Elegant fonts for Webkit, Compact fonts for Textview"

This reverts commit ecf80965d05e44b3701b3392aeb02028daacf1b0
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
ecf80965d05e44b3701b3392aeb02028daacf1b0 07-Jun-2012 Billy Hewlett <billyh@google.com> Use Elegant fonts for Webkit, Compact fonts for Textview

Fonts can be marked with elegant or compact in fallback_fonts.xml.
Webkit uses elegant fonts, Textview uses compact fonts (the default),
unmarked fonts are used by both.

Bug: 6649136

Change-Id: Ie0debcddc13350bf60fe3139cd7ae533e466f02b
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
517f67fe4b70c5a1907cb503d62b906a1eed2e1e 05-Jun-2012 Billy Hewlett <billyh@google.com> Fix hardcoded font path. Allow adding new font path thru Skia changes.
Bug: 6609231

Change-Id: I7b28c6f7ac1c227c7059b486635cadb39a6eacc3
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
15cc68ced062a0dbd174718abfb1c783ac1aa433 15-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6495019 Character gets garbled when locale is changed

- add missing cached data clearing. The Shaper was caching the HB_Face so
clear them too
- do minor code refactoring

Change-Id: Ifa86cc63815bdb4b51ce688cf16e986415b1e8c1
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
92d7f9ff1c0c8a179ee935d86d3c94022980ead2 08-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Fix bug #6408393 Character corruption is caused when locale is changed" into jb-dev
30ca5cd11a23f06f2f8eeaa587685450826f800f 08-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6408393 Character corruption is caused when locale is changed

- free the TextLayoutCache on Locale change

- also free TextLayoutCache when memory is low

Change-Id: I39a37ac8ec3c292cfb1c0eea4bb41ff71897d089
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
6162876067cbaa93b870aee6e62c682104935fde 26-Apr-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6318791 Replace the Lohit Devanagari and Tamil with Droid versions

- take care of ttf filename changes and regular/bold versions

Change-Id: Ib71d2537df16ff954cef9619c12d611948d19efe
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
1637dcd16cd314574a58602337a2c7222130b1b9 02-May-2012 Raph Levien <raph@google.com> Use paint typeface for shaping when it supports the requested script.

This is a hackish but workable fix for bug 6415796.

Change-Id: Iaba91e1e53e688a3ee05a1fdb68fd05102e369f2
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
ff40ab7a418dd06cfe4758ceda17a775f2d4c776 28-Feb-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5180841 TextLayoutCache needs to support Indic

- add Tamil and Devanagari shaping support

Change-Id: I331ec52cd1987e157100deb699db27f855881c32
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
a731b082b2c43204e6e9f927ab82fb732934a83b 24-Jan-2012 Fabrice Di Meglio <fdimeglio@google.com> Code cleaning: centralize use of #if USE_TEXT_LAYOUT_CACHE

- also clean some destructors (was not quite compulsory because
they are related to some Singletons)

Change-Id: I3091cac7b38628cda593d72570ba7a5d7ea2a15c
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
bd901dee317d10c6a921922c3d7d788b90306c82 21-Jan-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5846413 "phone" keyboard layout is broken on master

- was a subtle regression introduced when fixing bug #5753006
- as we are now using SkPaint::kGlyphID_TextEncoding (glyph encoding)
instead of SkPaint::kUTF16_TextEncoding (UTF16 encoding), we need to
force the UTF16 encoding in some cases that are NOT going thru
the TextLayoutCache / Harfbuzz shaping

- fix also breakText() the same way

- also clean some old comment

- Warning: depends also on a CL from Skia for having getBaseGlyphCount() "const"

Change-Id: I3d1fc87f070884876c679b33541f810fbfb5df3f
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
a4d077006306b49d85e7609e8f5a061e345f6f6d 14-Dec-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5674155 Segmentation issue for Thai

- force Harfbuzz to shape with the Thai font

Change-Id: I3830acae17385b050e2745fca277cf66af103099
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
65194adc9a5174fc88fb579472799e8b4771796b 14-Dec-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5727213 Rendering issues with Bengali in Textview in IML63B

- force Harfbuzz to shape with the Bengali font
- also fix potential returned NULL value from SkTypeface::CreateFromFile(path)

Change-Id: I25be09d06e449b89bb4a62444e27f77e436b77ba
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
902a5b31c50022a1b7707be4d333e4ce6ec4a8fa 09-Dec-2011 Fabrice Di Meglio <fdimeglio@google.com> TextLayoutCache - fix diacritics composition

- normalize (with ICU) each BiDi run before shaping them

We are normalizing by "chuncks" and starting from the end of the string. Each "chunck"
is composed of the main code point and its associated diacritics.

Fix bug #5738435 TextLayoutCache should be able to take care about diacritics during shaping

Change-Id: I7288027a7fa8eafb8b9f38d449625be60214548a
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
738ef87eacd3e54132d1bf661dd9329050fddd2f 06-Dec-2011 Jeff Brown <jeffbrown@google.com> Ensure log_clusters array is big enough.

Bug: 5714171
Change-Id: I886f1af8af177827f052e6406a192f2fad5c2cec
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
56e6e5492780feb3824ff076551b563aade6a2ef 01-Dec-2011 Fabrice Di Meglio <fdimeglio@google.com> Improve TextLayoutCache logging

- make logs more consistent and readable
- add more logs information

Change-Id: Idfe5bb53e9163c4c07a9b4267b66b0d0e164a498
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
0af10b54bf110653b74cb92793484b412a90b657 19-Nov-2011 Fabrice Di Meglio <fdimeglio@google.com> Improve TextLayoutCache performances

- introduce TextLayoutEngine
- reduce calls to HB_NewFace as they are opening the font files under the cover
- refactor code for removing FontData structure
- fix logging

Change-Id: Id9658fcd454b74c34ecf4e9dfd1bd2201e04b988
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
a4f5aa87c73de7a2581dc4dd72e0f90ccea79a18 18-Nov-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix TextLayoutCache Skia Typeface caching

- fix reference passing for globals

Change-Id: I806dd4406d455b98c6be733847419b06b6774ccc
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
06daa7b6b2186cf1e83e14d2adbb0d2050b79c39 12-Nov-2011 Jeff Brown <jeffbrown@google.com> Improve the logging in TextLayoutCache.

Also deleted some dead code.

Change-Id: I1feb5744177ae751ff1417f49f3c45139a35246b
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
208d4592f6e8db90eab30cfca3dc294731258d1c 09-Nov-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix potential crash when shaping Hebrew with bold

- make code more resilient
- make correct initialization of gHebrewRegularTypeface

Change-Id: I97e98d36b830ad35979184c1459e8c8503eb3d28
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
e187a2f55fe8684c853a0701cbc4a71392f437e0 08-Nov-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5559439 Bogus tab title in browser

- no need to shigt glyph IDs if we are a "common" script
- also code cleaning (suppress dead code)

Change-Id: I17bcf960f925a897a30894a3c581053f7fe5905f
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
ef9bb3c3ea3aa08071ea0c32a505b379c322e5b5 17-Oct-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5438102 Double Arabic harakat overlap instead of stack In TextView

IMPORTANT: this change needs two patches for Harfbuzz:
- one concerning hb_utf16_script_run_prev() which was not returning the correct "previous" script
- one for the "script_properties" table that was missing Arabic code point ranges and declaring
HB_Script_Inherited instead of HB_Script_Arabic

The current change is doing the following:
- pass the correct typeface for Harbuzz shaping (depending on the script of the run)
- offset correctly the glyphIDs returned by Harfbuzz

We need to offset the glyphsID as Harfbuzz will return local glyphIDs (meaning in the
local range of the font used for shapping).

We then cannot use those glyphIDs when we are using a fallback Font (Arabic, Hebrews...)
because the FontRenderer needs glyphIDs in the range of all the Fonts (including the fallbacks)

Change-Id: I494897435bbc59293b02392ee2059cebcdf0e571
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
5c863f741e8e484bb39decd516c9fa4c6322e671 06-Oct-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5371117 Regression : The Hebrew / Arabic text behavior in ICS latest build is wrong

- welcome back start / count
- goodbye log clusters
- clean Paint code
- make private some functions as they should be
- improve memory allocation (create only one Shaper and reuse it for for shaping the runs in
the same input text)

Change-Id: I89a320c7f041319851308c8c9a919fbeafa82cdd
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
717060b076350ea811153290281075396a554fed 28-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Improve TextLayoutCache performances a bit

- the gain is about 5% and the timing is more stable
- use compare_type() and strictly_order_type()

Change-Id: Iab81869a8ba461ce786a468b6c59b8f34e8db838
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
79df5323e7ed541b854cea5684a89e8be8c2dfc9 20-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5332081 TextLayoutCache needs to be able to have more cache hits

- makes TextLayoutCache not carring about start/count. Basically he will cache the result for
the full string and gives back the "chunk" corresponding to start/count
- changed the TextLayoutCacheValue API to take start/count parameters
- add Harfbuzz LogClusters in TextLayoutCacheValue as it is needed for extracting the start/count "chunk"

Change-Id: I4b38a4442428606de9a093303bbbe98181e1f89c
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
4dd99e5912c73d5a9db165cefd4852b51ea438e8 19-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> TextLayoutCache code refactoring

- use vector (instead of array) for advances and glyphs
- reverse glyphs directly in computeRunValuesWithHarfbuzz() (instead of reversing them after)

Change-Id: I716a8f914fd043818d7cb80cca76ee5fb0effb96
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
e74fef3b55dc1b5daf40b3a6aea857582071560f 18-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix potential leak in TextLayouCache

- need a copy constructor for the key as the GenerationCache we are using
is actually a KeyedVector<K, sp<Entry<K, V> > >
- use the getText() API to access the text in the cache key

Change-Id: I5b60ebc062b62308ed7ac1284cfe2a9f28e2b8b1
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
9c418dbc56efd334c68872d281f75138e16eae46 18-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Revert "Fix bug #5332081 TextLayoutCache needs to be able to have more cache hits"

This reverts commit d686d76814f18061e06995df0d5de9feb9f70a7e
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
d686d76814f18061e06995df0d5de9feb9f70a7e 14-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5332081 TextLayoutCache needs to be able to have more cache hits

- makes TextLayoutCache not carring about start/count. Basically he will cache the result for
the full string and gives back the "chunk" corresponding to start/count
- changed the TextLayoutCacheValue API to take start/count parameters
- added the Harfbuzz LogClusters in TextLayoutCacheValue as it is needed for extracting the start/count "chunk"
- fix potential issue of cache key leaking

Change-Id: I9276f9bec744e8de36349acfba8429f7c6f83394
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
163268b3a8d4dd7e650e6c540f832bf60f6bf4c9 08-Sep-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5274332 TextLayoutCache is having multiple instances

- also fix the missing LOG_TAG define

Change-Id: I25e96d1ba372e84768604f18702e0724fdecefb0
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
c2063a5b18bc2e54f000b411c82f43992a53854e 18-Jul-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5037425 Canvas.drawText can't handle Right-to-Left text and text composing

- optimization for single run case was broken
- pass isRTL boolean along the call stack instead of the dirFlags integer
(which was only used as a "isRTL" in the shaper)
- update unit tests

Change-Id: I33110b76a433633a0b92fbd1db03785204e0c3e6
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
010d5c4e5ba7a229f621f08f5d1c5cbff7643402 22-Apr-2011 Fabrice Di Meglio <fdimeglio@google.com> TextLayout cache - update size and improve logging

- set size to 256K
- add pid logging
- fix percent gain computation

Change-Id: Id6da4d606147294e05597022414531c346860f45
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
689e515ed2b8064c15e54d8ab69d87de54c5e0d6 14-Apr-2011 Fabrice Di Meglio <fdimeglio@google.com> Add Unicode BiDi Algo before drawing text in Canvas

- only for temporary API
- update BiDiTest

Change-Id: Ifd445799dc0fda4da896246e41978cd8d71aa035
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
fcf2be1846935e7983ea2fe87fdd4d7af27764b6 06-Apr-2011 Fabrice Di Meglio <fdimeglio@google.com> TextLayoutCache - add glyphs caching

- cache glyphs after Harfbuzz shaping
- use "m" prefix for member variables
- add temporary API for drawing text with glyphs
- update BiDiTest app

Change-Id: I619b3f313b15f010018daad21b3e5e486619b4e4
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
48796a81be31e42ee267347156c94445cb9fb67a 06-Apr-2011 Fabrice Di Meglio <fdimeglio@google.com> TextLayoutCache - more code refactoring

- move code from .h file to .cpp file

Change-Id: Ib8201a20e2767ef5d92707a6f4d8d79a3673e04d
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
1de9e7a9dffb4391a446000f748e4c017d948f6b 05-Apr-2011 Fabrice Di Meglio <fdimeglio@google.com> Code refactoring for TextLayoutCache

- rename TextLayoutCache entry name
- update references to old name
- better variable names in TextLayoutCache::getRunAdvances()

Change-Id: I5173fbc8af79437ce4786084580426f130120ce8
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
0fb1ac0038c9e67b5f321aa2ec7f7bfec5db6db2 31-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Merge "Code cleaning - suppress non useful code"
99e95b0e1228dfeb2813590eedbef877ed2bd421 31-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Code cleaning - suppress non useful code

Change-Id: I3f3bffdd1f5d64a6b601d56bee3b5fc8147086bd
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
aabe537f1ed3b64f755af9fc62022d6074eec169 31-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Update TextLayoutCache key for supporting more SkPaint properties

Change-Id: I35bb991e536e662c1a0724ab7e311fba3d52487a
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
eee49c699c035ffba188417489f40d34f587d65c 25-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix text redering issue where the text was sometimes truncated

- mostly was visible in Settings apps / Wi-Fi networks summary info for each network
- correctly setup the local SkPaint for advances computation
- improve test app for adding live resizing

Change-Id: Ia031fe1b115b521ba55c7e68f2a26300f02e48ca
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
251ae9a7b466fe3938db359e3a61a198b315c40c 25-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix text redering issue where the text was sometimes truncated

- mostly was visible in Settings apps / Wi-Fi networks summary info for each network
- use ceilf() instead of roundf()

Change-Id: I80310a9f00e8f7eb066d8ff03f52ea8f9cd85880
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
9f82b580d744ce4baf057b061994394dcf239eed 08-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Use Harfbuzz instead of ICU4C for computing advances

- use Harfbuzz shaper for shaping and getting glyphs
- add test app for showing result of drawText() and drawGlyphs()
- add private API in Canvas and Paint for test app

Change-Id: Ia15be216f8636d2d864066e9b7de2f53008c30f6
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h
d313c665e618af3194f504064bcd284fe5368682 25-Feb-2011 Fabrice Di Meglio <fdimeglio@google.com> Add TextLayout Cache

- use GenerationCache for caching
- move GenerationCache.h from libs/hwui/utils to include/utils
- add #define for cache activation / deactivation

Change-Id: Ifaf519f0b5e33b087a453e4aa6430162d8438f20
/frameworks/base/core/jni/android/graphics/TextLayoutCache.h