summaryrefslogtreecommitdiff
path: root/core/fpdfapi/font/cpdf_font.cpp
diff options
context:
space:
mode:
authorNicolas Pena <npm@chromium.org>2017-06-19 17:07:40 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-06-19 21:35:03 +0000
commit4db9046e56c884a350fa2c5087f8d5b8110463c4 (patch)
treea423eb6dfe89dd9e7aa5ffc8c728c9bfec938f1b /core/fpdfapi/font/cpdf_font.cpp
parentb73ce7bcd72a97c780176d9f63681a5415c06422 (diff)
downloadpdfium-4db9046e56c884a350fa2c5087f8d5b8110463c4.tar.xz
Add heuristic for improving text rendering in CPDF_CharPosList::Load
This CL uses the following algorithm for improving substitute font spacing (we are assuming the text layout is horizontal): * Calculate PDFWidth, the width that the PDF says the glyph should have. * Calculate FTWidth, the width calculated by freetype for the glyph, using the substitute font that we'll use to render it. Note that some embedded fonts have PDFWidth == FTWidth + 1, so we consider that to be matching widths. * If PDFWidth > FTWidth + 1 , move the x coordinate by the difference / 2 so that the glyph is rendered in a more centered spot and the text looks better. * If PDFWidth < FTWidth, transform the glyph horizontally by PDFWidth / FTWidth so that the glyph gets compressed and does not overlap with surrounding glyphs. Bug: chromium:431507 Change-Id: Ia378344253fabe44d93af4daab98bb3b7bca22de Reviewed-on: https://pdfium-review.googlesource.com/6630 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Nicolás Peña <npm@chromium.org>
Diffstat (limited to 'core/fpdfapi/font/cpdf_font.cpp')
-rw-r--r--core/fpdfapi/font/cpdf_font.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 1faa4ec4be..bdd3464ed2 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -159,6 +159,10 @@ uint32_t CPDF_Font::CharCodeFromUnicode(wchar_t unicode) const {
return m_pToUnicodeMap ? m_pToUnicodeMap->ReverseLookup(unicode) : 0;
}
+bool CPDF_Font::HasFontWidths() const {
+ return true;
+}
+
void CPDF_Font::LoadFontDescriptor(CPDF_Dictionary* pFontDesc) {
m_Flags = pFontDesc->GetIntegerFor("Flags", FXFONT_NONSYMBOLIC);
int ItalicAngle = 0;