366 Commits

Author SHA1 Message Date
Mark Salyzyn
707bbae8ff minikin: use log/log.h when utilizing ALOG macros
Use log/log.h to harden code against liblog changes.

Test: compile
Bug: 30465923
Change-Id: I3dea82e76d28d9ef52d7c0f11e038c4298863eb9
2017-01-09 13:33:48 -08:00
Mark Salyzyn
ff6cd90494 minikin: Replace cutils/log.h with android/log.h or log/log.h
- replace cutils/log.h with android/log.h (main buffer logging)
- replace cutils/log.h with log.log.h (+SafetyNet logging)
- define LOG_TAG before use.

Test: compile
Bug: 26552300
Bug: 31289077
Change-Id: I7a4803dd66f31b7103e09e5ff5b8fa523fa0fd60
2016-12-27 10:10:18 -08:00
Dan Willemsen
7e38090b57 Use LOCAL_TEST_DATA to install test data
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
2016-12-15 18:47:17 +00:00
Colin Cross
8d6a018645 Merge "Move LOCAL_PICKUP_FILES out of $OUT/data" 2016-12-09 01:53:13 +00:00
Colin Cross
be7c33a74e Move LOCAL_PICKUP_FILES out of $OUT/data
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
2016-12-02 18:04:42 -08:00
Dan Willemsen
b4c239f555 Merge "Rename libicuuc-host/libicui18n-host to libicuuc/libicui18n" am: f8ca78ffa4 am: 90f9f8d7a2
am: e2217d5b85

Change-Id: I346fddaa5822eee2371d877a8bdeb055b6244c0d
2016-09-13 03:58:51 +00:00
Dan Willemsen
e2217d5b85 Merge "Rename libicuuc-host/libicui18n-host to libicuuc/libicui18n" am: f8ca78ffa4
am: 90f9f8d7a2

Change-Id: Ia8b56a95d11d74af5a2cac1fe8e604532c44a9cf
2016-09-13 03:56:10 +00:00
Dan Willemsen
90f9f8d7a2 Merge "Rename libicuuc-host/libicui18n-host to libicuuc/libicui18n"
am: f8ca78ffa4

Change-Id: Ia005ecb8dedc90aa8a908edda839da563152e861
2016-09-13 03:51:13 +00:00
Dan Willemsen
f8ca78ffa4 Merge "Rename libicuuc-host/libicui18n-host to libicuuc/libicui18n" 2016-09-13 03:47:02 +00:00
Elliott Hughes
b150a633ba Switch minikin to std::unique_ptr. am: fba88d3b3c am: c5e0585ac7
am: 83bdd0ae73

Change-Id: I9c0b81d55e01b08b053a7031a214626351244607
2016-09-13 01:29:45 +00:00
Elliott Hughes
83bdd0ae73 Switch minikin to std::unique_ptr. am: fba88d3b3c
am: c5e0585ac7

Change-Id: Ie9f9aac239cb29568819de699e4999989a7a11bf
2016-09-13 01:27:07 +00:00
Elliott Hughes
c5e0585ac7 Switch minikin to std::unique_ptr.
am: fba88d3b3c

Change-Id: I91198bdae7aac9638e6ef3553b0eacac021d4f93
2016-09-13 01:24:37 +00:00
Elliott Hughes
fba88d3b3c Switch minikin to std::unique_ptr.
Bug: http://b/22403888
Change-Id: I9e18496fcc38ad2e6b922455daa9f2a46778ec55
2016-09-12 15:29:35 -07:00
Dan Willemsen
b4f4c16d32 Rename libicuuc-host/libicui18n-host to libicuuc/libicui18n
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
2016-09-12 14:37:02 -07:00
Chih-Hung Hsieh
a061ed7415 Fix google-explicit-constructor warnings in minikin am: 32252e357f -s ours am: 58514b3cce
am: 83c5cedc63

Change-Id: I3623a0f372da99c5a189bc5900b3f55bc3d7b0be
2016-08-16 21:14:54 +00:00
Chih-Hung Hsieh
83c5cedc63 Fix google-explicit-constructor warnings in minikin am: 32252e357f -s ours
am: 58514b3cce

Change-Id: Idf3e3882894774d917166e4eec743fb8bea0c31b
2016-08-16 21:13:13 +00:00
Chih-Hung Hsieh
58514b3cce Fix google-explicit-constructor warnings in minikin
am: 32252e357f  -s ours

Change-Id: I51c71217e402c3cbeefd6de5ccf7252dc1687f76
2016-08-16 21:08:26 +00:00
Chih-Hung Hsieh
32252e357f Fix google-explicit-constructor warnings in minikin
* Add explicit keyword to conversion constructors,
  or add NOLINT(implicit) for implicit converters.
