diff --git a/data/fonts/Android.bp b/data/fonts/Android.bp index 3a3bea43ab86f..ee5c5b0591cc8 100644 --- a/data/fonts/Android.bp +++ b/data/fonts/Android.bp @@ -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", ], } diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index 4c214b529b39a..be5383bffb28e 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -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 --> - Roboto-Thin.ttf - Roboto-ThinItalic.ttf - Roboto-Light.ttf - Roboto-LightItalic.ttf - Roboto-Regular.ttf - Roboto-Italic.ttf - Roboto-Medium.ttf - Roboto-MediumItalic.ttf - Roboto-Black.ttf - Roboto-BlackItalic.ttf - Roboto-Bold.ttf - Roboto-BoldItalic.ttf - + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + + @@ -47,14 +128,96 @@ - RobotoCondensed-Light.ttf - RobotoCondensed-LightItalic.ttf - RobotoCondensed-Regular.ttf - RobotoCondensed-Italic.ttf - RobotoCondensed-Medium.ttf - RobotoCondensed-MediumItalic.ttf - RobotoCondensed-Bold.ttf - RobotoCondensed-BoldItalic.ttf + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + + Roboto-Regular.ttf + + + + diff --git a/libs/hwui/tests/unit/TypefaceTests.cpp b/libs/hwui/tests/unit/TypefaceTests.cpp index 1a09b1c52d8ae..b5baafd3c2dcb 100644 --- a/libs/hwui/tests/unit/TypefaceTests.cpp +++ b/libs/hwui/tests/unit/TypefaceTests.cpp @@ -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(ptr); @@ -68,7 +70,7 @@ std::vector> makeSingleFamlyVector(const ch TEST(TypefaceTest, resolveDefault_and_setDefaultTest) { std::unique_ptr 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 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 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 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 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 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 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 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 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 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> families = { - buildFamily(kRobotoRegular), buildFamily(kRobotoBold), buildFamily(kRobotoItalic), - buildFamily(kRobotoBoldItalic)}; + buildFamily(kRegularFont), buildFamily(kBoldFont), buildFamily(kItalicFont), + buildFamily(kBoldItalicFont)}; std::unique_ptr 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> families = { - buildFamily(kRobotoBold), buildFamily(kRobotoItalic), buildFamily(kRobotoBoldItalic)}; + buildFamily(kBoldFont), buildFamily(kItalicFont), buildFamily(kBoldItalicFont)}; std::unique_ptr typeface(Typeface::createFromFamilies( std::move(families), RESOLVE_BY_FONT_TABLE, RESOLVE_BY_FONT_TABLE)); EXPECT_EQ(700, typeface->fStyle.weight());