From 27a0f350ff26ba752eb17a593bbaad17fbbe71d2 Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Wed, 12 Apr 2017 15:05:15 -0400 Subject: Some fixes to the fallback font code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL applies several fixes to the fallback font code. - PDFium uses -1 to indicate that no glyph index was found, but freetype uses 0. In CPDF_TrueTypeFont, an index of 0 indicates a freetype failure, which means we should try to find the glyph from a fallback font. - Improve the fallback glyph calculation by going from original font charcode to unicode to fallback font charcode. - Consider the m_ExtGID on Mac when deciding the fallback. Bug: chromium:665467 Change-Id: I2be34983e0d768d9a598043f84edd2d70f033c86 Reviewed-on: https://pdfium-review.googlesource.com/4055 Commit-Queue: Nicolás Peña Reviewed-by: dsinclair Reviewed-by: Tom Sepez --- core/fpdfapi/font/cpdf_simplefont.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'core/fpdfapi/font/cpdf_simplefont.cpp') diff --git a/core/fpdfapi/font/cpdf_simplefont.cpp b/core/fpdfapi/font/cpdf_simplefont.cpp index a3597824bd..cb8f00a98a 100644 --- a/core/fpdfapi/font/cpdf_simplefont.cpp +++ b/core/fpdfapi/font/cpdf_simplefont.cpp @@ -29,8 +29,11 @@ int CPDF_SimpleFont::GlyphFromCharCode(uint32_t charcode, bool* pVertGlyph) { if (charcode > 0xff) return -1; - int index = m_GlyphIndex[(uint8_t)charcode]; - return index != 0xffff ? index : -1; + int index = m_GlyphIndex[charcode]; + if (index == 0xffff || (index == 0 && IsTrueTypeFont())) + return -1; + + return index; } void CPDF_SimpleFont::LoadCharMetrics(int charcode) { -- cgit v1.2.3