Bug: 28341362
Test: build with WITH_TIDY=1

Change-Id: I0c7b90f9bb953a9f2e4f0fb2032fa65ac604b9ca
Merged-In: I0c7b90f9bb953a9f2e4f0fb2032fa65ac604b9ca
2016-08-16 01:48:48 +00:00
Roozbeh Pournader
777a92cefa Revert "Lookup glyph from color emoji font before and after ZWJ." am: 96fa633577
am: 01be577f0e

Change-Id: Id1b94e72ccd480bf5395752868f7f26e17ab7491
2016-08-11 23:36:50 +00:00
Roozbeh Pournader
01be577f0e Revert "Lookup glyph from color emoji font before and after ZWJ."
am: 96fa633577

Change-Id: Icc8b76ebd3edfdeb7622bf21a6585b191cf5b15f
2016-08-11 23:32:49 +00:00
Roozbeh Pournader
96fa633577 Revert "Lookup glyph from color emoji font before and after ZWJ."
This reverts commit 56bda7e82a59b3fcaa828960deeb2a766f8afdfe.

Bug: 30815709
Change-Id: I057d9bcd05246e58894abb4e9633bd10f6fab211
2016-08-11 21:03:00 +00:00
Seigo Nonaka
8072cf551c Lookup glyph from color emoji font before and after ZWJ.
am: 56bda7e82a

Change-Id: Ic4900b65ed16a2ba3b5431d12a093654b7921a9b
2016-07-14 22:43:47 +00:00
Seigo Nonaka
9c9c199f65 Treat U+2695, U+2640, U+2642 as emoji characters.
am: c5d673d423

Change-Id: I551ee1c4c5368dde3bf2ab7d016634991b62f212
2016-07-14 22:43:47 +00:00
Seigo Nonaka
e74b7cfd5e Add some gender balanced components in to the sticky whitelist.
am: 2fd057eb70

Change-Id: Ieda8b25bba40f22c9d8c33aba590e96e3396f6c4
2016-07-14 22:43:46 +00:00
Seigo Nonaka
56bda7e82a 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
2016-07-13 14:12:06 -07:00
Seigo Nonaka
c5d673d423 Treat U+2695, U+2640, U+2642 as emoji characters.
Bug: 29885295
Change-Id: I1bf191a46d05e7099265d863bae0523c50817d0b
2016-07-13 14:05:02 -07:00
Seigo Nonaka
2fd057eb70 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
2016-07-13 14:01:41 -07:00
Roozbeh Pournader
b26b8dd05d Do not break after Myanmar viramas am: acaf5cc08d
am: 04b29bcbbb

* commit '04b29bcbbb55f0d39baa059b4bf5ea2a79f7b76f':

Change-Id: I4437e1206de2a45593e69956d8bcdf85a64b0f32
2016-05-26 02:31:31 +00:00
Roozbeh Pournader
e03c64d7b8 Do not break after Myanmar viramas am: acaf5cc08d
am: e04e0e9a43

* commit 'e04e0e9a4332ebf5966425ab22a9fdd7efc84c3b':
  Do not break after Myanmar viramas

Change-Id: I2e240fab84a49c73165056ee5ff18dbfca0faeec
2016-05-26 02:21:28 +00:00
Roozbeh Pournader
e04e0e9a43 Do not break after Myanmar viramas
am: acaf5cc08d

* commit 'acaf5cc08defe3dfaa1e0caa945be494532cbaa0':
  Do not break after Myanmar viramas

Change-Id: I13297120c3c3789c03b860c9e72b3a04922ab9fa
2016-05-26 01:44:33 +00:00
Roozbeh Pournader
04b29bcbbb Do not break after Myanmar viramas
am: acaf5cc08d

* commit 'acaf5cc08defe3dfaa1e0caa945be494532cbaa0':
  Do not break after Myanmar viramas

Change-Id: Idb9303889ac87853a730cdb25fba7faaaf352b93
2016-05-26 01:44:33 +00:00
Roozbeh Pournader
acaf5cc08d Do not break after Myanmar viramas
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
2016-05-25 16:46:56 -07:00
Seigo Nonaka
4c1c042046 Do not break before and after ZWJ. am: 47932fa
am: 3a0a3c1

* commit '3a0a3c123832f99de7cbb28ec968eca0b1bf437f':

Change-Id: I5a637871133d3e45c47c5b6dc8407bda946dbd62
2016-04-19 18:46:15 +00:00
Seigo Nonaka
d4a4d289a6 Do not break before and after ZWJ. am: 47932fa
am: 65429ac

