Add another test for FPDFText_GetFontWeight().
Illustrate the existing behavior and add a TODO to fix it. Rearrange
font_weight.in to make adding new fonts for testing more of an append
operation inside the .in file, to avoid renumbering the /Contents object
every time a font gets added.
Bug: pdfium:1420
Change-Id: I3ceb64eeb342803a2d1f47989d6209d70ed157e3
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/62354
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_text_embeddertest.cpp b/fpdfsdk/fpdf_text_embeddertest.cpp
index 7cbd27a..ff3c2cb 100644
--- a/fpdfsdk/fpdf_text_embeddertest.cpp
+++ b/fpdfsdk/fpdf_text_embeddertest.cpp
@@ -1353,7 +1353,7 @@
FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
ASSERT_TRUE(text_page);
- EXPECT_EQ(1, FPDFText_CountChars(text_page));
+ EXPECT_EQ(2, FPDFText_CountChars(text_page));
EXPECT_EQ(-1, FPDFText_GetFontWeight(nullptr, 0));
EXPECT_EQ(-1, FPDFText_GetFontWeight(text_page, -1));
@@ -1361,8 +1361,12 @@
// The font used for this text only specifies /StemV (80); the weight value
// that is returned should be calculated from that (80*5 == 400).
- int weight = FPDFText_GetFontWeight(text_page, 0);
- EXPECT_EQ(400, weight);
+ EXPECT_EQ(400, FPDFText_GetFontWeight(text_page, 0));
+
+ // Using a /StemV value of 82, the estimate comes out to 410, even though
+ // /FontWeight is 400.
+ // TODO(crbug.com/pdfium/1420): Fix this the return value here.
+ EXPECT_EQ(410, FPDFText_GetFontWeight(text_page, 1));
FPDFText_ClosePage(text_page);
UnloadPage(page);
diff --git a/testing/resources/font_weight.in b/testing/resources/font_weight.in
index fa7336b..7e79cde 100644
--- a/testing/resources/font_weight.in
+++ b/testing/resources/font_weight.in
@@ -16,20 +16,34 @@
/Parent 2 0 R
/Resources <<
/Font <<
- /F1 4 0 R
+ /F1 5 0 R
+ /F2 7 0 R
>>
>>
- /Contents 6 0 R
+ /Contents 4 0 R
>>
endobj
{{object 4 0}} <<
+ {{streamlen}}
+>>
+stream
+BT
+0 30 Td
+/F1 12 Tf
+(1) Tj
+/F2 12 Tf
+(X) Tj
+ET
+endstream
+endobj
+{{object 5 0}} <<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
- /FontDescriptor 5 0 R
+ /FontDescriptor 6 0 R
>>
endobj
-{{object 5 0}} <<
+{{object 6 0}} <<
/Type /FontDescriptor
/FontName /Helvetica
/StemV 80
@@ -41,16 +55,32 @@
/Descent -223
>>
endobj
-{{object 6 0}} <<
- {{streamlen}}
+{{object 7 0}} <<
+ /Type /Font
+ /Subtype /TrueType
+ /BaseFont /TimesNewRomanPSMT
+ /Encoding /WinAnsiEncoding
+ /FirstChar 31
+ /FontDescriptor 8 0 R
+ /LastChar 252
>>
-stream
-BT
-0 30 Td
-/F1 12 Tf
-(1) Tj
-ET
-endstream
+endobj
+{{object 8 0}} <<
+ /Type /FontDescriptor
+ /Ascent 891
+ /CapHeight 656
+ /Descent -216
+ /Flags 34
+ /FontBBox [-568 -307 2000 1007]
+ /FontFamily (Times New Roman)
+ /FontName /TimesNewRomanPSMT
+ /FontStretch /Normal
+ /FontWeight 400
+ /ItalicAngle 0
+ /MissingWidth 778
+ /StemV 82
+ /XHeight -546
+>>
endobj
{{xref}}
{{trailer}}
diff --git a/testing/resources/font_weight.pdf b/testing/resources/font_weight.pdf
index 851aa49..78049d0 100644
--- a/testing/resources/font_weight.pdf
+++ b/testing/resources/font_weight.pdf
@@ -17,20 +17,34 @@
/Parent 2 0 R
/Resources <<
/Font <<
- /F1 4 0 R
+ /F1 5 0 R
+ /F2 7 0 R
>>
>>
- /Contents 6 0 R
+ /Contents 4 0 R
>>
endobj
4 0 obj <<
+ /Length 48
+>>
+stream
+BT
+0 30 Td
+/F1 12 Tf
+(1) Tj
+/F2 12 Tf
+(X) Tj
+ET
+endstream
+endobj
+5 0 obj <<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
- /FontDescriptor 5 0 R
+ /FontDescriptor 6 0 R
>>
endobj
-5 0 obj <<
+6 0 obj <<
/Type /FontDescriptor
/FontName /Helvetica
/StemV 80
@@ -42,30 +56,48 @@
/Descent -223
>>
endobj
-6 0 obj <<
- /Length 31
+7 0 obj <<
+ /Type /Font
+ /Subtype /TrueType
+ /BaseFont /TimesNewRomanPSMT
+ /Encoding /WinAnsiEncoding
+ /FirstChar 31
+ /FontDescriptor 8 0 R
+ /LastChar 252
>>
-stream
-BT
-0 30 Td
-/F1 12 Tf
-(1) Tj
-ET
-endstream
+endobj
+8 0 obj <<
+ /Type /FontDescriptor
+ /Ascent 891
+ /CapHeight 656
+ /Descent -216
+ /Flags 34
+ /FontBBox [-568 -307 2000 1007]
+ /FontFamily (Times New Roman)
+ /FontName /TimesNewRomanPSMT
+ /FontStretch /Normal
+ /FontWeight 400
+ /ItalicAngle 0
+ /MissingWidth 778
+ /StemV 82
+ /XHeight -546
+>>
endobj
xref
-0 7
+0 9
0000000000 65535 f
0000000015 00000 n
0000000068 00000 n
0000000161 00000 n
-0000000287 00000 n
-0000000387 00000 n
-0000000576 00000 n
+0000000303 00000 n
+0000000402 00000 n
+0000000502 00000 n
+0000000691 00000 n
+0000000863 00000 n
trailer <<
/Root 1 0 R
- /Size 7
+ /Size 9
>>
startxref
-658
+1170
%%EOF