History log of /frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8e60b6f3a6bed9ece5608847f7dab7c3359c9a67 24-Feb-2018 Seigo Nonaka <nona@google.com> Stop including CR, LF characters in the previous run

Bug: 73625594
Test: bit FrameworksCoreTests:android.text.
Test: atest CtsWidgetTestCases:EditTextTest
CtsWidgetTestCases:TextViewFadingEdgeTest
FrameworksCoreTests:TextViewFallbackLineSpacingTest
FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest
CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
CtsTextTestCases

Change-Id: I809296e7edd9fe54d5defd83c7ddc5bb40a1d0e4
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
5f923f5f9647308c6f41ce7fe561a7213c24ddda 21-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Remove kTestFontDir and remove /system/fonts dependency from unit tests"
54e248ac7fa00d430092a8e993c83fccd4f72df5 20-Feb-2018 Seigo Nonaka <nona@google.com> Remove kTestFontDir and remove /system/fonts dependency from unit tests

Bug: N/A
Test: minikin_tests
Test: minikin_stress_tests
Change-Id: I01c8b885ce196f2f628d347c187691805a4d9c71
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
7fbdd83e92a76c955c67a1c761088b36daf7158c 17-Feb-2018 Seigo Nonaka <nona@google.com> Fix emoji presentation priority

Some non emoji font supports emoji font. To avoid selecting such font
in case emoji presentation style is provided, give higher score for
the presentation match.

StaticLayout creation time:
RandomText Balanced Hyphenation : 18,490,608 -> 18,507,043: (+0.1%)
RandomText Balanced NoHyphenation: 7,597,070 -> 7,619,731: (+0.3%)
RandomText Greedy Hyphenation : 7,540,346 -> 7,566,300: (+0.3%)
RandomText Greedy NoHyphenation : 7,548,161 -> 7,571,481: (+0.3%)

PrecomputedText creation time:
NoStyled Hyphenation : 18,289,621 -> 18,331,562: (+0.2%)
NoStyled Hyphenation WidthOnly : 17,834,643 -> 17,852,181: (+0.1%)
NoStyled NoHyphenation : 7,559,071 -> 7,579,943: (+0.3%)
NoStyled NoHyphenation WidthOnly : 7,117,840 -> 7,142,599: (+0.3%)
Styled Hyphenation : 15,257,108 -> 15,391,763: (+0.9%)
Styled Hyphenation WidthOnly : 14,243,001 -> 14,425,028: (+1.3%)
Styled NoHyphenation : 14,812,011 -> 14,920,500: (+0.7%)
Styled NoHyphenation WidthOnly : 13,862,758 -> 13,959,173: (+0.7%)

StaticLayout draw time:
RandomText NoStyled WithoutCache : 6,952,595 -> 6,974,445: (+0.3%)
RandomText Styled WithoutCache : 3,457,777 -> 3,442,473: (-0.4%)

Bug: 69321418
Bug: 31608997
Test: minikin_test
Change-Id: I167705b2e0d8c7d14df2a5e3a99b89dfea057713
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
7d8c4ed5b7683e16e6205a6b52b1910f8ff6b51b 09-Feb-2018 Seigo Nonaka <nona@google.com> Remove global mutex lock from minikin

All modules are now free from gMinikinLock.

This increases the performance of parallel text layout in background thread.

Here is a raw performance score on walleye-userdebug

StaticLayout creation time in parallel:
RandomText Thread 1 : 7,348,118 -> 7,327,542: (-0.3%)
RandomText Thread 2 : 13,872,214 -> 7,402,398: (-46.6%)
RandomText Thread 4 : 24,999,986 -> 8,185,263: (-67.3%)