* commit '65429ac4cef1f8f5daecbbc712313b59185a9789':
  Do not break before and after ZWJ.

Change-Id: If1fe6c6192aae09bab68a00bc94aba3e768dd445
2016-04-19 18:42:30 +00:00
Seigo Nonaka
3a0a3c1238 Do not break before and after ZWJ.
am: 47932fa

* commit '47932fa53b75744a30034467cfae6333468f54bb':
  Do not break before and after ZWJ.

Change-Id: Ic476d9048b44b84c69fd185b76108c961d8e8545
2016-04-19 18:39:03 +00:00
Seigo Nonaka
65429ac4ce Do not break before and after ZWJ.
am: 47932fa

* commit '47932fa53b75744a30034467cfae6333468f54bb':
  Do not break before and after ZWJ.

Change-Id: I00a0e31c19dd5b2fbe2ffb389bec4001dec5d6c1
2016-04-19 18:38:59 +00:00
Seigo Nonaka
47932fa53b Do not break before and after ZWJ.
The emoji list is generated from external/unicode/emoji-data.txt

Bug: 28248662
Change-Id: Ie49b3782505665d62c24371ca23d317ae5e9c5f7
2016-04-19 14:09:38 +00:00
Seigo Nonaka
074f0b8c8a Returns hasVariationSelector true for VS15/VS16
am: 0f5d879

* commit '0f5d87990b2cc56994f1a3f1de3d0341213f62ce':
  Returns hasVariationSelector true for VS15/VS16

Change-Id: Iff3953948c8457e2a85e5859559411511a326f33
2016-04-15 15:31:59 +00:00
Seigo Nonaka
0f5d87990b Returns hasVariationSelector true for VS15/VS16
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
2016-04-15 12:45:04 +09:00
Raph Levien
709765f3be Merge "Clear mLineWidths in LineBreaker::finish()" into nyc-dev
am: 1aa246a

* commit '1aa246aa807cd20c6ebe469383ab83e51deb98e7':
  Clear mLineWidths in LineBreaker::finish()

Change-Id: I968a1584b9f2d2242725b8ab7047091ca9ecd6ee
2016-04-13 16:21:38 +00:00
Raph Levien
1aa246aa80 Merge "Clear mLineWidths in LineBreaker::finish()" into nyc-dev 2016-04-13 16:11:56 +00:00
Raph Levien
0ae37ab603 Clear mLineWidths in LineBreaker::finish()
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
2016-04-12 15:27:17 -07:00
Seigo Nonaka
575d11bb36 Fix minikin_unittests
am: bb8b7fd

* commit 'bb8b7fd32fd69c8b227996c782622f7941a944cb':
  Fix minikin_unittests

Change-Id: I865dd495ed60b0bbace0ba77b2071dac058887e9
2016-04-11 21:01:14 +00:00
Seigo Nonaka
bb8b7fd32f Fix minikin_unittests
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] 1ea4165cef7651770fe28a0eada3da593bb149ad

Bug: 28105730
Bug: 28105688
Change-Id: Ie5983c4869147dacabdca81af1605066cd680b3f
2016-04-11 13:33:35 -07:00
Raph Levien
eb33e3a234 Update minikin/sample code to use new GetTable
am: d2161cf

* commit 'd2161cf80f6f23bb977d92f79e49fba999846c79':
  Update minikin/sample code to use new GetTable

Change-Id: I5fcae79c42322dcc0533dbd3eb1a51007e089170
2016-04-08 17:55:14 +00:00
Raph Levien
d2161cf80f Update minikin/sample code to use new GetTable
We changed the signature of the MinikinFont::GetTable method. This
patch updates the sample code, and fixes the build.

Change-Id: I1977be868bf7636986fc802915f3dd54c418a73a
2016-04-08 10:28:47 -07:00
Raph Levien
85759c393c Avoid copying of font table data
am: a8e8948

* commit 'a8e8948bd792b8c13bbcd5c59496c85c24a2952b':
  Avoid copying of font table data

Change-Id: Idc4074ebf93595fa0420986814462095730f00c2
2016-04-08 16:49:56 +00:00
Raph Levien
a8e8948bd7 Avoid copying of font table data
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
2016-04-08 08:26:38 -07:00
Raph Levien
03f300c8b2 Purge hb font on Minikin font destruction
am: 1ea4165

* commit '1ea4165cef7651770fe28a0eada3da593bb149ad':
  Purge hb font on Minikin font destruction

Change-Id: Idb2034353407e8b390cc07862803f846d5adea0c
2016-04-07 22:38:47 +00:00
Raph Levien
1ea4165cef Purge hb font on Minikin font destruction
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
2016-04-07 13:43:15 -07:00