213 Commits

Author SHA1 Message Date
Roozbeh Pournader
a27acfdebc Add font descriptions for six more scripts to fonts.xml
Font data for Phags-pa, Runic, Samaritan, and Tagalog are added, as
well as two new styles for Syriac (Estrangela was already included,
Eastern and Western are added).

Bug: 29535549
Bug: 32046261
Test: manual (new characters are now displayed) and 'make fontchain_lint'
Change-Id: Iad08286392850caf92e374818bd29d06b6a87e52
2016-12-19 15:19:35 -08:00
Roozbeh Pournader
aba60b542e Remove Droid Sans Fallback from all builds
Droid Sans Fallback is now completely replaced by Noto Sans CJK. The
font files are kept in the tree, since the SDK still needs them.

Also, Android.mk is updated to reflect the fact that Noto Color Emoji
is now included in SMALLER_FONT_FOOTPRINT, so fontchain_lint checks
for emoji consistency in that footprint too.

Bug: 31854008
Test: make fontchain_lint
Change-Id: I4f57114a48ecfaee87b49f01f7ef4fa5cd0b19fb
2016-12-13 22:53:52 +00:00
yirui
f9936b9b7c Fix incorrect emoji presentation for 'Zsym' script
If the language tag "und-Zsym" is applied to a TextView, the default
presentation should be text-style. However, it didn't work before this
patch, due to a lack of "und-Zsym" language tag in fonts.xml.

Bug: 31297127
Change-Id: Ieed8fe1532806dd1e75c58aa0d7a724bfeed7796
2016-09-14 10:30:59 +09:00
Doug Felt
1d69547fb9 Update fonts.xml file for new noto fonts.
- Tibetan Bold, Symbols-Regular-Subsetted2.

Bug: 27531263
Bug: 26862061
Change-Id: I356bdf438748f29a6fbb5e199902fa574dd08da8
2016-04-14 03:26:18 +00:00
Ying Wang
d5b46b19c6 Fix dependency for fontchain_lint
fontchain_lint scans directories in $(TARGET_OUT). There is no better
target working as dependency than the system.img.

Change-Id: I560b89f697e5ebd4f1e44a150f5af37996cf427e
2016-04-05 10:26:14 -07:00
Roozbeh Pournader
27ec3ace18 Re-enable emoji font tests
This re-enables the emoji font tests, but doesn't run the tests if
SMALLER_FONT_FOOTPRINT is set.

Additionally, we test that there's one and only one emoji font in the
fallback chain.

Bug: 26187231
Bug: 27785690
Change-Id: I2e6d467e3f54ee3d41737170d7c2492a0f6b30f0
2016-03-31 13:23:15 -07:00
Roozbeh Pournader
fa1facc0fd Add emoji-related tests for the font chain
1. Check that all emoji characters are supported in emoji fonts.

2. Check that no default-emoji characters are included in any font
that can get a higher score then the color emoji font, either by
being before it or by having a language/script assigned.

Bug: 26187231

Change-Id: Ic76bf59f1c6f9d2d290b1b64128d725ae08dcb5c
2016-03-16 13:57:22 -07:00
Roozbeh Pournader
0e969e2c0b Add test script for sanity of font fallback chain
Various tests have been added:

1. Availability of hyphens: Make sure that every font used for
rendering a language that is automatically hyphenated includes either
of Unicode hyphen characters U+2010 HYPHEN or U+002D HYPHEN-MINUS.

2. Range of values: Make sure that styles, weights, and styles belong
to certain limited sets.

Bug: 26187231
Bug: 21570828
Bug: 21815394
Change-Id: Ia63d63cc8da4f2d6bc81fe5619ccac6cfcd9a54e
2016-03-10 18:07:15 -08:00
Roozbeh Pournader
9bd17ce738 Annotate fonts.xml with intended scripts
Add various ISO 15924 codes to fonts.xml, as a signal for better
font selection in Minikin.

