Index: core/fpdfapi/font/cpdf_type1font.cpp |
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp |
index 127ec281ec4f8e3c81ff4df1a99bb80f3994680e..9ef45100d4e762d104885f92ed26c51452f8b6ec 100644 |
--- a/core/fpdfapi/font/cpdf_type1font.cpp |
+++ b/core/fpdfapi/font/cpdf_type1font.cpp |
@@ -140,18 +140,7 @@ void CPDF_Type1Font::LoadGlyphMap() { |
m_GlyphIndex[charcode] = |
FXFT_Get_Char_Index(m_Font.GetFace(), unicode); |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
- FX_CHAR name_glyph[256]; |
- FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], |
- name_glyph, 256); |
- name_glyph[255] = 0; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ CalcExtGID(charcode); |
#endif |
if (m_GlyphIndex[charcode]) { |
bGotOne = true; |
@@ -181,35 +170,13 @@ void CPDF_Type1Font::LoadGlyphMap() { |
m_GlyphIndex[charcode] = FXFT_Get_Char_Index( |
m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
- FX_CHAR name_glyph[256]; |
- FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph, |
- 256); |
- name_glyph[255] = 0; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ CalcExtGID(charcode); |
#endif |
if (m_GlyphIndex[charcode] == 0 && FXSYS_strcmp(name, ".notdef") == 0) { |
m_Encoding.m_Unicodes[charcode] = 0x20; |
m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20); |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
- FX_CHAR name_glyph[256]; |
- FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], |
- name_glyph, 256); |
- name_glyph[255] = 0; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ CalcExtGID(charcode); |
#endif |
} |
} |
@@ -230,14 +197,7 @@ void CPDF_Type1Font::LoadGlyphMap() { |
m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); |
m_GlyphIndex[charcode] = |
FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ SetExtGID(name, charcode); |
} else { |
m_GlyphIndex[charcode] = |
FXFT_Get_Char_Index(m_Font.GetFace(), charcode); |
@@ -255,14 +215,7 @@ void CPDF_Type1Font::LoadGlyphMap() { |
unicode = PDF_UnicodeFromAdobeName(name_glyph); |
} |
m_Encoding.m_Unicodes[charcode] = unicode; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ SetExtGID(name_glyph, charcode); |
} |
} |
return; |
@@ -285,47 +238,19 @@ void CPDF_Type1Font::LoadGlyphMap() { |
} |
m_GlyphIndex[charcode] = |
FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ SetExtGID(name, charcode); |
if (m_GlyphIndex[charcode] == 0) { |
if (FXSYS_strcmp(name, ".notdef") != 0 && |
FXSYS_strcmp(name, "space") != 0) { |
m_GlyphIndex[charcode] = FXFT_Get_Char_Index( |
m_Font.GetFace(), |
bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); |
- FX_CHAR name_glyph[256]; |
- FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], |
- name_glyph, 256); |
- name_glyph[255] = 0; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ CalcExtGID(charcode); |
} else { |
m_Encoding.m_Unicodes[charcode] = 0x20; |
m_GlyphIndex[charcode] = |
bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff; |
- FX_CHAR name_glyph[256]; |
- FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], |
- name_glyph, 256); |
- name_glyph[255] = 0; |
- CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
- kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, |
- kCFAllocatorNull); |
- m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( |
- (CGFontRef)m_Font.GetPlatformFont(), name_ct); |
- if (name_ct) { |
- CFRelease(name_ct); |
- } |
+ CalcExtGID(charcode); |
} |
} |
} |
@@ -396,3 +321,22 @@ void CPDF_Type1Font::LoadGlyphMap() { |
FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); |
#endif |
} |
+ |
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
+void CPDF_Type1Font::SetExtGID(const FX_CHAR* name, int charcode) { |
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy( |
+ kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull); |
+ m_ExtGID[charcode] = |
+ CGFontGetGlyphWithGlyphName((CGFontRef)m_Font.GetPlatformFont(), name_ct); |
+ if (name_ct) |
+ CFRelease(name_ct); |
+} |
+ |
+void CPDF_Type1Font::CalcExtGID(int charcode) { |
+ FX_CHAR name_glyph[256]; |
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph, |
+ 256); |
+ name_glyph[255] = 0; |
+ SetExtGID(name_glyph, charcode); |
+} |
+#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |