Loading data/fonts/Android.bp +1 −2 Original line number Diff line number Diff line Loading @@ -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", ], } Loading data/fonts/fonts.xml +184 −21 Original line number Diff line number Diff line Loading @@ -18,24 +18,105 @@ 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> <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" /> <alias name="sans-serif-light" to="sans-serif" weight="300" /> Loading @@ -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" /> Loading libs/hwui/tests/unit/TypefaceTests.cpp +27 −25 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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. Loading Loading @@ -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()); Loading @@ -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()); Loading @@ -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()); Loading Loading
data/fonts/Android.bp +1 −2 Original line number Diff line number Diff line Loading @@ -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", ], } Loading
data/fonts/fonts.xml +184 −21 Original line number Diff line number Diff line Loading @@ -18,24 +18,105 @@ 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> <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" /> <alias name="sans-serif-light" to="sans-serif" weight="300" /> Loading @@ -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" /> Loading
libs/hwui/tests/unit/TypefaceTests.cpp +27 −25 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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. Loading Loading @@ -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()); Loading @@ -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()); Loading @@ -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()); Loading