summaryrefslogtreecommitdiff
path: root/core/fxge/ge/cfx_unicodeencoding.cpp
diff options
context:
space:
mode:
authornpm <npm@chromium.org>2016-08-18 10:55:29 -0700
committerCommit bot <commit-bot@chromium.org>2016-08-18 10:55:29 -0700
commit1a8946b09884393d7dc4941e59b3172a7e473b01 (patch)
tree12bfdaad2b15bd515f8d8fff27c7fe0db63cce2b /core/fxge/ge/cfx_unicodeencoding.cpp
parent2eb7c7dd6392488d858989da8d57d618f58f04ca (diff)
downloadpdfium-1a8946b09884393d7dc4941e59b3172a7e473b01.tar.xz
Move CFX_UnicodeEncoding and CFX_UnicodeEncodingEx to their own files.
Review-Url: https://codereview.chromium.org/2260533002
Diffstat (limited to 'core/fxge/ge/cfx_unicodeencoding.cpp')
-rw-r--r--core/fxge/ge/cfx_unicodeencoding.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/core/fxge/ge/cfx_unicodeencoding.cpp b/core/fxge/ge/cfx_unicodeencoding.cpp
new file mode 100644
index 0000000000..456c2f5d49
--- /dev/null
+++ b/core/fxge/ge/cfx_unicodeencoding.cpp
@@ -0,0 +1,33 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fxge/include/cfx_unicodeencoding.h"
+
+#include "core/fxge/include/fx_font.h"
+#include "core/fxge/include/fx_freetype.h"
+
+CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) {}
+
+CFX_UnicodeEncoding::~CFX_UnicodeEncoding() {}
+
+uint32_t CFX_UnicodeEncoding::GlyphFromCharCode(uint32_t charcode) {
+ FXFT_Face face = m_pFont->GetFace();
+ if (!face)
+ return charcode;
+
+ if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0)
+ return FXFT_Get_Char_Index(face, charcode);
+
+ if (m_pFont->GetSubstFont() &&
+ m_pFont->GetSubstFont()->m_Charset == FXFONT_SYMBOL_CHARSET) {
+ uint32_t index = 0;
+ if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0)
+ index = FXFT_Get_Char_Index(face, charcode);
+ if (!index && !FXFT_Select_Charmap(face, FXFT_ENCODING_APPLE_ROMAN))
+ return FXFT_Get_Char_Index(face, charcode);
+ }
+ return charcode;
+}