StaticLayout creation time:
MeasuredText Balanced Hyphenation : 774,245 -> 781,534: (+0.9%)
MeasuredText Balanced NoHyphenation: 587,157 -> 574,882: (-2.1%)
MeasuredText Greedy Hyphenation : 535,843 -> 523,630: (-2.3%)
MeasuredText Greedy NoHyphenation : 534,965 -> 522,259: (-2.4%)
RandomText Balanced Hyphenation : 17,886,651 -> 17,814,108: (-0.4%)
RandomText Balanced NoHyphenation : 7,385,288 -> 7,410,588: (+0.3%)
RandomText Greedy Hyphenation : 7,380,350 -> 7,296,407: (-1.1%)
RandomText Greedy NoHyphenation : 7,358,680 -> 7,320,040: (-0.5%)

MeasuredText creation time
NoStyled Hyphenation : 17,587,451 -> 17,544,350: (-0.2%)
NoStyled Hyphenation WidthOnly : 17,112,258 -> 17,092,507: (-0.1%)
NoStyled NoHyphenation : 7,307,064 -> 7,296,519: (-0.1%)
NoStyled NoHyphenation WidthOnly : 6,880,721 -> 6,848,543: (-0.5%)
Styled Hyphenation : 14,753,919 -> 14,659,049: (-0.6%)
Styled Hyphenation WidthOnly : 13,767,908 -> 13,755,623: (-0.1%)
Styled NoHyphenation : 14,368,118 -> 14,337,125: (-0.2%)
Styled NoHyphenation WidthOnly : 13,414,942 -> 13,375,858: (-0.3%)

StaticLayout draw time:
MeasuredText NoStyled : 676,438 -> 678,795: (+0.3%)
MeasuredText NoStyled WithoutCache : 663,041 -> 654,687: (-1.3%)
MeasuredText Styled : 885,574 -> 890,281: (+0.5%)
MeasuredText Styled WithoutCache : 944,259 -> 928,675: (-1.7%)
RandomText NoStyled : 562,361 -> 553,651: (-1.5%)
RandomText NoStyled WithoutCache : 6,678,968 -> 6,696,637: (+0.3%)
RandomText Styled : 2,970,369 -> 2,933,900: (-1.2%)
RandomText Styled WithoutCache : 3,408,554 -> 3,387,260: (-0.6%)

Bug: 37567215
Test: minikin_tests
Test: minikin_stress_tests
Test: atest CtsWidgetTestCases:EditTextTest
CtsWidgetTestCases:TextViewFadingEdgeTest
FrameworksCoreTests:TextViewFallbackLineSpacingTest
FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest
CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
CtsTextTestCases CtsGraphicsTestCases:PaintTest
Test: bit FrameworksCoreTests:android.text.
Change-Id: I6aab090be6bfa65f1205b26b77c6c65823a3d94e
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
a22996e31226e3dcbfb0c57d03ca9ac54028fc28 01-Feb-2018 Seigo Nonaka <nona@google.com> Remove HbFontCache

This is 2nd attempt of the If86840fcf9.

HbFontCache was introduced for saving hb_font_t creation cost, but it
turned out that creating hb_font_t from another hb_font_t is cheap.

Instead of computing hb_font_t from buffer, compute hb_font_t in Zygote
process and store it in Font class.

By this change, mutex lock is no longer necessary for all HarfBuzz
related function calls.

StaticLayout creation time (w/o -> w/ patch, N=10, walleye-userdebug):
MeasuredText Balanced Hyphenation : 712,896 -> 705,864: (-1.0%)
MeasuredText Balanced NoHyphenation: 548,745 -> 535,891: (-2.3%)
MeasuredText Greedy Hyphenation : 486,093 -> 479,541: (-1.3%)
MeasuredText Greedy NoHyphenation : 491,053 -> 480,571: (-2.1%)
RandomText Balanced Hyphenation : 17,749,025 -> 17,426,362: (-1.8%)
RandomText Balanced NoHyphenation : 7,433,576 -> 7,401,203: (-0.4%)
RandomText Greedy Hyphenation : 7,388,658 -> 7,327,291: (-0.8%)
RandomText Greedy NoHyphenation : 7,375,390 -> 7,381,066: (+0.1%)

