Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Side by Side Diff: core/fpdfapi/fpdf_parser/cpdf_document.cpp

Issue 2347313002: Remove duplicated charset definitions (Closed)
Patch Set: Nits Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | core/fpdfdoc/cpdf_interform.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 break; 772 break;
773 case FXFONT_GB2312_CHARSET: 773 case FXFONT_GB2312_CHARSET:
774 cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; 774 cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
775 ordering = "GB1"; 775 ordering = "GB1";
776 supplement = 2; 776 supplement = 2;
777 pWidthArray->AddInteger(7716); 777 pWidthArray->AddInteger(7716);
778 Insert(0x20, 0x20, pWidthArray); 778 Insert(0x20, 0x20, pWidthArray);
779 pWidthArray->AddInteger(814); 779 pWidthArray->AddInteger(814);
780 Insert(0x21, 0x7e, pWidthArray); 780 Insert(0x21, 0x7e, pWidthArray);
781 break; 781 break;
782 case FXFONT_HANGEUL_CHARSET: 782 case FXFONT_HANGUL_CHARSET:
783 cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; 783 cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
784 ordering = "Korea1"; 784 ordering = "Korea1";
785 supplement = 2; 785 supplement = 2;
786 pWidthArray->AddInteger(1); 786 pWidthArray->AddInteger(1);
787 Insert(0x20, 0x7e, pWidthArray); 787 Insert(0x20, 0x7e, pWidthArray);
788 break; 788 break;
789 case FXFONT_SHIFTJIS_CHARSET: 789 case FXFONT_SHIFTJIS_CHARSET:
790 cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; 790 cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
791 ordering = "Japan1"; 791 ordering = "Japan1";
792 supplement = 5; 792 supplement = 5;
(...skipping 25 matching lines...) Expand all
818 pArray->AddReference(this, pFontDict); 818 pArray->AddReference(this, pFontDict);
819 return pFontDict; 819 return pFontDict;
820 } 820 }
821 821
822 CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) { 822 CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
823 if (!pFont) 823 if (!pFont)
824 return nullptr; 824 return nullptr;
825 825
826 bool bCJK = charset == FXFONT_CHINESEBIG5_CHARSET || 826 bool bCJK = charset == FXFONT_CHINESEBIG5_CHARSET ||
827 charset == FXFONT_GB2312_CHARSET || 827 charset == FXFONT_GB2312_CHARSET ||
828 charset == FXFONT_HANGEUL_CHARSET || 828 charset == FXFONT_HANGUL_CHARSET ||
829 charset == FXFONT_SHIFTJIS_CHARSET; 829 charset == FXFONT_SHIFTJIS_CHARSET;
830 CFX_ByteString basefont = pFont->GetFamilyName(); 830 CFX_ByteString basefont = pFont->GetFamilyName();
831 basefont.Replace(" ", ""); 831 basefont.Replace(" ", "");
832 int flags = 832 int flags =
833 CalculateFlags(pFont->IsBold(), pFont->IsItalic(), pFont->IsFixedWidth(), 833 CalculateFlags(pFont->IsBold(), pFont->IsItalic(), pFont->IsFixedWidth(),
834 false, false, charset == FXFONT_SYMBOL_CHARSET); 834 false, false, charset == FXFONT_SYMBOL_CHARSET);
835 835
836 CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; 836 CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
837 pBaseDict->SetNameFor("Type", "Font"); 837 pBaseDict->SetNameFor("Type", "Font");
838 std::unique_ptr<CFX_UnicodeEncoding> pEncoding( 838 std::unique_ptr<CFX_UnicodeEncoding> pEncoding(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 return nullptr; 937 return nullptr;
938 } 938 }
939 939
940 LPBYTE tm_buf = FX_Alloc(BYTE, tm_size); 940 LPBYTE tm_buf = FX_Alloc(BYTE, tm_size);
941 OUTLINETEXTMETRIC* ptm = reinterpret_cast<OUTLINETEXTMETRIC*>(tm_buf); 941 OUTLINETEXTMETRIC* ptm = reinterpret_cast<OUTLINETEXTMETRIC*>(tm_buf);
942 GetOutlineTextMetrics(hDC, tm_size, ptm); 942 GetOutlineTextMetrics(hDC, tm_size, ptm);
943 int flags = CalculateFlags(false, pLogFont->lfItalic != 0, 943 int flags = CalculateFlags(false, pLogFont->lfItalic != 0,
944 (pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH, 944 (pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH,
945 (pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN, 945 (pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN,
946 (pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT, 946 (pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT,
947 pLogFont->lfCharSet == SYMBOL_CHARSET); 947 pLogFont->lfCharSet == FXFONT_SYMBOL_CHARSET);
948 948
949 bool bCJK = pLogFont->lfCharSet == CHINESEBIG5_CHARSET || 949 bool bCJK = pLogFont->lfCharSet == FXFONT_CHINESEBIG5_CHARSET ||
950 pLogFont->lfCharSet == GB2312_CHARSET || 950 pLogFont->lfCharSet == FXFONT_GB2312_CHARSET ||
951 pLogFont->lfCharSet == HANGEUL_CHARSET || 951 pLogFont->lfCharSet == FXFONT_HANGUL_CHARSET ||
952 pLogFont->lfCharSet == SHIFTJIS_CHARSET; 952 pLogFont->lfCharSet == FXFONT_SHIFTJIS_CHARSET;
953 CFX_ByteString basefont; 953 CFX_ByteString basefont;
954 if (bTranslateName && bCJK) 954 if (bTranslateName && bCJK)
955 basefont = FPDF_GetPSNameFromTT(hDC); 955 basefont = FPDF_GetPSNameFromTT(hDC);
956 956
957 if (basefont.IsEmpty()) 957 if (basefont.IsEmpty())
958 basefont = pLogFont->lfFaceName; 958 basefont = pLogFont->lfFaceName;
959 959
960 int italicangle = ptm->otmItalicAngle / 10; 960 int italicangle = ptm->otmItalicAngle / 10;
961 int ascend = ptm->otmrcFontBox.top; 961 int ascend = ptm->otmrcFontBox.top;
962 int descend = ptm->otmrcFontBox.bottom; 962 int descend = ptm->otmrcFontBox.bottom;
963 int capheight = ptm->otmsCapEmHeight; 963 int capheight = ptm->otmsCapEmHeight;
964 int bbox[4] = {ptm->otmrcFontBox.left, ptm->otmrcFontBox.bottom, 964 int bbox[4] = {ptm->otmrcFontBox.left, ptm->otmrcFontBox.bottom,
965 ptm->otmrcFontBox.right, ptm->otmrcFontBox.top}; 965 ptm->otmrcFontBox.right, ptm->otmrcFontBox.top};
966 FX_Free(tm_buf); 966 FX_Free(tm_buf);
967 basefont.Replace(" ", ""); 967 basefont.Replace(" ", "");
968 CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; 968 CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
969 pBaseDict->SetNameFor("Type", "Font"); 969 pBaseDict->SetNameFor("Type", "Font");
970 CPDF_Dictionary* pFontDict = pBaseDict; 970 CPDF_Dictionary* pFontDict = pBaseDict;
971 if (!bCJK) { 971 if (!bCJK) {
972 if (pLogFont->lfCharSet == ANSI_CHARSET || 972 if (pLogFont->lfCharSet == FXFONT_ANSI_CHARSET ||
973 pLogFont->lfCharSet == DEFAULT_CHARSET || 973 pLogFont->lfCharSet == FXFONT_DEFAULT_CHARSET ||
974 pLogFont->lfCharSet == SYMBOL_CHARSET) { 974 pLogFont->lfCharSet == FXFONT_SYMBOL_CHARSET) {
975 pBaseDict->SetNameFor("Encoding", "WinAnsiEncoding"); 975 pBaseDict->SetNameFor("Encoding", "WinAnsiEncoding");
976 } else { 976 } else {
977 CalculateEncodingDict(pLogFont->lfCharSet, pBaseDict); 977 CalculateEncodingDict(pLogFont->lfCharSet, pBaseDict);
978 } 978 }
979 int char_widths[224]; 979 int char_widths[224];
980 GetCharWidth(hDC, 32, 255, char_widths); 980 GetCharWidth(hDC, 32, 255, char_widths);
981 CPDF_Array* pWidths = new CPDF_Array; 981 CPDF_Array* pWidths = new CPDF_Array;
982 for (size_t i = 0; i < 224; i++) 982 for (size_t i = 0; i < 224; i++)
983 pWidths->AddInteger(char_widths[i]); 983 pWidths->AddInteger(char_widths[i]);
984 ProcessNonbCJK(pBaseDict, pLogFont->lfWeight > FW_MEDIUM, 984 ProcessNonbCJK(pBaseDict, pLogFont->lfWeight > FW_MEDIUM,
(...skipping 14 matching lines...) Expand all
999 pLogFont->lfWeight / 5); 999 pLogFont->lfWeight / 5);
1000 pFontDesc->SetIntegerFor("CapHeight", capheight); 1000 pFontDesc->SetIntegerFor("CapHeight", capheight);
1001 AddIndirectObject(pFontDesc); 1001 AddIndirectObject(pFontDesc);
1002 pFontDict->SetReferenceFor("FontDescriptor", this, pFontDesc); 1002 pFontDict->SetReferenceFor("FontDescriptor", this, pFontDesc);
1003 hFont = SelectObject(hDC, hFont); 1003 hFont = SelectObject(hDC, hFont);
1004 DeleteObject(hFont); 1004 DeleteObject(hFont);
1005 DeleteDC(hDC); 1005 DeleteDC(hDC);
1006 return LoadFont(pBaseDict); 1006 return LoadFont(pBaseDict);
1007 } 1007 }
1008 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 1008 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
OLDNEW
« no previous file with comments | « no previous file | core/fpdfdoc/cpdf_interform.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698