537 Commits

Author SHA1 Message Date
Colin Cross
d2fd2c8a5b Convert frameworks/minikin/tests to Android.bp am: 84bd31a702 am: 41aba62fed
am: 55a0697542  -s ours

Change-Id: Ibb26e4f858efc8314b46f4c67b75013b4e098fc2
2017-05-04 15:24:32 +00:00
Colin Cross
e6ac0e7c3c Convert frameworks/minikin/tests to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I930debdd129da7f61ac4b764980f73dfd487785d
Merged-In: I930debdd129da7f61ac4b764980f73dfd487785d
(cherry picked from commit 2bfc56ad2fcd0f65551a9c2ed8a9c2350f2e0cd1)
2017-05-04 08:14:50 -07:00
Colin Cross
55a0697542 Convert frameworks/minikin/tests to Android.bp am: 84bd31a702
am: 41aba62fed

Change-Id: I19bdd07630b420505b05c04f3734a6c6ca4919e4
2017-05-04 14:59:34 +00:00
Colin Cross
41aba62fed Convert frameworks/minikin/tests to Android.bp
am: 84bd31a702

Change-Id: Id510518f6fc534de65caa28bd10f8376b5234d68
2017-05-04 14:56:05 +00:00
Colin Cross
84bd31a702 Convert frameworks/minikin/tests to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I930debdd129da7f61ac4b764980f73dfd487785d
Merged-In: I930debdd129da7f61ac4b764980f73dfd487785d
(cherry picked from commit 2bfc56ad2fcd0f65551a9c2ed8a9c2350f2e0cd1)
2017-05-03 14:45:52 -07:00
Colin Cross
1e31920c7d Export libicuuc headers from libminikin am: 4cab55f535 am: ddd4ea4639
am: ae2d121878

Change-Id: Ied63cff24c4aaf0a2e99f8d55704350855ae6720
2017-05-03 02:43:13 +00:00
Colin Cross
ae2d121878 Export libicuuc headers from libminikin am: 4cab55f535
am: ddd4ea4639

Change-Id: I64f9ef06af9b995cb87c832b8bf8d666a723f012
2017-05-03 02:40:43 +00:00
Colin Cross
ddd4ea4639 Export libicuuc headers from libminikin
am: 4cab55f535

Change-Id: Iaf283ac61f0985bea25d0109918a05f0b8600045
2017-05-03 02:38:43 +00:00
Colin Cross
4cab55f535 Export libicuuc headers from libminikin
Test: m -j checkbuild
Change-Id: Ibecebc8a1bd4028c083424476dd379c0ce0149a1
2017-05-02 17:18:48 -07:00
Fredrik Roubert
f76cd8e3ec Let mk_hyb_file.py replace SS in .chr.txt files with . am: a3e5cd344d am: 3aca045a63
am: 347fd0da6a

Change-Id: Ic360ebf8bc82e7ff9fd6d76d84a0257fda9ed136
2017-04-27 14:55:29 +00:00
Fredrik Roubert
347fd0da6a Let mk_hyb_file.py replace SS in .chr.txt files with . am: a3e5cd344d
am: 3aca045a63

Change-Id: Ibdd3ccabf5dd4d8f5d0fe0f119027835bfd72443
2017-04-27 14:52:58 +00:00
Fredrik Roubert
3aca045a63 Let mk_hyb_file.py replace SS in .chr.txt files with .
am: a3e5cd344d

Change-Id: I1c15bc7734bb78d1b5042d7080dfaf3b2cd3e6d8
2017-04-27 14:50:28 +00:00
Fredrik Roubert
a3e5cd344d Let mk_hyb_file.py replace ßSS in .chr.txt files with ßẞ.
Here these mappings are used to convert from uppercase to lowercase,
and mk_hyb_file.py doesn't handle multi-character uppercase sequences.
Therefore, in case the sequence ßSS is encountered in a .chr.txt,
replace it internally with ßẞ.

