Commit Graph

393 Commits

Author SHA1 Message Date
Gary Qian
75752cc8d2 Support for 'fake bold' text and additional tests
Change-Id: Ic9863052365316ea188fcf79b15378be90f440f6
2017-06-06 16:23:59 -07:00
Gary Qian
22345d608e Add fonts to Paragraph and additional tests.
Change-Id: I023cc9bc413975dabc770f6b59d4ffd1fc842ab2
2017-06-05 18:13:01 -07:00
Gary Qian
63bc51106c Add command line option to supply --font-directory=<dir>
Change-Id: If3036a32a82249c9c95d2c5722bdb5ab097c20a1
2017-06-05 15:22:07 -07:00
Chinmay Garde
79f20a8886 Update libTXT sources and tests from initial prototype.
This separates libTXT tests and Minikin tests and accounts for building
with an older version of ICU. Once ICU has been updated, the workarounds
for emoji handling will be removed.

Change-Id: Ic184e653a2561629b01f98aeb4f6fb88aebbfa88
2017-06-02 14:45:16 -07:00
Adam Barth
2697ab61cb Add example program from prototype
Change-Id: Ia6f6c442db57abe484a3efe33ecbc7553743bbb3
2017-05-11 09:38:03 -07:00
Adam Barth
cdbb8b0c9d Add Paragraph class from prototype
Change-Id: Id38e4261c4d6f8fa99f405d9b21bdd9e259a9384
2017-05-11 09:25:35 -07:00
Adam Barth
966ef0ace4 Import more code from the prototype
Change-Id: Ic5656c3ffcc3c3da8ed1fb4a44355b16c21c2f1e
2017-05-11 09:13:07 -07:00
Adam Barth
ef1a552f3c Remove libxml2 dependency 2017-05-10 20:58:52 -07:00
Adam Barth
a02c2f97e6 Add SkFontMgr backend for FontCollection
Change-Id: Ic58127bb696f87254633b01706c26c4ae862f9be
2017-05-10 11:52:41 -07:00
Adam Barth
a2baa5149f Disable failing tests
After this CL, txt_unittests run and pass.

Change-Id: Ia3fbb8f4a68bd09c6b7484edd3a8cae3e95b45ab
2017-05-10 09:02:18 -07:00
Adam Barth
878c4a2586 Build txt_unittests
Many of these fail because they assume they're being executed on Android, but
at least they build.

Change-Id: I5d86e3d2632a0d6fa4219d3f5182f2683c9dd314
2017-05-08 12:40:16 -07:00
Adam Barth
ebc9d58082 Add BUILD.gn and make the library build
Change-Id: Ie2c3d6f97987e8a9938af8f02b093bb74dd22a18
2017-05-08 12:17:19 -07:00
TreeHugger Robot
11de2b6412 Merge "Convert frameworks/minikin/tests to Android.bp" 2017-05-03 21:35:27 +00:00
Colin Cross
68cdc2e24a Export libicuuc headers from libminikin am: 6e0a223dbb am: 6d142f28d3 am: 4a43ef5fa8
am: fb9df9cc93

Change-Id: Ic2d0faa137d935bba4bfc9c82de92edcef0def1e
2017-05-03 02:45:43 +00:00
Colin Cross
fb9df9cc93 Export libicuuc headers from libminikin am: 6e0a223dbb am: 6d142f28d3
am: 4a43ef5fa8

Change-Id: Ied63cff24c4aaf0a2e99f8d55704350855ae6720
2017-05-03 02:43:13 +00:00
Colin Cross
6e0a223dbb Export libicuuc headers from libminikin
Test: m -j checkbuild
Change-Id: Ibecebc8a1bd4028c083424476dd379c0ce0149a1
2017-05-02 17:18:48 -07:00
Fredrik Roubert
490fce5ad0 Let mk_hyb_file.py replace SS in .chr.txt files with . am: fcb08dbdee am: 676a881f8f am: 3bfee08b16
am: f0192ff7f2

Change-Id: I55d3bf17902b122321d1d8093eb9277102f026d7
2017-04-27 15:01:19 +00:00
Fredrik Roubert
f0192ff7f2 Let mk_hyb_file.py replace SS in .chr.txt files with . am: fcb08dbdee am: 676a881f8f
am: 3bfee08b16