MeasuredText creation time (w/o -> w/ patch, N=10, walleye-userdebug)
Styled Hyphenation : 14,364,510 -> 14,430,830: (+0.5%)
Styled Hyphenation WidthOnly : 13,629,489 -> 13,446,345: (-1.3%)
Styled NoHyphenation : 14,104,669 -> 13,873,049: (-1.6%)
Styled NoHyphenation WidthOnly : 13,304,362 -> 13,091,473: (-1.6%)
NoStyled Hyphenation : 17,512,424 -> 17,368,559: (-0.8%)
NoStyled Hyphenation WidthOnly : 17,095,872 -> 16,985,377: (-0.6%)
NoStyled NoHyphenation : 7,371,994 -> 7,344,223: (-0.4%)
NoStyled NoHyphenation WidthOnly : 6,932,519 -> 6,950,149: (+0.3%)

StaticLayout draw time (w/o -> w/ patch, N=10, walleye-userdebug)
MeasuredText NoStyled : 661,017 -> 657,547: (-0.5%)
MeasuredText NoStyled WithoutCache : 660,506 -> 651,035: (-1.4%)
MeasuredText Styled : 868,116 -> 854,418: (-1.6%)
MeasuredText Styled WithoutCache : 916,078 -> 880,388: (-3.9%)
RandomText NoStyled : 561,192 -> 547,528: (-2.4%)
RandomText NoStyled WithoutCache : 6,758,025 -> 6,695,065: (-0.9%)
RandomText Styled : 2,886,462 -> 2,843,580: (-1.5%)
RandomText Styled WithoutCache : 3,319,513 -> 3,276,261: (-1.3%)

Bug: 37567215
Test: minikin_tests
Test: hwui_unit_tests
Test: atest CtsTextTestCases \
CtsWidgetTestCases:EditTextTest \
CtsWidgetTestCases:TextViewFadingEdgeTest \
FrameworksCoreTests:TextViewFallbackLineSpacingTest \
FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest \
CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
Test: bit FrameworksCoreTests:android.text.

Change-Id: If523fce5ce3747b03a1d3bad8c5938a4e2901792
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
4de86391218f9fa2d1ba15d78cd80514fb5ce43d 07-Feb-2018 Seigo Nonaka <nona@google.com> Revert "Remove HbFontCache"

This causes a regression for some characters.

This reverts commit 6c6954b40f7a6bd6dcf8a3d01c78600437c2e011.

Bug: 73054061
Change-Id: I010754474eebd55e43666893c4f7af9de12b22f3
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
6c6954b40f7a6bd6dcf8a3d01c78600437c2e011 01-Feb-2018 Seigo Nonaka <nona@google.com> Remove HbFontCache

HbFontCache was introduced for saving hb_font_t creation cost, but it
turned out that creating hb_font_t from another hb_font_t is cheap.

Instead of computing hb_font_t from buffer, compute hb_font_t in Zygote
process and store it in Font class.

By this change, mutex lock is no longer necessary for all HarfBuzz
related function calls.

StaticLayout creation time (w/o -> w/ patch, N=10, walleye-userdebug):
MeasuredText Balanced Hyphenation : 712,896 -> 705,864: (-1.0%)
MeasuredText Balanced NoHyphenation: 548,745 -> 535,891: (-2.3%)
MeasuredText Greedy Hyphenation : 486,093 -> 479,541: (-1.3%)
MeasuredText Greedy NoHyphenation : 491,053 -> 480,571: (-2.1%)
RandomText Balanced Hyphenation : 17,749,025 -> 17,426,362: (-1.8%)
RandomText Balanced NoHyphenation : 7,433,576 -> 7,401,203: (-0.4%)
RandomText Greedy Hyphenation : 7,388,658 -> 7,327,291: (-0.8%)
RandomText Greedy NoHyphenation : 7,375,390 -> 7,381,066: (+0.1%)