Bug: 27582800
Bug: 26187231
Change-Id: Ie06c156e0179e79c15cf2d66d577c3d36571860d
2016-03-09 21:46:15 -08:00
Roozbeh Pournader
b48f309e91 Merge "Restore DroidSansFallback to fonts.xml" 2016-02-05 18:35:14 +00:00
Roozbeh Pournader
3c8bec10a6 Restore DroidSansFallback to fonts.xml
The font was mistakenly removed in
Ib69e73a6682d7eedd7b824f1dadc79cbccf07605, while it is still built
for SMALLER_FONT_FOOTPRINT devices.

Change-Id: Icb62ef6ef7445255191c70110a2b5eb4105628ce
2016-02-04 14:22:20 -08:00
Ben Wagner
cee5f2023b Remove unused fonts.
The fonts being removed are no longer referenced.

Change-Id: I3029bdc817a39f5000a1c3d067afc1d40e859b93
2016-02-04 15:02:00 -05:00
Ben Wagner
8466f3c879 Remove NanumGothic and DroidSansFallback from fonts.xml.
These two fonts are no longer installed on a device.
This leaves the fonts themselves in place for the sdk build.

Change-Id: Ib69e73a6682d7eedd7b824f1dadc79cbccf07605
2016-01-21 11:54:06 -05:00
Seigo Nonaka
dcf2ea2fbe Replace Qaae script with Zsye
The emoji variant script "Zsye" is registered in ISO 15924.

Bug: 26226285
Change-Id: Ie561d8192c4ec8f242706339ca67b44133867e50
2016-01-05 21:53:53 +00:00
Ben Wagner
8349b7a063 Use 'index' instead of 'ttcIndex' for attribute name.
There are two reasons for this. First, the name 'ttcIndex' is over
specific, there are many indexed font containers in addition to ttc,
such as fon, pfr, bdf, and dfont. There may be others in the future.
Second, Skia implemented this attribute with the name 'index' quite
some time ago. By naming this attribute 'index' even existing apps will
be able to use this attribute (including Chrome).

BUG: 10861108
Change-Id: I68d2b69fad304d93313f96bf3365af71906dfe69
2015-12-12 05:57:14 +00:00
Seigo Nonaka
c73b2257ad Use NotoSansCJK-Regular.ttc instead of separated font files.
BUG: 10861108
BUG: 21079737
BUG: 26113320
Change-Id: I61426fb435c59f7614d14b1135e2f2ffaaa84c73
2015-12-11 09:50:03 -08:00
Seigo Nonaka
460d119e36 Add Emoji "lang" attribute for NotoColorEmoji.ttf
This is needed by Minikin to choose the best font when text and emoji
variation selectors are used.

BUG=11256006

Change-Id: I5774fdf0190dcc42ec827ef5dcec8cdbd28ee925
2015-12-03 09:20:03 -08:00
Roozbeh Pournader
9eeeea5ea6 am 0f3ac894: am c91b67ad: am 31a536e1: am 57928364: am 53c38c88: Merge "Revert "Create a special CONSTRAINED font bucket in frameworks."" into mnc-dev
* commit '0f3ac8944a712f087041d088d82eaa53b1a7b47b':
  Revert "Create a special CONSTRAINED font bucket in frameworks."
2015-08-19 02:21:30 +00:00
Roozbeh Pournader
bbf0c88e6c Revert "Create a special CONSTRAINED font bucket in frameworks."
This reverts commit 9e21eced5efacd605036be599d96974964deb09b.

Bug: 22929087
2015-08-18 12:17:13 -07:00
Roozbeh Pournader
f9273e185b Remove legacy font configuration files.
They were no longer in use by frameworks. They were never part of a
public API and were kept in the system just in case a legacy app read
them. They had also been deprecated for three releases, which should
have given everybody enough time to switch.

Bug: 21785593
Change-Id: Ib80bcea92e45b608388455ef576bbfde647f77db
2015-08-10 18:54:05 +00:00
Roozbeh Pournader
9e21eced5e Create a special CONSTRAINED font bucket in frameworks.
This is a temporary font profile to get razor and razorg (Nexus 7,
2013 version). It's not tested thoroughly, and should not be used for
any other devices.

