Update to Roboto VF
Bug: 158836182 Test: atest hwui_unit_tests Test: Local test device Change-Id: I36be78d3fdca047cbc8eebb15785086faa424093
This commit is contained in:
@@ -17,9 +17,8 @@ prebuilt_font {
|
||||
src: "DroidSansMono.ttf",
|
||||
required: [
|
||||
// Roboto-Regular.ttf provides DroidSans.ttf as a symlink to itself
|
||||
// Roboto-Regular.ttf provides DroidSans-Bold.ttf as a symlink to itself
|
||||
"Roboto-Regular.ttf",
|
||||
// Roboto-Bold.ttf provides DroidSans-Bold.ttf as a symlink to itself
|
||||
"Roboto-Bold.ttf",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@@ -18,23 +18,104 @@
|
||||
prefer the former when an 800 weight is requested. Since bold spans
|
||||
effectively add 300 to the weight, this ensures that 900 is the bold
|
||||
paired with the 500 weight, ensuring adequate contrast.
|
||||
|
||||
TODO(rsheeter) update comment; ordering to match 800 to 900 is no longer required
|
||||
-->
|
||||
<familyset version="23">
|
||||
<!-- first font is default -->
|
||||
<family name="sans-serif">
|
||||
<font weight="100" style="normal">Roboto-Thin.ttf</font>
|
||||
<font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
|
||||
<font weight="300" style="normal">Roboto-Light.ttf</font>
|
||||
<font weight="300" style="italic">Roboto-LightItalic.ttf</font>
|
||||
<font weight="400" style="normal">Roboto-Regular.ttf</font>
|
||||
<font weight="400" style="italic">Roboto-Italic.ttf</font>
|
||||
<font weight="500" style="normal">Roboto-Medium.ttf</font>
|
||||
<font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
|
||||
<font weight="900" style="normal">Roboto-Black.ttf</font>
|
||||
<font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
|
||||
<font weight="700" style="normal">Roboto-Bold.ttf</font>
|
||||
<font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
|
||||
</family>
|
||||
<font weight="100" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="100" />
|
||||
</font>
|
||||
<font weight="200" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="200" />
|
||||
</font>
|
||||
<font weight="300" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="300" />
|
||||
</font>
|
||||
<font weight="400" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="400" />
|
||||
</font>
|
||||
<font weight="500" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="500" />
|
||||
</font>
|
||||
<font weight="600" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="600" />
|
||||
</font>
|
||||
<font weight="700" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="700" />
|
||||
</font>
|
||||
<font weight="800" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="800" />
|
||||
</font>
|
||||
<font weight="900" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="900" />
|
||||
</font>
|
||||
<font weight="100" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="100" />
|
||||
</font>
|
||||
<font weight="200" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="200" />
|
||||
</font>
|
||||
<font weight="300" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="300" />
|
||||
</font>
|
||||
<font weight="400" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="400" />
|
||||
</font>
|
||||
<font weight="500" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="500" />
|
||||
</font>
|
||||
<font weight="600" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="600" />
|
||||
</font>
|
||||
<font weight="700" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="700" />
|
||||
</font>
|
||||
<font weight="800" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="800" />
|
||||
</font>
|
||||
<font weight="900" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="100" />
|
||||
<axis tag="wght" stylevalue="900" />
|
||||
</font>
|
||||
</family>
|
||||
|
||||
|
||||
<!-- Note that aliases must come after the fonts they reference. -->
|
||||
<alias name="sans-serif-thin" to="sans-serif" weight="100" />
|
||||
@@ -47,14 +128,96 @@
|
||||
<alias name="verdana" to="sans-serif" />
|
||||
|
||||
<family name="sans-serif-condensed">
|
||||
<font weight="300" style="normal">RobotoCondensed-Light.ttf</font>
|
||||
<font weight="300" style="italic">RobotoCondensed-LightItalic.ttf</font>
|
||||
<font weight="400" style="normal">RobotoCondensed-Regular.ttf</font>
|
||||
<font weight="400" style="italic">RobotoCondensed-Italic.ttf</font>
|
||||
<font weight="500" style="normal">RobotoCondensed-Medium.ttf</font>
|
||||
<font weight="500" style="italic">RobotoCondensed-MediumItalic.ttf</font>
|
||||
<font weight="700" style="normal">RobotoCondensed-Bold.ttf</font>
|
||||
<font weight="700" style="italic">RobotoCondensed-BoldItalic.ttf</font>
|
||||
<font weight="100" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="100" />
|
||||
</font>
|
||||
<font weight="200" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="200" />
|
||||
</font>
|
||||
<font weight="300" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="300" />
|
||||
</font>
|
||||
<font weight="400" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="400" />
|
||||
</font>
|
||||
<font weight="500" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="500" />
|
||||
</font>
|
||||
<font weight="600" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="600" />
|
||||
</font>
|
||||
<font weight="700" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="700" />
|
||||
</font>
|
||||
<font weight="800" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="800" />
|
||||
</font>
|
||||
<font weight="900" style="normal">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="0" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="900" />
|
||||
</font>
|
||||
<font weight="100" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="100" />
|
||||
</font>
|
||||
<font weight="200" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="200" />
|
||||
</font>
|
||||
<font weight="300" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="300" />
|
||||
</font>
|
||||
<font weight="400" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="400" />
|
||||
</font>
|
||||
<font weight="500" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="500" />
|
||||
</font>
|
||||
<font weight="600" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="600" />
|
||||
</font>
|
||||
<font weight="700" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="700" />
|
||||
</font>
|
||||
<font weight="800" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="800" />
|
||||
</font>
|
||||
<font weight="900" style="italic">Roboto-Regular.ttf
|
||||
<axis tag="ital" stylevalue="1" />
|
||||
<axis tag="wdth" stylevalue="75" />
|
||||
<axis tag="wght" stylevalue="900" />
|
||||
</font>
|
||||
</family>
|
||||
<alias name="sans-serif-condensed-light" to="sans-serif-condensed" weight="300" />
|
||||
<alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" />
|
||||
|
||||
@@ -31,10 +31,12 @@ using namespace android;
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr char kRobotoRegular[] = "/system/fonts/Roboto-Regular.ttf";
|
||||
constexpr char kRobotoBold[] = "/system/fonts/Roboto-Bold.ttf";
|
||||
constexpr char kRobotoItalic[] = "/system/fonts/Roboto-Italic.ttf";
|
||||
constexpr char kRobotoBoldItalic[] = "/system/fonts/Roboto-BoldItalic.ttf";
|
||||
constexpr char kRobotoVariable[] = "/system/fonts/Roboto-Regular.ttf";
|
||||
|
||||
constexpr char kRegularFont[] = "/system/fonts/NotoSerif-Regular.ttf";
|
||||
constexpr char kBoldFont[] = "/system/fonts/NotoSerif-Bold.ttf";
|
||||
constexpr char kItalicFont[] = "/system/fonts/NotoSerif-Italic.ttf";
|
||||
constexpr char kBoldItalicFont[] = "/system/fonts/NotoSerif-BoldItalic.ttf";
|
||||
|
||||
void unmap(const void* ptr, void* context) {
|
||||
void* p = const_cast<void*>(ptr);
|
||||
@@ -68,7 +70,7 @@ std::vector<std::shared_ptr<minikin::FontFamily>> makeSingleFamlyVector(const ch
|
||||
|
||||
TEST(TypefaceTest, resolveDefault_and_setDefaultTest) {
|
||||
std::unique_ptr<Typeface> regular(Typeface::createFromFamilies(
|
||||
makeSingleFamlyVector(kRobotoRegular), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
makeSingleFamlyVector(kRobotoVariable), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(regular.get(), Typeface::resolveDefault(regular.get()));
|
||||
|
||||
// Keep the original to restore it later.
|
||||
@@ -347,71 +349,71 @@ TEST(TypefaceTest, createFromFamilies_Single) {
|
||||
// In Java, new
|
||||
// Typeface.Builder("Roboto-Regular.ttf").setWeight(400).setItalic(false).build();
|
||||
std::unique_ptr<Typeface> regular(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoRegular), 400, false));
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoVariable), 400, false));
|
||||
EXPECT_EQ(400, regular->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::UPRIGHT, regular->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kNormal, regular->fAPIStyle);
|
||||
|
||||
// In Java, new
|
||||
// Typeface.Builder("Roboto-Bold.ttf").setWeight(700).setItalic(false).build();
|
||||
// Typeface.Builder("Roboto-Regular.ttf").setWeight(700).setItalic(false).build();
|
||||
std::unique_ptr<Typeface> bold(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoBold), 700, false));
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoVariable), 700, false));
|
||||
EXPECT_EQ(700, bold->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::UPRIGHT, bold->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kBold, bold->fAPIStyle);
|
||||
|
||||
// In Java, new
|
||||
// Typeface.Builder("Roboto-Italic.ttf").setWeight(400).setItalic(true).build();
|
||||
// Typeface.Builder("Roboto-Regular.ttf").setWeight(400).setItalic(true).build();
|
||||
std::unique_ptr<Typeface> italic(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoItalic), 400, true));
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoVariable), 400, true));
|
||||
EXPECT_EQ(400, italic->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::ITALIC, italic->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kItalic, italic->fAPIStyle);
|
||||
|
||||
// In Java,
|
||||
// new
|
||||
// Typeface.Builder("Roboto-BoldItalic.ttf").setWeight(700).setItalic(true).build();
|
||||
// Typeface.Builder("Roboto-Regular.ttf").setWeight(700).setItalic(true).build();
|
||||
std::unique_ptr<Typeface> boldItalic(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoBoldItalic), 700, true));
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoVariable), 700, true));
|
||||
EXPECT_EQ(700, boldItalic->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::ITALIC, boldItalic->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kItalic, italic->fAPIStyle);
|
||||
|
||||
// In Java,
|
||||
// new
|
||||
// Typeface.Builder("Roboto-BoldItalic.ttf").setWeight(1100).setItalic(false).build();
|
||||
// Typeface.Builder("Roboto-Regular.ttf").setWeight(1100).setItalic(false).build();
|
||||
std::unique_ptr<Typeface> over1000(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoBold), 1100, false));
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoVariable), 1100, false));
|
||||
EXPECT_EQ(1000, over1000->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::UPRIGHT, over1000->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kBold, over1000->fAPIStyle);
|
||||
}
|
||||
|
||||
TEST(TypefaceTest, createFromFamilies_Single_resolveByTable) {
|
||||
// In Java, new Typeface.Builder("Roboto-Regular.ttf").build();
|
||||
// In Java, new Typeface.Builder("Family-Regular.ttf").build();
|
||||
std::unique_ptr<Typeface> regular(Typeface::createFromFamilies(
|
||||
makeSingleFamlyVector(kRobotoRegular), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
makeSingleFamlyVector(kRegularFont), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(400, regular->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::UPRIGHT, regular->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kNormal, regular->fAPIStyle);
|
||||
|
||||
// In Java, new Typeface.Builder("Roboto-Bold.ttf").build();
|
||||
// In Java, new Typeface.Builder("Family-Bold.ttf").build();
|
||||
std::unique_ptr<Typeface> bold(Typeface::createFromFamilies(
|
||||
makeSingleFamlyVector(kRobotoBold), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
makeSingleFamlyVector(kBoldFont), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(700, bold->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::UPRIGHT, bold->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kBold, bold->fAPIStyle);
|
||||
|
||||
// In Java, new Typeface.Builder("Roboto-Italic.ttf").build();
|
||||
// In Java, new Typeface.Builder("Family-Italic.ttf").build();
|
||||
std::unique_ptr<Typeface> italic(Typeface::createFromFamilies(
|
||||
makeSingleFamlyVector(kRobotoItalic), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
makeSingleFamlyVector(kItalicFont), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(400, italic->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::ITALIC, italic->fStyle.slant());
|
||||
EXPECT_EQ(Typeface::kItalic, italic->fAPIStyle);
|
||||
|
||||
// In Java, new Typeface.Builder("Roboto-BoldItalic.ttf").build();
|
||||
// In Java, new Typeface.Builder("Family-BoldItalic.ttf").build();
|
||||
std::unique_ptr<Typeface> boldItalic(
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kRobotoBoldItalic),
|
||||
Typeface::createFromFamilies(makeSingleFamlyVector(kBoldItalicFont),
|
||||
RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(700, boldItalic->fStyle.weight());
|
||||
EXPECT_EQ(minikin::FontStyle::Slant::ITALIC, boldItalic->fStyle.slant());
|
||||
@@ -420,8 +422,8 @@ TEST(TypefaceTest, createFromFamilies_Single_resolveByTable) {
|
||||
|
||||
TEST(TypefaceTest, createFromFamilies_Family) {
|
||||
std::vector<std::shared_ptr<minikin::FontFamily>> families = {
|
||||
buildFamily(kRobotoRegular), buildFamily(kRobotoBold), buildFamily(kRobotoItalic),
|
||||
buildFamily(kRobotoBoldItalic)};
|
||||
buildFamily(kRegularFont), buildFamily(kBoldFont), buildFamily(kItalicFont),
|
||||
buildFamily(kBoldItalicFont)};
|
||||
std::unique_ptr<Typeface> typeface(Typeface::createFromFamilies(
|
||||
std::move(families), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(400, typeface->fStyle.weight());
|
||||
@@ -430,7 +432,7 @@ TEST(TypefaceTest, createFromFamilies_Family) {
|
||||
|
||||
TEST(TypefaceTest, createFromFamilies_Family_withoutRegular) {
|
||||
std::vector<std::shared_ptr<minikin::FontFamily>> families = {
|
||||
buildFamily(kRobotoBold), buildFamily(kRobotoItalic), buildFamily(kRobotoBoldItalic)};
|
||||
buildFamily(kBoldFont), buildFamily(kItalicFont), buildFamily(kBoldItalicFont)};
|
||||
std::unique_ptr<Typeface> typeface(Typeface::createFromFamilies(
|
||||
std::move(families), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE));
|
||||
EXPECT_EQ(700, typeface->fStyle.weight());
|
||||
|
||||
Reference in New Issue
Block a user