MeasuredText creation time (w/o -> w/ patch, N=10, walleye-userdebug)
Styled Hyphenation : 14,364,510 -> 14,430,830: (+0.5%)
Styled Hyphenation WidthOnly : 13,629,489 -> 13,446,345: (-1.3%)
Styled NoHyphenation : 14,104,669 -> 13,873,049: (-1.6%)
Styled NoHyphenation WidthOnly : 13,304,362 -> 13,091,473: (-1.6%)
NoStyled Hyphenation : 17,512,424 -> 17,368,559: (-0.8%)
NoStyled Hyphenation WidthOnly : 17,095,872 -> 16,985,377: (-0.6%)
NoStyled NoHyphenation : 7,371,994 -> 7,344,223: (-0.4%)
NoStyled NoHyphenation WidthOnly : 6,932,519 -> 6,950,149: (+0.3%)

StaticLayout draw time (w/o -> w/ patch, N=10, walleye-userdebug)
MeasuredText NoStyled : 661,017 -> 657,547: (-0.5%)
MeasuredText NoStyled WithoutCache : 660,506 -> 651,035: (-1.4%)
MeasuredText Styled : 868,116 -> 854,418: (-1.6%)
MeasuredText Styled WithoutCache : 916,078 -> 880,388: (-3.9%)
RandomText NoStyled : 561,192 -> 547,528: (-2.4%)
RandomText NoStyled WithoutCache : 6,758,025 -> 6,695,065: (-0.9%)
RandomText Styled : 2,886,462 -> 2,843,580: (-1.5%)
RandomText Styled WithoutCache : 3,319,513 -> 3,276,261: (-1.3%)

Bug: 37567215
Test: minikin_tests
Test: hwui_unit_tests
Test: atest CtsTextTestCases \
CtsWidgetTestCases:EditTextTest \
CtsWidgetTestCases:TextViewFadingEdgeTest \
FrameworksCoreTests:TextViewFallbackLineSpacingTest \
FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest \
CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
Test: bit FrameworksCoreTests:android.text.

Change-Id: If86840fcf957ca16e3a821204b79156fc23f1596
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
e1cfa7d7a17f9e24a27132032ec2f77a63e99913 30-Jan-2018 Seigo Nonaka <nona@google.com> Clean Up: Make minikin::Font non copy-able

This CL contains:
- Remove unused constructor of Font.
- Make Font not copyable.
- Remove MinikinFontForTest and use font with FreeType implementation.

Test: minikin_tests
Bug: 65024629
Change-Id: I9d06f76b1e724f2aeb1d8dc3e59f15eca2467bcf
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
37dd6e7493f372fd04dadf94351ca522b56b4119 28-Jan-2018 Seigo Nonaka <nona@google.com> Store FontCollection in MinikinPaint

This is clean up of the argument of Layout.
FontCollection and MinikinPaint are used at the same time, thus good to
store FontCollection in MinikinPaint.

Verified this doesn't cause any performance regression.

Here is a raw perf scores:

StaticLayout creation time (w/o -> w/ patch, median, walleye-userdebug):
MeasuredText Balanced Hyphenation : 731,739 -> 726,841: (-0.7%)
MeasuredText Balanced NoHyphenation: 548,255 -> 546,087: (-0.4%)
MeasuredText Greedy Hyphenation : 497,457 -> 498,711: (+0.3%)
MeasuredText Greedy NoHyphenation : 499,441 -> 502,785: (+0.7%)
RandomText Balanced Hyphenation : 19,248,110 -> 19,183,770: (-0.3%)
RandomText Balanced NoHyphenation : 8,015,110 -> 8,036,686: (+0.3%)
RandomText Greedy Hyphenation : 7,979,899 -> 7,984,900: (+0.1%)
RandomText Greedy NoHyphenation : 7,957,663 -> 7,958,306: (+0.0%)

