History log of /external/skia/src/core/SkGlyph.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c1e97b372e21edf9c7e45cfea0eca7f1a52fe9e5 05-Mar-2015 herb <herb@google.com> Fix uninitialized memory bug in the SkGlyphCache.

The core of the problem is that the system is asked to lookup the metrics for a character with id == 0. This causes a hit in the fCharToGlyphHash matching the sentinel glyph. This happens because fCharToGlpyhHash is initialized with all zeros, therefore, the fID is zero matching the char with id == 0. The fAdvanceX field of the sentinel glyph is in fact not initialized.

The bigger question is now did a zero character get passed to getUnicharMetrics?

The breaking code is basically as follows:
wchar_t glyph = L'S';
paint.measureText(&glyph, 2);

This get mischaracterized as a utf8 string instead of a utf16(?) string. Because of the little endian ordering, this is the character string 'L' '\0'. Since the size of the original string is two bytes (but a single character) the '\0' is treated as its own character and past to getUnicharMetrics.

TEST:
On windows failed using DrMemory. With this change does not fail.

BUG=463204

Review URL: https://codereview.chromium.org/977063002
/external/skia/src/core/SkGlyph.h
e70de9e4f0b7bf73f7cd1a20dbabcb233ffbb7f1 27-Feb-2015 herb <herb@google.com> Make the glyph array entries inline.

Perf Reports
bin/c --match nytimes --config 8888
desk_nytimes.skp_1_mpd 1.41ms -> 1.38ms 0.98x
desk_nytimes.skp_1 1.94ms -> 1.87ms 0.97x

bin/c --match nytimes --config gpu
desk_nytimes.skp_1_mpd 1.63ms -> 1.59ms 0.97x
desk_nytimes.skp_1 1.56ms -> 1.5ms 0.97x

Here are results from mac instruments:
--match nytimes --config gpu --samples 10000 --skps /Users/herb/src/skia/skps

Inline:
Total Samples Running Time Self Symbol Name
94335 94335.0ms 98.3% 0.0 start
2365 2365.0ms 2.4% 2365.0 SkGlyphCache::getGlyphIDMetrics(unsigned short, int, int)
975 975.0ms 1.0% 975.0 SkGlyphCache::lookupMetrics(unsigned int, SkGlyphCache::MetricsType)

Clean:
Total Samples Running Time Self Symbol Name
96833 96833.0ms 97.3% 0.0 start
3418 3418.0ms 3.4% 3418.0 SkGlyphCache::getGlyphIDMetrics(unsigned short, int, int)
1961 1961.0ms 1.9% 1961.0 SkGlyphCache::lookupMetrics(unsigned int, SkGlyphCache::MetricsType)

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/4c08f16b252a55e438a61f26e5581394ed177da1

Committed: https://skia.googlesource.com/skia/+/b4c29ac173e6f8844327338687248b98bc94132d

Review URL: https://codereview.chromium.org/885903002
/external/skia/src/core/SkGlyph.h
b69d0e0ac45e13f667bc11a937dcb547072bc93d 25-Feb-2015 herb <herb@google.com> BUG=skia:

(mtklein from here on)
No public API changes.
TBR=reed@google.com

Committed: https://skia.googlesource.com/skia/+/f8d24e2c0c7b44b7ccf20e40890514db4cde7b15