The CONSTRAINED profile removes Bamum, Lisu, Mandaic, Mongolian, New
Tai Lue, Syriac, Tibetan, and Vai fonts from razor[g] devices, and
switches the CJK fonts to the limited pre-Lollipop fonts.

Bug: 22929087
Change-Id: I58c1693ee45e54b429013029d236617834446811
2015-08-04 23:36:47 +00:00
Roozbeh Pournader
82ef167fca Fix ascent and descent of Droid Sans Mono to match Roboto.
Previously, the inconsistency resulted in test in the testUniformY in
frameworks/base/graphics/tests/graphicstests/src/android/graphics/TypefaceTest.java
fail. The tests assume the different sans/serif/mono styles share a
consistent ascent and descent.

The font is modified using the following Python script:

from fontTools import ttLib

font_file = 'DroidSansMono.ttf'
font = ttLib.TTFont(font_file)
font['hhea'].ascent = 1900
font['hhea'].descent = -500
font.save('touched/'+font_file)

Bug: 19791102
Change-Id: I2fcd44b952691deeeed18f30d06bc9f6d5e4a8de
2015-06-13 18:49:35 -07:00
Roozbeh Pournader
5225620508 Merge EXTENDED font profile with the next (unnamed) profile.
This is now possible since we have less space restrictions on
devices.

This helps make sure that devices don't mistakenly ship with a
limited font support simply because they didn't turn on the extended
font profile.

Although the larger version of Droid Sans Fallback is no longer used
in any font profile for a device, it is kept since it's used by the
SDK.

The Nanum Gothic font is no longer used in any device profile either,
but it's kept in the fallback chain, so the SDK (that uses it)
continues to work.

Bug: 19668057
Change-Id: I6e32c4c98745e9b6aff6684d993943a19aebf6f7
2015-06-11 13:06:48 -07:00
Roozbeh Pournader
912dbdb9fa Move NotoSansSymbols higher than CJK in the fallback chain.
This makes sure that symbol characters who have both an alternative
or "full-width" version in the CJK fonts and a more regular version
in the symbols font get the default or "half-width" version by
default in non-CJK locales.

This is not a complete fix: such "full-width" symbol characters only
exist in the Simplfied Chinese font for now, which means in
Traditional Chinese, Japanese, and Korean locales, they characters
would now appear "half-width", which *may* be sub-optimal. The
complete fix would make sure the ones that actually need to be
"full-width" in TC/J/K are also included in the TC/J/K font.

Bug: 21525318
Bug: 21525012
Bug: 21524421
Bug: 21521330
Bug: 21520316
Bug: 21518544
Bug: 21517912
Bug: 21503807
Bug: 21502245
Bug: 21501669
Bug: 21525905
Bug: 21524018
Bug: 21503952
Bug: 21502678
Change-Id: I93cf7119b45ed3c080cd39d631a687e0ef9fd8ce
2015-06-04 15:39:43 -07:00
Roozbeh Pournader
2d8a02e68b Update Naskh font names to match upstream and add Tibetan.
The latest files from the upstream Noto repository are named
NotoNaskhArabic* instead of the previous NotoNaskh*.

Also, Noto Sans Tibetan is now included in the fallback chain. Apart
from supporting Tibetan and Dzongkha langauges, this adds a character
(U+0FD6) that completes coverage for ARIB character sets.

Bug: 13680438
Bug: 18181755
Bug: 18639453
Bug: 19390244
Change-Id: I09b493340d1453ef61b08c841e1731119d645822
2015-05-19 16:28:18 +00:00
Roozbeh Pournader
49455ab3f5 Make Noto Sans Japanese default font on extended profiles.
This experimentally makes Noto Sans Japanese the default Japanese
font.

Bug: 21074688
Change-Id: I4a9396a03bd758541574431760d5d387a472bec6
2015-05-12 16:00:55 -07:00
Roozbeh Pournader
47dd50ea16 Rename Noto Han fonts to their latest names.
NotoSansHans has been renamed to NotoSansSC and NotoSansHant has been
renamed to NotoSansTC.