StaticLayout draw time (w/o -> w/ patch, median, walleye-userdebug):
MeasuredText NoStyled : 671,897 -> 667,875: (-0.6%)
MeasuredText NoStyled WithoutCache : 657,115 -> 652,933: (-0.6%)
MeasuredText Styled : 904,402 -> 883,635: (-2.3%)
MeasuredText Styled WithoutCache : 1,130,656 -> 1,124,981: (-0.5%)
RandomText NoStyled : 566,494 -> 563,629: (-0.5%)
RandomText NoStyled WithoutCache : 9,131,098 -> 9,116,869: (-0.2%)
RandomText Styled : 3,059,137 -> 3,027,930: (-1.0%)
RandomText Styled WithoutCache : 12,417,799 -> 12,374,347: (-0.3%)

Bug: 65024629
Test: minikin_tests
Change-Id: I03a0bf76a46c91ba16d91e8f7c5f87f26758b4e8
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
1be4ac71900ca2258491a4d0b72a4bebce19da71 12-Dec-2017 Seigo Nonaka <nona@google.com> Initialize ICU only once

Looks like ICU can not initialize again even if calls u_cleanup().
Migrate ICU setup from test SetUp/TearDown to global SetUp/TearDown.

Bug: 67928956
Test: minikin_tests
Change-Id: Iba204ed2b822abfbfa7be41905d88d5f968f1ff7
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
5551fa59086d970d75260ead125eab0eeb1c4595 12-Dec-2017 Seigo Nonaka <nona@google.com> Fix use-after-free and out-of-range access in unit test.

I jsut ran ASAN and found errors.

Bug: N/A
Test: SANITIZE_TARGET='address' minikin_tests
Change-Id: I9e56a96735fcfae3fa99a287aa75674b04117058
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
6c8722e217ff5238f0b849152d7936959a728103 30-Nov-2017 Seigo Nonaka <nona@google.com> Apply clang-format

Bug: 65125938
Test: m
Change-Id: I4a4319cc34c186aa0a3ce1d0301af1cd4e0feb81
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
538122d159ef845767ea430a5541248e85e43717 18-Nov-2017 Seigo Nonaka <nona@google.com> Move FontVariant from FontStyle to FontFamily

FontVariant is a font family's attribut, not a individual font
attribute. Remove FontVariant from FontStyle and put variant
MinikinPaint.

At the same time, this CL moves FontStyle into its own file.

Bug: 65024629
Test: minikin_tests
Change-Id: Ia45840159e7990cb2026bef54f549ad5ffbd23e2
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
b47e9b21077d2a0847a64fa713aa9892196b5d2a 27-Oct-2017 Seigo Nonaka <nona@google.com> Move FontStyle to MinikinPaint member

FontStyle is always used with MinikinPaint except for itemization.
Also it is populated at the same time from Paint.
It would be good for it to be a member of MinikinPaint.

On the other hand, LocaleListId was stored in FontStyle is now used
everywhere, e.g. Hyphenator, WordBreaker, etc. It would be good
for it to be outside of FontStyle.

Bug: 65024629
Test: minikin_tests
Change-Id: I5199638ed21b0eaf1f426834933f64b603b6302a
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
1d461589869ee5b7102f96271b0ef0a776ab513c 20-Oct-2017 Seigo Nonaka <nona@google.com> Style cleanup.

This CL contains following cleanups:
- Rename the following classes and corresponding file names:
FontLanguage -> Locale
FontLanguages -> LocaleList
FontLanguageListCache -> LocaleListCache
- Remove unnecessary #include lines.
- Define the Minikin's header include ordering and follow that style.
See doc/minikin_style.md for details.
- Always use std::string and std::vector instead of string and vector
with using-declaration.
- Replace LOG_ALWAYS_FATAL_IF with MINIKIN_ASSERT so that the assertion
is removed on build configuration for user.

This CL does not change any behavior.

