This lays the groundwork for making SparseBitSet serializable.
FontFamily.addFont is only used when the FontFamily is constructed.
Thus, instead of calling FontFamily.addFont multiple time, passes
Font list to the constructor. By this change, FontFamily can be
immutable now.
By making FontFamily immutable, We can create FontFamily with
pre-calculated SparseBitSet.
Bug: 34042446
Test: minikin_tests has passed
Change-Id: I2576789fba6cb27687e920e2488e8bedbcf7d36f
This will handle installation for local builds as well as for the test
bundles.
Test: m -j minikin_tests; ls $OUT/data/nativetest*/minikin_tests
Test: m -j continous_native_tests dist; zipinfo -1 out/dist/*continuous_native_tests*.zip
Test: /data/nativetest{,64}/minikin_tests/minikin_tests
Change-Id: Iafd31fa119e7c4d92937ca8ae8346e268a6c1f38
Merged-In: Iafd31fa119e7c4d92937ca8ae8346e268a6c1f38
This will handle installation for local builds as well as for the test
bundles.
Test: m -j minikin_tests; ls $OUT/data/nativetest*/minikin_tests
Test: m -j continous_native_tests dist; zipinfo -1 out/dist/*continuous_native_tests*.zip
Test: /data/nativetest{,64}/minikin_tests/minikin_tests
Change-Id: Iafd31fa119e7c4d92937ca8ae8346e268a6c1f38
Change language score calculation in the calculation of the font family.
Instead of language and script matching, a match in subtag is added.
In addition, a match in subtag has a higher priority than a match in
script. The score levels are divided into 5 score levels and the limit
of the number of font languages is changed to 12 from 17. Multiple
languages selection rule could to be added in the future.
Bug: 31608997
Test: Done by unittests.
Change-Id: I1e7177095f604fd1794bc99ca36c705dcb4c56e7
minikin_tests was copying its test data to
$OUT/data/DATA/nativetest/minikin_test, and then packaging that with
LOCAL_PICKUP_FILES=$OUT/data/DATA, which would also pick up anything
any other module copyied to $OUT/data/DATA. $OUT/data/DATA isn't
where the tests expect to find their data, they look in
/data/nativetest/minikin_test. Copy the files to the intermediates
directory instead.
A future change will install LOCAL_PICKUP_FILES for local builds
to the correct place, so adb sync and
adb shell /data/nativetest/minikin_tests/minikin_tests will run the
tests.
Test: mma -j
Change-Id: I808ce743f51e5ccac711e22821e7e0d7cd94ffdf
Parse Emoji subtag and store into 4 different styles: default, text,
color and empty. Replace hasEmojiFlag function with getEmojiStyle to
get effective status according to script and subtag. However, score
calculation for the font selection needs to be completed in the next
stage. No performance regression is observed with this CL.
Bug: 31608997
Test: Done by unittests.
Change-Id: I923243641c946248dd5a0aa9fb9c940515310d34
This is 2nd attempt of Ifcd7a348d7fb5af081192899dbcdfc7fb4eebbf9
After Id766ab16a8d342bf7322a90e076e801271d527d4, GetTable is no longer
used in production due to poor performance and it is now only used in
tests. This CL removes GetTable interface from MinikinFont and update
tests code to use new interfaces, GetFontData, GetFontSize and
GetFontIndex.
Bug: 27860101
Test: Manually done
Change-Id: Ib48973ff25cdc61a4c666d28128266df0aaea83e
Add a wordSpacing paint parameter, which will be used for
justification.
Bug: 31707212
Test: ran minikin_tests
Change-Id: I91224ab8ef882ac0c87425c28ab731fead283612
This reverts commit 7b02f5e95c4386c250f6f83db1ff61b69177140e.
This causes a crash on Android Auto.
Bug: 32374752
Change-Id: Ia2ff77bf9a12351c6949f79ef6fa2d8016e3022d
After Id766ab16a8d342bf7322a90e076e801271d527d4, GetTable is no longer
used in production due to poor performance and it is now only used in
tests. This CL removes GetTable interface from MinikinFont and update
tests code to use new interfaces, GetFontData, GetFontSize and
GetFontIndex.
Bug: 27860101
Test: Manually done
Change-Id: Ifcd7a348d7fb5af081192899dbcdfc7fb4eebbf9
This is partial revert of Iced1349e3ca750821d8882c551551f65bb569794.
Due to sorting of target family vectors, the font family order from XML
settings file is broken. Making unique operation stable doesn't fix the
issue completely since some font families are appended for the fallback
which also breaks the original order.
By this change, itemization becomes 3x slower than before if variation
selector is appended.
Bug: 29585939
Change-Id: I7c1a8a57f04111a30cd41a5cd5bec25fcfb3972e
These modules can be named the same between the target and host
libraries, which simplifies references to them, particularly in
Soong.
To prevent accidentally loading the system copy of the library,
we still rename the installed name to be libicu*-host.so. But
modules do not need to know that in order to build against them.
Change-Id: Ic38499bb236ace75333a84f23798af023e14cf5f
Skia is moving to returning smart pointers from its factory methods.
This updates uses of SkTypeface::CreateXXX to SkTypeface::MakeXXX and
generally updates use of SkTypeface to sk_sp. This will allow for the
removal of the SK_SUPPORT_LEGACY_TYPEFACE_PTR define.
Change-Id: If3e600c6cb86080576667bc77d427da4f6560afa
Unicode recommends that the zwj sequences should be emoji presentation
even if they don't have the proper U+FE0F. Thus always lookup the glyph
for the code point before and after zwj as if they have a U+FE0F
variation selector.
Bug: 30056627
Change-Id: I03958a92337eaba4a8dd9c5be824b2665aa4a103
FEMALE SIGN(U+2640), MALE SIGN(U+2642), StAFF OF AESCULAPIUS(U+2695)
will be used as the ZWJ sequenced in gender balanced emoji sequence.
To be in the same run with ZWJ, mark these emoji as sticky chracters.
With this fix, Female police officer sequence will be shown correctly
regardless of VS16.
Bug: 30026374
Change-Id: I503fc061eaa943d45208bb69e885151610c430ce
Unicode recommends that the zwj sequences should be emoji presentation
even if they don't have the proper U+FE0F. Thus always lookup the glyph
for the code point before and after zwj as if they have a U+FE0F
variation selector.
Bug: 30056627
Change-Id: I03958a92337eaba4a8dd9c5be824b2665aa4a103
FEMALE SIGN(U+2640), MALE SIGN(U+2642), StAFF OF AESCULAPIUS(U+2695)
will be used as the ZWJ sequenced in gender balanced emoji sequence.
To be in the same run with ZWJ, mark these emoji as sticky chracters.
With this fix, Female police officer sequence will be shown correctly
regardless of VS16.
Bug: 30026374
Change-Id: I503fc061eaa943d45208bb69e885151610c430ce
This CL introduces performance tests for FontCollection.
To support TTC file in /system/fonts, this CL also extends FontTestUtils
Bug:29142734
Change-Id: I9d8ad24ca55f61031b85623ab7c26234239e4f41
This CL introduces performance tests for following three modules:
- Hyphenator
- WordBreaker
- GraphemeBreak
During using UnicodeUtils, need to decouple it from gtest since
perftest doesn't have gtest dependencies.
Bug:29142734
Change-Id: I700c662fa7d0a52f19d8e93150ad1a85dc28769f
This fixes following three memory leaks in test utilities.
There is no problem in production code and this CL doesn't affect
any production behaviors.
- SkTypeface leaks due to forget calling SkSafeUnref in dtor.
- MinikinFontForTest leaks during constructing FontCollection.
- FontCollection leaks due to unnecessary AddRef.
Change-Id: I22e1e0307f1b2499296acb1aacc3ef66076a36e9
Here is a new policy of the namespace of minikin.
- All components should be in minikin namespace.
- All tests are also in minikin namespace and no anonymous namespace.
Bug: 29233740
Change-Id: I71a8a35049bb8d624f7a78797231e90fed1e2b8c
To add perftests and reuse some utility classes, reconstruct
test directory structure.
- Move unit tests from minikin/tests to minikin/tests/unittests
- Extract utilitiy classes to minikin/tests/utils which will be
used by perftests eventually.
Change-Id: I5026b177934e72ae67d362ee888302037da2f808
This is to work around a bug in ICU's line breaker, which thinks
there is a valid line break between a Myanmar kinzi and a consonant.
See http://bugs.icu-project.org/trac/ticket/12561 for the ICU bug.
Bug: 28964845
Change-Id: I076ac15077e5627cbccf6732900bcc60d8596dda