Change-Id: I3c416d1aa753dc9be2c0e4ee1a8d77cdb9cdd4b1
2015-04-29 16:20:07 -07:00
Roozbeh Pournader
5f49c28bfc Rename FONT_NOTOSANS_FULL to FONT_NOTOSANS_JP_FULL.
This clarifies the meaning of the variable, that this switch only
affects the Noto Sans Japanese font.

Change-Id: I28043ed41ec51af0273a071692426d51352ef849
2015-04-29 15:38:07 -07:00
Roozbeh Pournader
a2b6021b52 Support more smaller scripts of Asia and Africa.
Noto fonts for Bamum, Lisu (Fraser), Mandaic, Mongolian, New Tai Lue,
Syriac (Estrangela), and Vai scripts are added to the fallback chain.

Bug: 19390244
Bug: 18639453
Change-Id: If18a7ea245f3b15baa9fb4f53855ae64759f921b
2015-04-13 16:01:33 -07:00
Roozbeh Pournader
9c5a14785b Switch from Lohit Odia to Noto Sans Oriya fonts.
Noto Sans Oriya fonts also have bold and UI versions, which are added.

Change-Id: Id622143688d89e25857c00489d81703780f79887
2015-04-06 19:28:18 +00:00
Kris Giesing
6180e5b8fd Allow override of Motoya with full NotoSans
b/17599829

Change-Id: I619288eadb8bf814b08dca833f540a80e38c2123
2015-03-26 15:37:46 -07:00
Roozbeh Pournader
5a5f1429de Remove Roboto fonts and their build rules
They are now moved to external/roboto-fonts. Symlinks from deprecated
fonts to Roboto for compatibility reasons are still created here.

Change-Id: I9e1b88a4289d055ea187e241d6514f0b37c5ee1b
2015-02-25 14:52:35 -08:00
Roozbeh Pournader
70f0a4365b Move Noto Sans Tai Le to the end of the font fallback list.
This is to make sure the East Asian punctuation shared between CJK languages
and Tai Le are rendered from the CJK fonts when no language is specified
for the text, or CJK text is rendered in a non-CJK locale.

Also remove the old comment about 64k glyphs limit.

Bug: 19355391
Change-Id: Ic2cbc79cecf9539ace8a432f373685eeff81e106
2015-02-11 15:45:49 -08:00
Roozbeh Pournader
7f45f6dd0c Add 8 more scripts to the font fallback chain.
Fonts for Cham, Coptic, Glagolitic, Kayah Li, Tai Le, Tai Tham, Tai
Viet, and Tifinagh scripts are added to the fallback chain.

This would enable or improve display of texts in Berber languages,
Cham, Church Slavonic, Coptic, Kayah languages, Khün, Northern Thai,
Tai Dam, Tai Dón, Tai Lü, Tai Nüa, and Thai Song.

Bug: 17686019

Change-Id: I689393bc03f3957e1025ac08ab31961a6c6bc24d
2014-11-25 15:06:27 -08:00
Roozbeh Pournader
411b30cb56 Add Lohit Odia (Oriya) font to the fallback chain.
This adds Lohit Odia (Oriya) font as the default font for the Oriya
script to the fallback chain.

Bug: 17686019
Change-Id: If0c60a0f35a029c3761b8ea26a2546ca5c5fa0c0
2014-11-24 13:43:25 -08:00
Roozbeh Pournader
2ff3ba5bfa Use fonts for smaller languages of South and Southeast Asia.
Fonts for Balinese, Batak, Buginese, Buhid, Hanunnoo, Javanese,
Lepcha, Limbu, Meetei Mayek, Ol Chiki, Rejang, Saurashtra, Sundanese,
Syloti Nagri, Tagbanwa, and Thaana scripts are added.

Bug: 17686019
Change-Id: I3fb783874920909e8725097481c9e7d8e35f42f8
2014-11-10 12:49:20 -08:00
Alan Viverette
4f9140b52c Add Cutive Mono as serif monospace font for captioning
Sets up Courier and Courier New to point to Cutive Mono, since
Courier is a serif monospace font.

BUG: 17666124
Change-Id: I96bb2ff59020edd8210c253752f76f0eb5100e18
2014-10-10 12:52:25 -07:00
Raph Levien
117cbebe81 New weight-aware font config
Parse new fonts.xml config file, and resolve weight selection based on
the base weight of the font (as defined by a weight alias specified in
the config file) and the requested bold flag. This change improves the
appearance of bold spans for alternate weights of Roboto.