Bug: 65024629
Test: make checkbuild
Change-Id: If41bb3c3389303053bbe95e349eb2dd4b619257c
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
f3285d4ecf7567e1bd73ffcbb5ad6901bbc03df5 25-Aug-2017 Roozbeh Pournader <roozbeh@google.com> Make combining characters sticky

Let's say we have a combining character sequence, where the base
character is supported only by font B, while the combining character
is supported by both fonts A and B, where A is a higher-score font.

Previously, Minikin broke the sequence, and displayed the base
character in font B and the combining mark in font A. Now, we
display the whole sequence in font B, which should be able to handle
shaping and positioning correctly.

Bug: 65020024
Bug: 62419886
Test: adb shell /data/nativetest/minikin_tests/minikin_tests
Change-Id: I622787d2602d7fe806ebdadb5dcea74e6fc6321e
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
33ead53d74e8c8cb5331d7612d4f26d993a4a88b 10-Aug-2017 Roozbeh Pournader <roozbeh@google.com> Compute vertical extents needed for layout

Text laid out in multiple fonts may need more vertical space in
order to make sure it doesn't overlap lines above and below it. But
the information was previously not available to users of Minikin.

Now we allow a parameter in various layout methods that returns the
ascent, desent, and line gap based on the maximum values of the fonts
actually used in laying out the text.

Also, LineBreaker now keeps and returns ascents and descents per
line, which callers can use to only allow extra linespacing on lines
that have such characters.

Finally, font run calculations have been modified to not check
support for \n and \r in cmap tables, as they are not needed. This
reduces the number of font runs and avoids cases where a fallback
font mistakenly gets used and increases the requested ascent and
descent.

Bug: 28963299
Bug: 29063863
Bug: 32057121
Bug: 37756858
Test: adb shell /data/nativetest/minikin_tests/minikin_tests
Test: bit FrameworksCoreTests:android.text.
Test: bit CtsTextTestCases:*
Change-Id: I959017210f19ced71db05b127148203dcf9a2d42
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
946e8893faf74aa3a7655cab3134fd3f28fe0d80 13-Jun-2017 Roozbeh Pournader <roozbeh@google.com> Ignore various format characters in font itemization

Previously, various format characters, specially bidi format
characters, could affect font selection as they may have existed in a
font lower in the font chain and could cause unexpected behavior.

With this CL, we no longer try to find a font for such format
characters and keep them with exising runs.

Also remove specific make job number from how_to_run test help files.

Change-Id: I35b6fb6c41b61f5f7063ef87ac24f8d69fcc572f
Fixes: 30039912
Test: adb shell /data/nativetest/minikin_tests/minikin_tests
Test: adb shell am instrument -w -e package android.text com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
d8983d43240b28677767c487b48e8ca972cb53dd 18-Mar-2017 Roozbeh Pournader <roozbeh@google.com> Relax requirement for text variation sequences

Previously, we insisted that in order for us to claim that a text variation
sequence is supported or to display it, it needs to be standardized already.
Now we accept any character as the base of a text variation sequence and
support it as far the font used to display it is not an emoji font.

Also fix a typo in a font name.

Test: Unit tests are updated and pass.

Bug: 30874706
Change-Id: I9660ec43aeee84303cfb825352a7f5029d036dd6
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
fd4124c53399581dd94eac5a9749bc07b474a294 14-Mar-2017 Seigo Nonaka <nona@google.com> Revert "Use std::mutex instead of android::Mutex"

This reverts commit 62ad565335d4774bc5b31ced462e92566b48d197.

Bug: 36208043
Test: N/A

Change-Id: I165ab7a0718ea50a8034adb6277809e271fd762c
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
62ad565335d4774bc5b31ced462e92566b48d197 21-Feb-2017 Seigo Nonaka <nona@google.com> Use std::mutex instead of android::Mutex

This CL includes:
- Stop using utils/Mutex and use std::mutex instead.
- Stop using utils/Singleton.