Change-Id: Ic360ebf8bc82e7ff9fd6d76d84a0257fda9ed136
2017-04-27 14:55:29 +00:00
Fredrik Roubert
fcb08dbdee 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
f3ba5a36bf 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 716f07be94)
2017-04-25 18:04:46 +00:00
Colin Cross
fa994b25d1 Convert frameworks/minikin/tests to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I930debdd129da7f61ac4b764980f73dfd487785d
2017-04-25 10:53:34 -07:00
Colin Cross
befc483dfb 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
Colin Cross
716f07be94 Convert frameworks/minikin to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I71d3406054b35dd4e8ae30f46eec6cef77eef160
2017-04-20 12:44:52 -07:00
Seigo Nonaka
d554978b08 Reduce heap memory in minikin. am: 97ee89d605
am: e1ae48dec9

Change-Id: I0d3c390915f9eef90afd2c655295929e5de0534c
2017-04-15 01:36:15 +00:00
Seigo Nonaka
97ee89d605 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
e952c1cc40 Support cmap tables with platform ID == 0 am: cc8f7117d3
am: 60d6553199

Change-Id: Ib1e6808f542d75e06044908dc88b6e2ba3abfed7
2017-04-04 17:02:31 +00:00
Seigo Nonaka
cc8f7117d3 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
9d107a9c64 Override the bidi properties of new emojis am: d01462f7a1
am: a6cf123565

Change-Id: Ic55ed4b18cb9c41a4c0c96d8f8dee431dffe905a
2017-04-03 00:33:43 +00:00
Roozbeh Pournader
d01462f7a1 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
TreeHugger Robot
a29637e1d4 Merge "Add test config to minikin_tests" 2017-03-31 17:04:15 +00:00
Roozbeh Pournader
a994c50513 Remove unused classes and methods am: 7708c89648
am: dba486668d

Change-Id: Idffb6ba27d09a9ab9e0c7e737e00a1dbb7f1e09c
2017-03-31 03:14:23 +00:00
Roozbeh Pournader
7708c89648 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
TreeHugger Robot
9595fe65b8 Merge "Add test config to minikin_perftests" 2017-03-29 21:10:34 +00:00
Dan Shi
f0d9c2f52d Add test config to minikin_perftests
Design doc:
Generalized Suites & the Unification of APCT & CTS Workflows Design/Roadmap
https://docs.google.com/document/d/1eabK3srlBLouMiBMrNP3xJPiRRdcoCquNxC8gBWPvx8/edit#heading=h.78vup5eivwzo

Details about test configs changes are tracked in doc
https://docs.google.com/document/d/1EWUjJ7fjy8ge_Nk0YQbFdRp8DSHo3z6GU0R8jLgrAcw/edit#

Bug: 35882476
Test: local test
Change-Id: I23366d56aaa7fbd22ed8233df0969a17e371c5a5
2017-03-29 12:11:51 -07:00
Dan Shi
bbffea58c5 Add test config to minikin_tests
Design doc:
Generalized Suites & the Unification of APCT & CTS Workflows Design/Roadmap
https://docs.google.com/document/d/1eabK3srlBLouMiBMrNP3xJPiRRdcoCquNxC8gBWPvx8/edit#heading=h.78vup5eivwzo

Details about test configs changes are tracked in doc
https://docs.google.com/document/d/1EWUjJ7fjy8ge_Nk0YQbFdRp8DSHo3z6GU0R8jLgrAcw/edit#

Bug: 35882476
Test: local test
Change-Id: I0b1e0dc39975bc373685eb8adf1e297dc8f4c07a
2017-03-28 16:10:05 -07:00
Seigo Nonaka
6a5534a437 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
ad55a59727 Merge "Expose supportedAxes to frameworks/base" 2017-03-20 17:37:07 +00:00
Roozbeh Pournader
aa928e61b7 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
8eb2df1a8e 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
215f7ff8d0 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
a5b935ff67 Merge "Introduce FontCollection construct perf test" 2017-03-17 19:33:45 +00:00
Seigo Nonaka
2d0bfff203 Introduce FontCollection construct perf test
Test: ran minikin_perftest
Bug: 36232655
Change-Id: Ic4d88663d522be17540e2ac17c9b7ae64210275f
2017-03-17 07:42:21 -07:00
TreeHugger Robot
e4e4ea1ede Merge "Update emoji character data in Minikin" 2017-03-17 03:20:24 +00:00
Roozbeh Pournader
3d10a1ed4f 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
bbc4943973 Merge "Update emoji grapheme breaking rules" 2017-03-16 22:54:13 +00:00
TreeHugger Robot
61bb3fbc81 Merge "Refactor WordBreaker" 2017-03-16 21:20:15 +00:00
Roozbeh Pournader
f2fd20ec54 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
f3399b503e 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
464d63f0d8 Merge "Introduce minikin_stress_tests to find race condition." 2017-03-16 00:50:50 +00:00
TreeHugger Robot
4b613e361b Merge "Serialize and deserialize supported axes." 2017-03-15 23:30:30 +00:00