In addition, this patch enables weight selection for fallback fonts.
For example, if an additional font with a weight of 100 is added to the
Hebrew font family in the fallback list, then requesting
"sans-serif-thin" would select that font for Hebrew text.

Bug: 14538154
Change-Id: I99a04fad4f7bf01c75726e760d42735dd9003496
2014-08-26 19:37:45 -07:00
Roozbeh Pournader
e7df4ea6a9 Compress miscellaneous fonts.
The fonts are passed through Noto's identity subsetter at
https://code.google.com/p/noto/source/browse/nototools/subset.py?r=bdd10822706b
which keeps the same functionality, but compresses tables, removes
unreachable glyphs, converts post table to version 3.0, etc.

Additionally, the DroidSansFallback fonts and MotoyaLMaru are passed through
fontcrunch.

The build footprint of the non-extended font profile is reduced by 546KB.

Bug: 15348046
Change-Id: I66777a0efeb98da6007091548a6ee847ecb4ea1f
2014-08-15 18:04:13 -07:00
Raph Levien
24ce053861 Copy fonts.xml to /system/etc
This patch actually copies the new font config file to the /system/etc
directory on the device, where frameworks and apps will be able to read
it.

Bug: 14538154
Change-Id: I53a932210763b718f469d80cc92816edf4e5b14e
2014-08-11 08:54:51 -07:00
Raph Levien
8c1f9360ce Add new fonts.xml
This adds a new configration file for fonts with several more features,
most notably the ability to specify numeric weights for fonts in a
family, and specify aliases for weights. This will help help choose an
appropriate font for a "bold" weight request, rather than just applying
auto-bolding.

Bug: 14538154
Change-Id: Ib4d54d66a0c68b7d46e665d7cd94e97b72468e95
2014-08-07 20:57:32 +00:00
Roozbeh Pournader
ffa7985489 Fix GSUB ccmp rule to use non-spacing marks.
The fonts are updated to upstream version 2.001047.

