In the case where the input is a base codepoint + a variation selector,
the code currently checks hasVariationSelector and then does a layout,
checking for a single glyph. However, HarfBuzz in some cases will change
the VS into a space glyph, so hasGlyph will return false.
This patch makes hasGlyph rely entirely on the hasVariationSelector
method in the case of a base codepoint + a VS
Bug: 27531970
Bug: 28182689
Change-Id: Id190c427149213509f2d779ec1aa330feb4b62d8
- Or to be specific, SurfaceFlinger can’t easily take 565 screenshots,
so convert them when creating the ashmem bitmap.
Bug: 28151300
Change-Id: Ic7586659a41cc19c322136f77a1c52ef68c22707
Minikin is changing its approach to table access to use HarfBuzz to
access the tables, based on raw font data, rather than calling the
MinikinFont::GetTable() virtual method. This patch provides raw access
to the font data to make this work.
There's a bit of plumbing to make sure fonts get a pointer to the raw
data as well.
Bug: 27860101
Change-Id: I638e18cf363644bf22fbc9fb9b3358a9e731087f
By Noto font update, now it has a special glyph for unsupported flags.
Paint.hasGlyph should return false in this case even if it has a glyph.
Bug: 27999343
Change-Id: Icbd31db83d945d66de1477aa888275f6c0ef79b0
Fixes: 25760687
The recommendation floating around is to ignore this even
though it's unquestionably an app bug so just remove it.
Change-Id: I7075de5d2864874d786a0aab0c945be96de172e3
When this code was refactored to support the new RegionDecoder it appears that
we dropped a call to bump the genID. Adding it back is functionally correct
and should fix the recycling issue.
bug: 26617759
Change-Id: I966d398ca983edb40040e01345799b3cc9957fe0
When decoding from a file descriptor, if the descriptor is seekable and
has no offset, use SkFILEStream directly instead of wrapping in an
SkFrontBufferedStream.
This will let the SkRawCodec take advantage of a seekable stream.
One can see 2x speed up for RAW cases.
Bug: 27097104
Change-Id: I369fbb3af1170c94ec7cd9bb35e8e0007dde9fd5
This fixes a TODO to use kUTF32_TextEncoding directly. This avoids
encoding UTF32 codepoints from HarfBuzz into UTF16 to pass to Skia,
which will then re-decode to UTF32. This also removes a use of
SkUtils.h which Skia desires to move to private use.
Change-Id: I087f4216c25f7874e496920cd33e2f109530c397
measureText is a light weight method dedicated to measure text width.
With this CL, breakText, doRunAdvance and doOffsetForAdvance use
measureText.
Bug: 24505153
Change-Id: Ibd62de2e0fe2e196cf07472f2270cc8c6325daab
With ttc and gx variation fonts, it is now possible and common that a
number of fonts will use the same font file for data but with different
parameters. In the current code each font will map the font file data,
taking up an unecessary amount of virtual address space and is
inefficient with respect to memory management (like the tlb). This CL
deduplicates these file mappings so that a given font file will only be
mapped into memory once.
DO NOT MERGE
Change-Id: I5ca69f963a434c72ec4028402ecbf9e0f0ee7148
(cherry picked from commit fffcf0a31f)
This adds an 'axis' child element to the 'font' element. The 'axis'
element has attributes 'tag' (a four byte identifier) and 'stylevalue'
(a float value) to the parser. This also modifies reading the font file
name in a backwards compatible fashion by using only the direct #text
children of the 'font' element. (Both the Minikin and Skia parsers now
allow the font file name on a separate line in the fonts.xml file).
This information is then passed through to Skia in order to select the
desired variation. The Skia parser already parses this way and has for
some time, so Chrome and WebView can already read this format.
Change-Id: I15623fe864fa92b2bf0705af5e389daedfb77e5c
(cherry picked from commit b8e367fb74)
This should not change decode behavior, but it's worth noting that
the number of bytes buffered will decrease from 64 to 30.
Change-Id: I66b0e38a487c1786823b0125686b094dae5d13dc
This is used by BitmapRegionDecoder to decode into a recycled
bitmap.
Since the specification does not guarantee that the recycled
bitmap will be larger than the decoded region, we must be careful
to only to copy min(recycledHeight, decodeHeight) rows.
This should fix flakiness in the BitmapRegionDecoderTest on cts.
BUG:26978886
Change-Id: I318468b0eaa67bd9a7860824f75d45df9bf5fbce
This only affects kIndex_8 Bitmaps, which can only be created by
decoding particular images (e.g. GIF). Without locking the SkBitmap,
colorTable() always returns NULL. Lock it so we can write the color
table to the Parcel.
BUG:26527976
Change-Id: Ifc54b06ca08db26ba6455a3830b7e671b64f37c4
We updated the API of SkShader (changed in
https://codereview.chromium.org/1553743002) but the function still does
the same thing. As such, undo the changes in
f4eca05cdc19c095cdc0a9140d512737533a87c5 which call the method
differently.
BUG:26549769
This partially reverts commit f4eca05cdc19c095cdc0a9140d512737533a87c5.
Change-Id: I52f2fab7da748cfe351e2fa27ade24aa572176a7