Test: make -j
Change-Id: I8f678aad9298784f70645c453ec07da5bf43cb66
2017-04-27 15:18:56 +02:00
Colin Cross
6491d60fbb Convert frameworks/minikin to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I71d3406054b35dd4e8ae30f46eec6cef77eef160
(cherry picked from commit f938933830a43aa6d99b9c7c0610f541e636d0d9)
2017-04-25 18:04:46 +00:00
Colin Cross
9129b42b71 Convert frameworks/minikin to Android.bp am: 415ff26d87 am: 640a047ec8
am: ca7d98a9ee  -s ours

Change-Id: I7bf4d9aed6132ff9073a7e6efe5b726958581575
2017-04-25 01:42:28 +00:00
Colin Cross
ca7d98a9ee Convert frameworks/minikin to Android.bp am: 415ff26d87
am: 640a047ec8

Change-Id: I21dd4bc68c78649974497a6b14b1d89fc4e1bf77
2017-04-25 01:26:51 +00:00
Colin Cross
640a047ec8 Convert frameworks/minikin to Android.bp
am: 415ff26d87

Change-Id: I622bfc09bab45aaaa7e621b1c10ff0ed5bd499a9
2017-04-25 01:24:56 +00:00
Colin Cross
415ff26d87 Convert frameworks/minikin to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I71d3406054b35dd4e8ae30f46eec6cef77eef160
Merged-In: I71d3406054b35dd4e8ae30f46eec6cef77eef160
2017-04-24 17:10:04 -07:00
Seigo Nonaka
c2e7357cd6 Reduce heap memory in minikin.
am: 818fbee83a

Change-Id: Ifb5bbba4ce7d452d844693409ac0ecad3168ed29
2017-04-15 00:59:39 +00:00
Seigo Nonaka
818fbee83a Reduce heap memory in minikin.
This patch reduces about 73 kB memory.
The original SparseBitSet could contain full 32bit integers, but all of
that is not necessary for Unicode code points. By reducing the supported
range to up to Unicode maximum, U+10FFFF, we can save extra memory.

SparseBitSet holds 256-bit sliced pages and indices of them.
Previously, we needed to hold up to 2^24-1 pages for keeping 32-bit
integers.

This CL limits the number of pages to 2^16-1 (65535), so that
SparseBitSet only supports 24-bit integers now, but this is sufficient
for keeping all Unicode code points. With this change, we can change the
index integer type from uint32_t to uint16_t.

Bug: 37357593
Test: minikin_tests passes
Change-Id: I462cc27927752c942ac5da0bf303a5afb81b87a3
2017-04-14 22:54:27 +00:00
Seigo Nonaka
008ef43100 Support cmap tables with platform ID == 0
am: db1b6cb776

Change-Id: I131af63678b32171b96299d8ded17baa7b6b09c4
2017-04-04 16:58:29 +00:00
Seigo Nonaka
db1b6cb776 Support cmap tables with platform ID == 0
Some fonts don't have cmap subtables of Microsoft Platform ID (3) and
only have cmap subtables of Unicode Platform ID (0).

Bug: 32505843
Test: minikin_unittest passed
Test: android.graphics.cts.TypefaceTest passed
Change-Id: I24aa49860790c0ae8d8e578efd728b95ec0f93ae
2017-04-03 14:57:19 -07:00
Roozbeh Pournader
13d708e4eb Override the bidi properties of new emojis
am: bab3b98ceb

Change-Id: Ic24100663716142a547fd2e2f2b6fcb551f7bdd0
2017-04-03 00:27:44 +00:00
Roozbeh Pournader
bab3b98ceb Override the bidi properties of new emojis
Test: new Minikin tests are added, and pass
Bug: 32952475
Change-Id: Ibcae60d18d0cd5efd7556aaf58a716b6b59c8ee0
2017-04-02 15:30:21 -07:00
Roozbeh Pournader
0a52b686dd Remove unused classes and methods
am: 55e37071ab

Change-Id: I9d0e82f8f6cf4889c9e4bd0c229c77e66089a8b9
2017-03-31 03:09:32 +00:00
Roozbeh Pournader
55e37071ab Remove unused classes and methods
Removed Bitmap and MinikinFontFreeType classes, as well
as the Layout::draw() method.