The previous version had buggy ccmp rules that were mistakenly replacing
sequences such as A` <U+0041, U+0060> with À <U+00C0>.  The new fonts
replace those with corrected rules that use combining accents instead, such
as U+0300 COMBINING GRAVE ACCENT instead of U+0060 GRAVE.

Also, a GSUB rule that mistakenly replaced aʾ <U+0061, U+02BE> with
ẚ <U+1E9A> is removed, and U+2117 SOUND RECORDING COPYRIGHT that was missing
from the Thin and Thin Italic fonts is added to them.

Bug: 16727859
Bug: 16719701
Change-Id: Ibd0a63ea3f51992c0e56fb255e68352915cc6c3a
2014-08-01 13:25:27 -07:00
Roozbeh Pournader
37cc0713e0 Re-remove AndroidEmoji.ttf.
It was mistakenly re-added in 6feb729b686b902be2520a91281e1a000c055da2.

Change-Id: I99a41ed8e6f1975e9808d8063e594fbb996d4334
(cherry picked from commit a7d8d7bfa75b283588aacae16cce78f6161acce9)
2014-07-31 16:58:53 +00:00
Roozbeh Pournader
fa4aeeeb71 Crunch Roboto and fix its digits to have the same width.
Update to upstream version 2.001045, which adds fontcrunch to the font
production process and fixes a problem with uneven digit widths. Should fix
https://code.google.com/p/android-developer-preview/issues/detail?id=330.

The font footprint is reduced by 705KB, most of it due to the crunching, but
also by using a newer version of fonttools that removes extra unnecessary
paddings from the glyf table.

Bug: 15348046
Bug: 16296048
Bug: 16299966

Change-Id: I838711916f8c47db011cfe889b232e60e6f1aa0c
(cherry picked from commit 6feb729b686b902be2520a91281e1a000c055da2)
2014-07-31 16:56:15 +00:00
Roozbeh Pournader
1b5bd3862e Fix the glyph for U+3A34 in DroidSansFallbackFull.ttf.
The old glyph had its right part using a wrong component. The right
component was available in the font. The following script was used to fix
the issue:

from fontTools import ttLib
from nototools import subset
font = ttLib.TTFont('DroidSansFallbackFull.ttf', lazy=False)
glyf_table = font['glyf']
glyph = glyf_table['uni3A34']
for component in glyph.components:
    if component.glyphName == 'glyph45821':
        component.glyphName = 'glyph30895'
glyph.recalcBounds(glyf_table)
font.save('DroidSansFallbackFull.ttf-fixed')
subset.subset_font(
    'DroidSansFallbackFull.ttf-fixed', 'DroidSansFallbackFull.ttf-subset')

The font footprint is reduced by 12KB mostly due to removing unneeded glyph
paddings.

Bug: 15149504
Change-Id: I914ec89435caadbeaa321e10fb0848f181fef667
2014-07-25 10:23:47 -07:00
Roozbeh Pournader
32a65c7ddd Do not include DroidSansFallback on EXTENDED_FONT_FOOTPRINT builds.
The build file is modified to hang non-module fonts on DroidSansMono
instead, now that a device may not have DroidSansFallback.  Also, some
cleanup is done to make the rules clearer and keep usages near definitions.

The support for following character will disappear from the extended
profiles because of this change:
U+202A          LEFT-TO-RIGHT EMBEDDING
U+202B          RIGHT-TO-LEFT EMBEDDING
U+202C          POP DIRECTIONAL FORMATTING
U+202D          LEFT-TO-RIGHT OVERRIDE
U+F95A  讀      CJK COMPATIBILITY IDEOGRAPH-F95A
U+F9F3  麟      CJK COMPATIBILITY IDEOGRAPH-F9F3
U+10400 𐐀       DESERET CAPITAL LETTER LONG I
U+10428 𐐨       DESERET SMALL LETTER LONG I
U+1044D 𐑍       DESERET SMALL LETTER ENG
U+1044E 𐑎       DESERET SMALL LETTER OI
U+1044F 𐑏       DESERET SMALL LETTER EW

The first four are not needed, as HarfBuzz makes sure they are rendered as
invisible, the two CJK compatibility characters have canonnical
decompositions to unified ideographs already supported in included Noto Sans
CJK fonts, and the Deseret letters were only in DroidSansFallback for
testing purposes.

Change-Id: Ibb7fa61dc851710ba14c3944281e228bd2e4f5b2
2014-07-24 15:02:24 -07:00
Roozbeh Pournader
01e3237cda Remove unused fonts.
Remove various fonts that are not used by any build: Droid Kufi
(replaced by Noto Naskh), Droid Sans (symlinked to Roboto),
and Droid Sans Japanese (replaced by Motoya).

Change-Id: Iefb056810f3c9386a311f1c7d617d76050eb7ffe
2014-07-24 13:41:28 -07:00
Raph Levien
b249225456 Fix BCP47 language tags in fallback_fonts.xml
The BCP47 tag we use for selecting Simplified vs Traditional Chinese is
Hans and Hant. This patch uses those tags in fallback_fonts.xml rather
than country names, which weren't getting matched.

Change-Id: I97e1da7b86e8fe8f026365146393304a5ab74443
2014-07-10 22:57:51 +00:00
Roozbeh Pournader
cbd098920d Remove the monochrome AndroidEmoji font.
All characters are now supported in other fonts in the fallback chain:
U+303D is supported in Noto Color Emoji, everything else is supported in
the subsettd Noto Sans Symbols.

Bug: 15777351
Change-Id: Ibf4bbffbfdddfa9e0f08ceff96c835ffeb3e555d
2014-07-09 16:59:24 +00:00
Roozbeh Pournader
ce5a6bfd7b Re-enable Motoya in the extended font builds.
The font is now included in all non-smaller font builds, as opposed to the
previous "not smaller but not extended either" builds.  This is in sync with
not including Noto Sans Japanese in the extended build.

Change-Id: Id0f79bc1de714ac876a601c4867a55b6dbfc820c
2014-07-07 16:10:15 -07:00