Test: minikin_tests passed
Change-Id: Ib3f75b83397a546472bb5f91e066e44506e78263
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
dfbc6e374259f9d81940b5195ac013b02429af27 10-Feb-2017 Seigo Nonaka <nona@google.com> Remove MinikinRefCounted and use shared_ptr instead

Let's use shared_ptr since manual ref counting can be a bug-prone and
using the global mutex inside destructor is not useful for some time.

To remove raw pointer manipulation, needed to change Layout
constructors. Layout is no longer copyable and need to pass
FontCollection to constructor.

Bug: 28119474
Test: minikin_tests passed
Test: hwui_unit_tests passed
Test: No performance regression in minikin_perftest.
Change-Id: I8824593206ecba74cbc9731e298f045e1ae442a3
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
41718c770d0ae12133270a4ee4a8dbd27851480d 28-Dec-2016 Seigo Nonaka <nona@google.com> Remove FontFamily.addFont and make FontFamily immutable.

This is 2nd attempt of 41e02e96131c1ec66d013e4615348be013518dc4
The difference is adding clearElementsEithLock to Font class which
is necessary to delete Fonts object outside of minikin. This method
should be removed once http://b/28119474 is fixed.

Here is original commit message of reverted change.

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
Bug: 28119474
Bug: 34378805
Test: minikin_tests has passed
Change-Id: Ice433931196f5ae79a1a7ee0c98020f914aeb5f2
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
cc0352cc677e4ecea6ae12f734a010d290734e86 20-Jan-2017 Siyamed Sinir <siyamed@google.com> Revert "Remove FontFamily.addFont and make FontFamily immutable."

This reverts commit 41e02e96131c1ec66d013e4615348be013518dc4.

Bug: 34378805
Change-Id: I8f1ee00b365c8b17c6140e9e286fbea082e31364
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
41e02e96131c1ec66d013e4615348be013518dc4 28-Dec-2016 Seigo Nonaka <nona@google.com> Remove FontFamily.addFont and make FontFamily immutable.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
d478da324d3b98e736b6c42415c02d506cfb653f 15-Sep-2016 Yirui Huang <yirui@google.com> Change language score calculation

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
fd77b01ff2cb5c55f02929b5821ddc41aee0cd05 18-Oct-2016 Seigo Nonaka <nona@google.com> Clean Up: Removing unused interface GetTable from MinikinFont.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
4a4e6574c02774c758974c1fadf161f829baaaa3 23-Jun-2016 Seigo Nonaka <nona@google.com> Fix lookup order for VS in itemization.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
b830102259584c873413d369659480188cb16641 12-Aug-2016 Roozbeh Pournader <roozbeh@google.com> Revert "Lookup glyph from color emoji font before and after ZWJ." am: 1aa0c40db9 am: de728a34c9
am: f83d57f7e5

Change-Id: Iebf945839891cc1ab561cf424ef917ac15e08842
98487de54771df7bd1bb2a6d0ad5fbc736832f95 11-Jul-2016 Seigo Nonaka <nona@google.com> Lookup glyph from color emoji font before and after ZWJ.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
435076ff2e3cae9e06f4d6069b0352a030787bde 08-Jul-2016 Seigo Nonaka <nona@google.com> Add some gender balanced components in to the sticky whitelist.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
81c79d6e1e49562c9bc33c14826017dd5e33ebec 16-Jun-2016 Seigo Nonaka <nona@google.com> Fix test utilities

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
14e2d136aaef271ba131f917cf5f27baa31ae5ad 09-Jun-2016 Seigo Nonaka <nona@google.com> Always use minikin namespace.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp
c38b249ef7ed969fa8f8cf3c98331353a90ba9f2 03-Jun-2016 Seigo Nonaka <nona@google.com> Reconstruct the directory structure of minikin tests.

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
/frameworks/minikin/tests/unittest/FontCollectionItemizeTest.cpp