The code was there for debugging purposes and for potential
third-party users. We no longer support third-party uses of
Minikin, since we don't know of any.

Test: mmma -j frameworks/minikin builds with no errors
Change-Id: Iddc9e8d35334053bd5255bccf3dbe5ba1eecf814
2017-03-30 17:52:56 -07:00
Seigo Nonaka
dff5e5d5a1 Remove unused functions.
This CL is essentially reverting following changes:
- "Serialize and deserialize supported axes."
  I4086fb887e13f872390b533584bce6f1d5598ea0
- "Make SparseBitSet serializable."
  I0463138adcf234739bb3ce1cdadf382021921f3e

Bug: 36232655
Test: N/A
Change-Id: I25c701e1805e92b01034142147a9925f86533819
2017-03-22 16:00:35 -07:00
TreeHugger Robot
d0ca7a21fe Merge "Expose supportedAxes to frameworks/base" 2017-03-20 17:37:07 +00:00
Roozbeh Pournader
d8983d4324 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
2017-03-17 17:25:37 -07:00
Roozbeh Pournader
c97689439c Remove workaround for line breaks around currency symbols
This is now done properly in ICU so we no longer need to do it ourselves.

Also updated some comments about emoji line-breaking.

Test: Existings tests for this in Minikin continue to pass.
Bug: 24959657
Bug: 27365282
Change-Id: I865ea9ba1e79a64409d84d2d30c121f740e35ad6
2017-03-17 15:42:49 -07:00
Roozbeh Pournader
754913bd27 Update Minikin to use ICU's emoji data
Certain differences are still needed, since ICU appears to support
Emoji 4.0 only, while we need Emoji 5.0. But the bulk of the data is
now carried by ICU.

We no longer need the script that generates the tables, so that's
also removed.

Test: Comprehensive unit tests added.
Bug: 27365282
Bug: 30874706
Change-Id: I011443fbca9bb202deff7fffb40043f89e1f1fb1
2017-03-17 14:58:01 -07:00
TreeHugger Robot
03adc8ba6f Merge "Introduce FontCollection construct perf test" 2017-03-17 19:33:45 +00:00
Seigo Nonaka
80a9239d69 Introduce FontCollection construct perf test
Test: ran minikin_perftest
Bug: 36232655
Change-Id: Ic4d88663d522be17540e2ac17c9b7ae64210275f
2017-03-17 07:42:21 -07:00
TreeHugger Robot
eb5a72899b Merge "Update emoji character data in Minikin" 2017-03-17 03:20:24 +00:00
Roozbeh Pournader
0480d6daa4 Update emoji character data in Minikin
Update emoji character data to Unicode 10.0 / Emoji 5.0 (which also
removes U+1F93B MODERN PENATHLON from the emoji base letters).

Also add unit tests for line breaking for new characters (based on
earlier work by Seigo Nonaka).

Test: All new and existing unit tests pass;
Test: Manually tested line breaking of new emojis in TextView.

Bug: 28364892
Bug: 28678294
Bug: 30874706
Change-Id: I367cdab09187dc08a66a3112a5181a2b7fb338a5
2017-03-16 18:29:01 -07:00
TreeHugger Robot
760508d856 Merge "Update emoji grapheme breaking rules" 2017-03-16 22:54:13 +00:00
TreeHugger Robot
34048ff4c4 Merge "Refactor WordBreaker" 2017-03-16 21:20:15 +00:00
Roozbeh Pournader
93e9c9f71e Update emoji grapheme breaking rules
The rules are updated to the latest UAX #29, with tailorings based on
the font in use: we can now use the clustering information
calculated by Layout, so we will only disallow a grapheme break if an
emoji ligature is actually formed.

Test: Unit tests have been updated and pass.
Bug: 30917298
Bug: 34211654
Change-Id: Idc0ef9f1f4f45dc45a50ed69e45c43ebfaea0306
2017-03-16 13:34:52 -07:00
Roozbeh Pournader
8bdd9b948f Refactor WordBreaker
Refactor WordBreaker to make it ready for more complex behavior.