Review URL: https://codereview.chromium.org/939123002
/external/skia/src/core/SkGlyph.h
e59bbf1cd5dcce66181083821c43a157998bc78b 24-Feb-2015 scroggo <scroggo@google.com> Revert of Make fID and MixedID calculations private (patchset #5 id:80001 of https://codereview.chromium.org/939123002/)

Reason for revert:
This actually *does* change the public API - fID is now private, and it was being used on Android. See https://android-build.storage.googleapis.com/builds/git_master-skia-linux-volantis-userdebug/1751533/5242b865d3e9bebc650c9b326dfa9d68c8bd1f59562bf32b85301fb984dc8b26/logs/build.log?Signature=Q0el9M4kTu1KQ8u02KX9TH1Pa22y9BkDK1IW%2B9OeJJNfrDEVzLXAz0XQ%2BHHQM8xVjft06jZJva1V8InZmgjcOk6PdZQbQW6XwwsHLKsbpbAE48iTWH3AlJAAoTtj9cifzgeHW8g80IcVxwHXmINRER%2BLPz3eHGisgfTTFUoWYCc%3D&GoogleAccessId=701025073339-mqn0q2nvir9iurm6q5d00tdv7blbgvjr%40developer.gserviceaccount.com&Expires=1424786471 :

In file included from frameworks/base/libs/hwui/tests/../font/Font.cpp:26:0:
external/skia/src/core/SkGlyph.h: In member function 'android::uirenderer::CachedGlyphInfo* android::uirenderer::Font::cacheGlyph(const SkPaint*, glyph_t, bool)':
external/skia/src/core/SkGlyph.h:157:17: error: 'uint32_t SkGlyph::fID' is private
uint32_t fID;
^
frameworks/base/libs/hwui/tests/../font/Font.cpp:482:39: error: within this context
newGlyph->mGlyphIndex = skiaGlyph.fID;

We need to update Android in order to hide fID.

Original issue's description:
> BUG=skia:
>
> (mtklein from here on)
> No public API changes.
> TBR=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/f8d24e2c0c7b44b7ccf20e40890514db4cde7b15

TBR=mtklein@google.com,herb@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/951353002
/external/skia/src/core/SkGlyph.h
f8d24e2c0c7b44b7ccf20e40890514db4cde7b15 24-Feb-2015 herb <herb@google.com> BUG=skia:

(mtklein from here on)
No public API changes.
TBR=reed@google.com

Review URL: https://codereview.chromium.org/939123002
/external/skia/src/core/SkGlyph.h
5a2a5e729c081aa8ddfaab3311b7730622689abf 09-Feb-2015 mtklein <mtklein@google.com> Revert of Make the glyph array entries inline. (patchset #11 id:190001 of https://codereview.chromium.org/885903002/)

Reason for revert:
Still broken.

Original issue's description:
> Make the glyph array entries inline.
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/4c08f16b252a55e438a61f26e5581394ed177da1
>
> Committed: https://skia.googlesource.com/skia/+/b4c29ac173e6f8844327338687248b98bc94132d

TBR=reed@google.com,herb@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/911513003
/external/skia/src/core/SkGlyph.h
b4c29ac173e6f8844327338687248b98bc94132d 09-Feb-2015 herb <herb@google.com> Make the glyph array entries inline.
BUG=skia:

Committed: https://skia.googlesource.com/skia/+/4c08f16b252a55e438a61f26e5581394ed177da1

Review URL: https://codereview.chromium.org/885903002
/external/skia/src/core/SkGlyph.h
9bf4e5bbf6ca96042c0e0f5dca9a52a943f25716 03-Feb-2015 bsalomon <bsalomon@google.com> Revert of Make the glyph array entries inline. (patchset #10 id:170001 of https://codereview.chromium.org/885903002/)

Reason for revert:
I suspect this is causing the off-by-one character issues that show up in gold.skia.org as of now. All the errors I've seen are on a Win7 bot. Example:

good:
https://gold.skia.org/img/images/35396bb0d299b81c0031dc0632a019d4.png

bad:
https://gold.skia.org/img/images/484e511f9e696d95031cd25aeae59da0.png

Original issue's description:
> Make the glyph array entries inline.
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/4c08f16b252a55e438a61f26e5581394ed177da1

TBR=mtklein@google.com,reed@google.com,herb@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/897463004
/external/skia/src/core/SkGlyph.h
4c08f16b252a55e438a61f26e5581394ed177da1 03-Feb-2015 herb <herb@google.com> Make the glyph array entries inline.
BUG=skia:

Review URL: https://codereview.chromium.org/885903002
/external/skia/src/core/SkGlyph.h
a27b82ddf0fad959371a4ab1fba931826edb2f54 07-Jan-2015 jvanverth <jvanverth@google.com> Remove distance field generation and storage from SkGlyphCache.

BUG=skia:3103

Review URL: https://codereview.chromium.org/834103004
/external/skia/src/core/SkGlyph.h
d54d3fc82456f8789b3e4dff40faeb7b670bcf4b 13-Nov-2014 reed <reed@google.com> remove unused kLCD_MaskFormat

BUG=skia:

Review URL: https://codereview.chromium.org/728673002
/external/skia/src/core/SkGlyph.h
b2f7fce9e034c3b6749e75a129e7836df3529706 28-Aug-2014 Ben Wagner <bungeman@google.com> DirectWrite to use aliased if ClearType is empty.

Some CJK fonts with some versions of DirectWrite return valid
data for bitmaps, but not for cleartype data.

For reference, two screenshots. M37 Stable and then with this patch:

http://imgur.com/9pf3rB9,EiTb6Li

See https://code.google.com/p/chromium/issues/detail?id=396624#c10 for
content of test html file.

R=eae@chromium.org, reed@google.com, shrikant@chromium.org, bungeman@chromium.org, cpu@chromium.org
BUG=chromium:407945

Review URL: https://codereview.chromium.org/504343007
/external/skia/src/core/SkGlyph.h
1b27704eba15be4e9d1997faac42038493a30be5 06-Aug-2014 djsollen <djsollen@google.com> Remove ALL font fallback logic from Skia.

R=reed@google.com, bungeman@google.com, caryclark@google.com

Author: djsollen@google.com

Review URL: https://codereview.chromium.org/434623002
/external/skia/src/core/SkGlyph.h
762cd804375ff8478427dba4fe29379562b8fb60 15-Apr-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Move distance field generation to the glyph cache.

Distance fields are currently created in GrTextStrike, which is the wrong place. This moves that to the glyph cache where it belongs.

As part of my testing, I found that when we fall back to paths in the GrDistanceFieldTextContext it was not scaling them properly, so that's fixed in here too.

R=robertphillips@google.com, reed@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/227593010

git-svn-id: http://skia.googlecode.com/svn/trunk@14193 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/core/SkGlyph.h
d02d4fffad32e852695cff5d8310ffc9ca656c67 12-Aug-2012 mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> privatize SkGlyph.h



git-svn-id: http://skia.googlecode.com/svn/trunk@5048 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/core/SkGlyph.h