Minikin has a special font fallback for VS15/VS16, so
hasVariationSelector for emojis with VS15/VS16 should always return
true.
Bug: 27531970
Change-Id: Ieebd58f48b135b6ec50d999df68dcc09b1284606
There was the possibility of stale indents from previous invocations
persisting in the mLineWidths across multiple invocations. This patch
clears them.
Bug: 28090810
Change-Id: I3621dfbe983512046289373711709aeade52eab4
This CL fixes following test cases in minikin_tests
- FontFamilyTest.hasVariationSelectorTest
- HbFontCacheTest.getHbFontLockedTest
- HbFontCacheTest.purgeCacheTest
For the fix of FontFamilyTest.hasVariationSelectorTest, removing virtual
from GetUniqueId() in MinikinFont. After [1], MinikinFont's destructor
started calling purgeHbCache() which calls virtual method,
MinikinFont::GetUniqueId(). Fortunately, the SkTypeface::uniqueID()
returns just internal value, so we can store it at the construction time
and use it instead of calling SkTypeface::uniqueID() every time.
This patch also changes purgeHbFont to purgeHbFontLocked, as all uses of
it were already under global mutex. This change avoids deadlock on
explicit unref, as when invoked by a Java finalizer from the Java object
that holds a reference to the font.
Some of the tests needed to change to using the ref counting protocol
rather than explicitly destructing font objects, as well.
[1] 9afcc6e2bd4d89e4e1deb6e18c3c4daca4e114fd
Bug: 28105730
Bug: 28105688
Change-Id: Ie5983c4869147dacabdca81af1605066cd680b3f
The PlatformView may not receive the surfaceDestroy notification before its
activity is destroyed (this was happening on the Android emulator).
If this happens, allow the PlatformView to be detached and have it release
its window during destruction.
am: bfc161d
* commit 'bfc161d8fa1f1d5d4a2284b3d5beef2045c96176':
Update minikin/sample code to use new GetTable
Change-Id: Idd6063401cdb1399bac52c975a32a0a0b221652f
Dart has the tendency to call `exit()` on arbitrary threads. This causes
the assertion to trip. Since this should only happen when Dart is
running the shell in non-interactive mode, we leak the message loop
without proper shutdown.
We should never hit this path on iOS.
am: 29abb82
* commit '29abb82198868908ece4600284fa8b7d3ed73f3b':
Update minikin/sample code to use new GetTable
Change-Id: I5fcae79c42322dcc0533dbd3eb1a51007e089170
We changed the signature of the MinikinFont::GetTable method. This
patch updates the sample code, and fixes the build.
Change-Id: I1977be868bf7636986fc802915f3dd54c418a73a
This patch cleans up the public Java interface to the Flutter engine. The code
that we intend to be re-usable is now in the io.flutter.view package. The two
public classes are:
* FlutterMain, which controls initialization of the system, and
* FlutterView, which is an Android view that hosts a Flutter app.
We'll need to interate on these interface over time, but at least these names
are more reasonable.
The hb_font_t object holds on to tables of font data, acquired through
the MinikinFont::GetTable interface, which is based on copying data
into caller-owned buffers. Now that we're caching lots of hb_font_t's,
the cost of these buffers is significant.
This patch moves to a different interface, inspired by HarfBuzz's
hb_reference_table API, where the font can provide a pointer to the
actual font data (which will often be mmap'ed, so it doesn't even
consume physical RAM).
Bug: 27860101
Change-Id: Id766ab16a8d342bf7322a90e076e801271d527d4
am: aa49542
* commit 'aa49542698ca22f2e70418a33d4829ab93e433f2':
Purge hb font on Minikin font destruction
Change-Id: If40c31c90bf4f12fdd882be4f2c6f9b35ba2d09c
am: 9afcc6e
* commit '9afcc6e2bd4d89e4e1deb6e18c3c4daca4e114fd':
Purge hb font on Minikin font destruction
Change-Id: Idb2034353407e8b390cc07862803f846d5adea0c
This patch eagerly purges the corresponding hb_font_t object from
the HbFontCache when the underlying MinikinFont is destroyed. After
that, the key will no longer be accessed, so having the entry is
wastes memory.
Bug: 27251075
Bug: 27860101
Change-Id: I1b98016133fe3baf6525ac37d970a65ddccadb4f
am: 5f7df3e
* commit '5f7df3eca54701632ee28733ab2412351e5cddd7':
Support multiple locales for font language settings.
Change-Id: I27df2a2d6de262599931a16a9a65030149ee8991
am: f3afe92
* commit 'f3afe92def0fff022889fd036d68451223aac146':
Support multiple locales for font language settings.
Change-Id: Iad60bf1c01f309e70c3b1ad22e28b22afe44b33f
Currently there's no good way of synchronizing layout changes with children in
Mozart. Previously we flickered when we were out of sync with our child. Now we
jank instead because that's a more acceptable artifact while we work on
improving Mozart.
Fixes https://github.com/flutter/flutter/issues/3024
Some fonts support multiple scripts, for example, some fonts for
Korean supports not only "Kore" but also "Jamo".
To select fonts based on their multiple languages, this CL introduces
the following changes:
- Compares all languages of the font family and use the maximum score
for font selection.
- Even if each language of the font family doesn't support the requested
language, the font get score of 2 if the requested font is covered by
all of the languages of the font family. For example, the font for
"ko-Hang,ko-Hani" gets score of 2 for the requested language "ko-Kore".
Bug: 26687969
Change-Id: I7f13b51464c9b01982bb573251d77052b9ddbd70