xref: /aosp_15_r20/frameworks/minikin/tests/unittest/FontFakeryTest.cpp (revision 834a2baab5fdfc28e9a428ee87c7ea8f6a06a53d)
1*834a2baaSAndroid Build Coastguard Worker /*
2*834a2baaSAndroid Build Coastguard Worker  * Copyright (C) 2024 The Android Open Source Project
3*834a2baaSAndroid Build Coastguard Worker  *
4*834a2baaSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*834a2baaSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*834a2baaSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*834a2baaSAndroid Build Coastguard Worker  *
8*834a2baaSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*834a2baaSAndroid Build Coastguard Worker  *
10*834a2baaSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*834a2baaSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*834a2baaSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*834a2baaSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*834a2baaSAndroid Build Coastguard Worker  * limitations under the License.
15*834a2baaSAndroid Build Coastguard Worker  */
16*834a2baaSAndroid Build Coastguard Worker 
17*834a2baaSAndroid Build Coastguard Worker #include <gtest/gtest.h>
18*834a2baaSAndroid Build Coastguard Worker 
19*834a2baaSAndroid Build Coastguard Worker #include "FontVariationTestUtils.h"
20*834a2baaSAndroid Build Coastguard Worker #include "minikin/Constants.h"
21*834a2baaSAndroid Build Coastguard Worker #include "minikin/FontFakery.h"
22*834a2baaSAndroid Build Coastguard Worker 
23*834a2baaSAndroid Build Coastguard Worker namespace minikin {
24*834a2baaSAndroid Build Coastguard Worker 
25*834a2baaSAndroid Build Coastguard Worker namespace {
26*834a2baaSAndroid Build Coastguard Worker 
27*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle THIN = FontStyle(FontStyle::Weight::THIN, FontStyle::Slant::UPRIGHT);
28*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle REGULAR = FontStyle(FontStyle::Weight::NORMAL, FontStyle::Slant::UPRIGHT);
29*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle MEDIUM = FontStyle(FontStyle::Weight::MEDIUM, FontStyle::Slant::UPRIGHT);
30*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle BOLD = FontStyle(FontStyle::Weight::BOLD, FontStyle::Slant::UPRIGHT);
31*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle BLACK = FontStyle(FontStyle::Weight::BLACK, FontStyle::Slant::UPRIGHT);
32*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle ITALIC = FontStyle(FontStyle::Weight::NORMAL, FontStyle::Slant::ITALIC);
33*834a2baaSAndroid Build Coastguard Worker constexpr FontStyle BOLD_ITALIC = FontStyle(FontStyle::Weight::BOLD, FontStyle::Slant::ITALIC);
34*834a2baaSAndroid Build Coastguard Worker 
merge(const FVarTable & fvar,const std::string & base,const std::string & target,FontStyle baseStyle,FontStyle targetStyle)35*834a2baaSAndroid Build Coastguard Worker FontFakery merge(const FVarTable& fvar, const std::string& base, const std::string& target,
36*834a2baaSAndroid Build Coastguard Worker                  FontStyle baseStyle, FontStyle targetStyle) {
37*834a2baaSAndroid Build Coastguard Worker     return merge(fvar, parseVariationSettings(base), parseVariationSettings(target), baseStyle,
38*834a2baaSAndroid Build Coastguard Worker                  targetStyle);
39*834a2baaSAndroid Build Coastguard Worker }
40*834a2baaSAndroid Build Coastguard Worker 
41*834a2baaSAndroid Build Coastguard Worker }  // namespace
42*834a2baaSAndroid Build Coastguard Worker 
operator ==(const char * expect,const VariationSettings & vs)43*834a2baaSAndroid Build Coastguard Worker inline bool operator==(const char* expect, const VariationSettings& vs) {
44*834a2baaSAndroid Build Coastguard Worker     VariationSettings expectVarSettings = parseVariationSettings(expect);
45*834a2baaSAndroid Build Coastguard Worker     return expectVarSettings == vs;
46*834a2baaSAndroid Build Coastguard Worker }
47*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testConstruct)48*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testConstruct) {
49*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(FontFakery(), FontFakery(false, false));
50*834a2baaSAndroid Build Coastguard Worker     EXPECT_NE(FontFakery(), FontFakery(true, false));
51*834a2baaSAndroid Build Coastguard Worker     EXPECT_NE(FontFakery(), FontFakery(false, true));
52*834a2baaSAndroid Build Coastguard Worker     EXPECT_NE(FontFakery(), FontFakery(true, true));
53*834a2baaSAndroid Build Coastguard Worker 
54*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(true, true).isFakeBold());
55*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(true, true).isFakeItalic());
56*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(true, true).variationSettings().empty());
57*834a2baaSAndroid Build Coastguard Worker 
58*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(FontFakery(false, false).isFakeBold());
59*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(FontFakery(false, false).isFakeItalic());
60*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(false, false).variationSettings().empty());
61*834a2baaSAndroid Build Coastguard Worker 
62*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(true, false).isFakeBold());
63*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(FontFakery(true, false).isFakeItalic());
64*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(true, false).variationSettings().empty());
65*834a2baaSAndroid Build Coastguard Worker 
66*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(FontFakery(false, true).isFakeBold());
67*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(false, true).isFakeItalic());
68*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(FontFakery(false, true).variationSettings().empty());
69*834a2baaSAndroid Build Coastguard Worker }
70*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testVariationSettings)71*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testVariationSettings) {
72*834a2baaSAndroid Build Coastguard Worker     VariationSettings variationSettings = {FontVariation(TAG_wght, 400),
73*834a2baaSAndroid Build Coastguard Worker                                            FontVariation(TAG_ital, 1)};
74*834a2baaSAndroid Build Coastguard Worker 
75*834a2baaSAndroid Build Coastguard Worker     auto ff = FontFakery(false, false, std::move(variationSettings));
76*834a2baaSAndroid Build Coastguard Worker 
77*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(2u, ff.variationSettings().size());
78*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(TAG_ital, ff.variationSettings()[0].axisTag);
79*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(1, ff.variationSettings()[0].value);
80*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(TAG_wght, ff.variationSettings()[1].axisTag);
81*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(400, ff.variationSettings()[1].value);
82*834a2baaSAndroid Build Coastguard Worker }
83*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge)84*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge) {
85*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{MakeTag('A', 'B', 'C', 'D'), {0, 100, 50}}};
86*834a2baaSAndroid Build Coastguard Worker 
87*834a2baaSAndroid Build Coastguard Worker     // Override should be used.
88*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ABCD' 100", merge(fvar, "", "'ABCD' 100", REGULAR, REGULAR).variationSettings());
89*834a2baaSAndroid Build Coastguard Worker     // Base should be remains
90*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ABCD' 0", merge(fvar, "'ABCD' 0", "", REGULAR, REGULAR).variationSettings());
91*834a2baaSAndroid Build Coastguard Worker     // The default value from the target VS should be preserved.
92*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ABCD' 50", merge(fvar, "", "'ABCD' 50", REGULAR, REGULAR).variationSettings());
93*834a2baaSAndroid Build Coastguard Worker     // Override should override the base settings.
94*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ABCD' 100",
95*834a2baaSAndroid Build Coastguard Worker               merge(fvar, "'ABCD' 0", "'ABCD' 100", REGULAR, REGULAR).variationSettings());
96*834a2baaSAndroid Build Coastguard Worker }
97*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_twoAxes)98*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_twoAxes) {
99*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{MakeTag('A', 'B', 'C', 'D'), {0, 100, 50}},
100*834a2baaSAndroid Build Coastguard Worker                       {MakeTag('E', 'F', 'G', 'H'), {0, 100, 50}}};
101*834a2baaSAndroid Build Coastguard Worker 
102*834a2baaSAndroid Build Coastguard Worker     // Different axes should be preserved.
103*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ABCD' 100, 'EFGH' 100",
104*834a2baaSAndroid Build Coastguard Worker               merge(fvar, "'ABCD' 100", "'EFGH' 100", REGULAR, REGULAR).variationSettings());
105*834a2baaSAndroid Build Coastguard Worker     // Overrides override only matched axis.
106*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ(
107*834a2baaSAndroid Build Coastguard Worker             "'ABCD' 0, 'EFGH' 100",
108*834a2baaSAndroid Build Coastguard Worker             merge(fvar, "'ABCD' 0, 'EFGH' 0", "'EFGH' 100", REGULAR, REGULAR).variationSettings());
109*834a2baaSAndroid Build Coastguard Worker }
110*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_styleWeight)111*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_styleWeight) {
112*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_wght, {100, 900, 400}}, {TAG_ital, {0, 1, 0}}};
113*834a2baaSAndroid Build Coastguard Worker 
114*834a2baaSAndroid Build Coastguard Worker     // Default FontStyle sets wght 400 and it is dropped.
115*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("", merge(fvar, "", "", REGULAR, REGULAR).variationSettings());
116*834a2baaSAndroid Build Coastguard Worker     // Use weight of FontStyle if no override is specified.
117*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'wght' 100", merge(fvar, "", "", REGULAR, THIN).variationSettings());
118*834a2baaSAndroid Build Coastguard Worker     // If override is spseicied, it is used instead of FontStyle.
119*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'wght' 500", merge(fvar, "", "'wght' 500", REGULAR, THIN).variationSettings());
120*834a2baaSAndroid Build Coastguard Worker }
121*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_styleItal)122*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_styleItal) {
123*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_wght, {100, 900, 400}}, {TAG_ital, {0, 1, 0}}};
124*834a2baaSAndroid Build Coastguard Worker 
125*834a2baaSAndroid Build Coastguard Worker     // Use weight of FontStyle if no override is specified.
126*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ital' 1", merge(fvar, "", "", REGULAR, ITALIC).variationSettings());
127*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ital' 1", merge(fvar, "'ital' 1", "", REGULAR, REGULAR).variationSettings());
128*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ital' 0", merge(fvar, "'ital' 0", "", REGULAR, ITALIC).variationSettings());
129*834a2baaSAndroid Build Coastguard Worker     // If override is spseicied, it is used instead of FontStyle.
130*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'ital' 0", merge(fvar, "", "'ital' 0", REGULAR, ITALIC).variationSettings());
131*834a2baaSAndroid Build Coastguard Worker }
132*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_styleSlnt)133*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_styleSlnt) {
134*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_wght, {100, 900, 400}}, {TAG_slnt, {-10, 0, 0}}};
135*834a2baaSAndroid Build Coastguard Worker 
136*834a2baaSAndroid Build Coastguard Worker     // Use weight of FontStyle if no override is specified.
137*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'slnt' -10", merge(fvar, "", "", REGULAR, ITALIC).variationSettings());
138*834a2baaSAndroid Build Coastguard Worker     // If override is spseicied, it is used instead of FontStyle.
139*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'slnt' 0", merge(fvar, "", "'slnt' 0", REGULAR, ITALIC).variationSettings());
140*834a2baaSAndroid Build Coastguard Worker }
141*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_complex)142*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_complex) {
143*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {
144*834a2baaSAndroid Build Coastguard Worker             {TAG_wght, {100, 900, 400}},
145*834a2baaSAndroid Build Coastguard Worker             {TAG_slnt, {-10, 0, 0}},
146*834a2baaSAndroid Build Coastguard Worker             {MakeTag('A', 'B', 'C', 'D'), {0, 100, 50}},
147*834a2baaSAndroid Build Coastguard Worker     };
148*834a2baaSAndroid Build Coastguard Worker 
149*834a2baaSAndroid Build Coastguard Worker     EXPECT_EQ("'wght' 750, 'slnt' -10, 'ABCD' 75",
150*834a2baaSAndroid Build Coastguard Worker               merge(fvar, "'wght' 650", "'wght' 750, 'ABCD' 75", REGULAR, ITALIC)
151*834a2baaSAndroid Build Coastguard Worker                       .variationSettings());
152*834a2baaSAndroid Build Coastguard Worker }
153*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeBold_unsupported_font)154*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeBold_unsupported_font) {
155*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {};
156*834a2baaSAndroid Build Coastguard Worker 
157*834a2baaSAndroid Build Coastguard Worker     // The same weight won't enable fake bold.
158*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, REGULAR).isFakeBold());
159*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", BOLD, BOLD).isFakeBold());
160*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", THIN, THIN).isFakeBold());
161*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", BLACK, BLACK).isFakeBold());
162*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, ITALIC).isFakeBold());
163*834a2baaSAndroid Build Coastguard Worker 
164*834a2baaSAndroid Build Coastguard Worker     // If the weight diff is more than 200, fake bold is enabled.
165*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", REGULAR, BOLD).isFakeBold());
166*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", REGULAR, BLACK).isFakeBold());
167*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", BOLD, BLACK).isFakeBold());
168*834a2baaSAndroid Build Coastguard Worker 
169*834a2baaSAndroid Build Coastguard Worker     // If the requested weight is less than 600, the fake bold is not enabled.
170*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", THIN, REGULAR).isFakeBold());
171*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", THIN, MEDIUM).isFakeBold());
172*834a2baaSAndroid Build Coastguard Worker }
173*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeBold_fullrange_font)174*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeBold_fullrange_font) {
175*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_wght, {100, 900, 400}}};
176*834a2baaSAndroid Build Coastguard Worker 
177*834a2baaSAndroid Build Coastguard Worker     // If the given font supports full range of weight, the fake bold is never enabled.
178*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, THIN).isFakeBold());
179*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, REGULAR).isFakeBold());
180*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, MEDIUM).isFakeBold());
181*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BOLD).isFakeBold());
182*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BLACK).isFakeBold());
183*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, ITALIC).isFakeBold());
184*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BOLD_ITALIC).isFakeBold());
185*834a2baaSAndroid Build Coastguard Worker }
186*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeBold_limited_range_font)187*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeBold_limited_range_font) {
188*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_wght, {100, 700, 400}}};
189*834a2baaSAndroid Build Coastguard Worker 
190*834a2baaSAndroid Build Coastguard Worker     // If the weight diff from the upper limit of the weight is more than 200, fake bold is enabled.
191*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BOLD).isFakeBold());
192*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", REGULAR, BLACK).isFakeBold());
193*834a2baaSAndroid Build Coastguard Worker }
194*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeItalic_unsupported_font)195*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeItalic_unsupported_font) {
196*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {};
197*834a2baaSAndroid Build Coastguard Worker 
198*834a2baaSAndroid Build Coastguard Worker     // The same italic won't enable fake italic.
199*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, REGULAR).isFakeItalic());
200*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", ITALIC, ITALIC).isFakeItalic());
201*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", BOLD_ITALIC, BOLD_ITALIC).isFakeItalic());
202*834a2baaSAndroid Build Coastguard Worker 
203*834a2baaSAndroid Build Coastguard Worker     // If the target style is italic but base style is not, fake bold is enabled.
204*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", REGULAR, ITALIC).isFakeItalic());
205*834a2baaSAndroid Build Coastguard Worker     EXPECT_TRUE(merge(fvar, "", "", REGULAR, BOLD_ITALIC).isFakeItalic());
206*834a2baaSAndroid Build Coastguard Worker }
207*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeItalic_ital_font)208*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeItalic_ital_font) {
209*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_ital, {0, 1, 0}}};
210*834a2baaSAndroid Build Coastguard Worker 
211*834a2baaSAndroid Build Coastguard Worker     // If the font supports ital tag, the fake italic is never enabled.
212*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, ITALIC).isFakeItalic());
213*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BOLD_ITALIC).isFakeItalic());
214*834a2baaSAndroid Build Coastguard Worker }
215*834a2baaSAndroid Build Coastguard Worker 
TEST(FontFakeryTest,testMerge_fakeItalic_slnt_font)216*834a2baaSAndroid Build Coastguard Worker TEST(FontFakeryTest, testMerge_fakeItalic_slnt_font) {
217*834a2baaSAndroid Build Coastguard Worker     FVarTable fvar = {{TAG_slnt, {-10, 0, 0}}};
218*834a2baaSAndroid Build Coastguard Worker 
219*834a2baaSAndroid Build Coastguard Worker     // If the font supports slnt tag, the fake italic is never enabled.
220*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, ITALIC).isFakeItalic());
221*834a2baaSAndroid Build Coastguard Worker     EXPECT_FALSE(merge(fvar, "", "", REGULAR, BOLD_ITALIC).isFakeItalic());
222*834a2baaSAndroid Build Coastguard Worker }
223*834a2baaSAndroid Build Coastguard Worker 
224*834a2baaSAndroid Build Coastguard Worker }  // namespace minikin
225