Test: existing unit tests continue to pass
Change-Id: Ife758f3e2cf48922ab56109e6c5d3cffa3673feb
2017-03-16 12:23:08 -07:00
TreeHugger Robot
b882b44064 Merge "Introduce minikin_stress_tests to find race condition." 2017-03-16 00:50:50 +00:00
TreeHugger Robot
919a48923a Merge "Serialize and deserialize supported axes." 2017-03-15 23:30:30 +00:00
Seigo Nonaka
e7ba485d8a Introduce minikin_stress_tests to find race condition.
This is designed for catching race condition.
The stress_tests is splited from unit test binary since this takes
30 seconds on angler.

Bug: 36223724
Bug: 36208043
Test: ran minikin_stress_tests
Change-Id: I1bf4ba43e6e97cd04e7d6dd42d388dd17ce64c7b
2017-03-15 16:11:33 -07:00
TreeHugger Robot
92d8235c75 Merge "Fallback from script-specific hyphens to normal hyphen first" 2017-03-15 22:45:31 +00:00
TreeHugger Robot
186f11581d Merge "In greedy line breaking, repeat breaks until the line fits" 2017-03-15 22:29:13 +00:00
Seigo Nonaka
1adbccfd0f Serialize and deserialize supported axes.
To avoid reading font files during FontFamily construction, serialize
and deserialize supported axes and cmap coverage at the same time.

Bug: 36232655
Test: ran minikin_tests
Change-Id: I4086fb887e13f872390b533584bce6f1d5598ea0
2017-03-15 14:18:13 -07:00
Roozbeh Pournader
829f28371c Fallback from script-specific hyphens to normal hyphen first
The previous code fell back directly from a script-specific hyphen to
the ASCII hyphen-minus if the font didn't support the script-specific
hyphen. Now we try the Unicode hyphen (U+2010) first before trying
the ASCII hyphen-minus.

Bug: 36201363
Test: Not needed
Change-Id: I374234fd73fab7edd990ea86f8937c38761c90bf
2017-03-15 14:15:46 -07:00
Roozbeh Pournader
67d1601c60 In greedy line breaking, repeat breaks until the line fits
Previously, in greedy line breaking, when a line overflowed, we found
the best line breaking candidate before it and broke the line there.
But we didn't check to see if the remaining part now fits in a line.

With this change, we now repeat checking for overflows, and break
again until we have no breaking opportunity or the remaining text now
fits in a line.

Also found an issue with greedy line breaking and keeping the
hyphenation edit for the next line which is now fixed.

Test: Manual. The issue reported in the bug is now fixed.
Bug: 34185255
Bug: https://code.google.com/p/android/issues/detail?id=231437
Bug: 33560754
Change-Id: I93bdd341e4f8e1257710e453e4938f224cb2a1ff
2017-03-15 13:52:21 -07:00
TreeHugger Robot
f698f16c1e Merge "Break grapheme clusters after viramas if they end a cluster" 2017-03-15 19:53:12 +00:00
Seigo Nonaka
99ef32cef0 Do not keep FontCollection reference in Layout.
LayoutCache only keeps result of layout and can live after
FontCollection is destructed by GC.

This kind of failure will be captured by minikin_stress_tests in the
subsequent CL (I1bf4ba43e6e97cd04e7d6dd42d388dd17ce64c7b)

Test: ran minikin_tests
Bug: 36223724
Change-Id: I639b73c0f1041549158c43212a901c82df4b02db
2017-03-15 15:17:43 +00:00
Seigo Nonaka
f6d1c03ffa Expose supportedAxes to frameworks/base
The list of supportedAxes are necessary for returning value of
setFontVariationSettings.

Bug: 35764323
Test: ran TextViewTest and PaintTest in cts
Change-Id: I52f244146ea0ce335df02c841f89285be2ed746e
2017-03-15 14:32:08 +00:00