| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include <ctype.h> | 8 #include <ctype.h> |
| 9 | 9 |
| 10 #include "SkData.h" | 10 #include "SkData.h" |
| (...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1136 | 1136 |
| 1137 insert("FontDescriptor", new SkPDFObjRef(descriptor.get()))->unref(); | 1137 insert("FontDescriptor", new SkPDFObjRef(descriptor.get()))->unref(); |
| 1138 return addCommonFontDescriptorEntries(defaultWidth); | 1138 return addCommonFontDescriptorEntries(defaultWidth); |
| 1139 } | 1139 } |
| 1140 | 1140 |
| 1141 bool SkPDFCIDFont::populate(const SkPDFGlyphSet* subset) { | 1141 bool SkPDFCIDFont::populate(const SkPDFGlyphSet* subset) { |
| 1142 // Generate new font metrics with advance info for true type fonts. | 1142 // Generate new font metrics with advance info for true type fonts. |
| 1143 if (fontInfo()->fType == SkAdvancedTypefaceMetrics::kTrueType_Font) { | 1143 if (fontInfo()->fType == SkAdvancedTypefaceMetrics::kTrueType_Font) { |
| 1144 // Generate glyph id array. | 1144 // Generate glyph id array. |
| 1145 SkTDArray<uint32_t> glyphIDs; | 1145 SkTDArray<uint32_t> glyphIDs; |
| 1146 glyphIDs.push(0); // Always include glyph 0. | |
| 1147 if (subset) { | 1146 if (subset) { |
| 1147 // Always include glyph 0. |
| 1148 if (!subset->has(0)) { |
| 1149 glyphIDs.push(0); |
| 1150 } |
| 1148 subset->exportTo(&glyphIDs); | 1151 subset->exportTo(&glyphIDs); |
| 1149 } | 1152 } |
| 1150 | 1153 |
| 1151 SkAdvancedTypefaceMetrics::PerGlyphInfo info; | 1154 SkAdvancedTypefaceMetrics::PerGlyphInfo info; |
| 1152 info = SkAdvancedTypefaceMetrics::kGlyphNames_PerGlyphInfo; | 1155 info = SkAdvancedTypefaceMetrics::kGlyphNames_PerGlyphInfo; |
| 1153 info = SkTBitOr<SkAdvancedTypefaceMetrics::PerGlyphInfo>( | 1156 info = SkTBitOr<SkAdvancedTypefaceMetrics::PerGlyphInfo>( |
| 1154 info, SkAdvancedTypefaceMetrics::kHAdvance_PerGlyphInfo); | 1157 info, SkAdvancedTypefaceMetrics::kHAdvance_PerGlyphInfo); |
| 1155 uint32_t* glyphs = (glyphIDs.count() == 1) ? NULL : glyphIDs.begin(); | 1158 uint32_t* glyphs = (glyphIDs.count() == 0) ? NULL : glyphIDs.begin(); |
| 1156 uint32_t glyphsCount = glyphs ? glyphIDs.count() : 0; | 1159 uint32_t glyphsCount = glyphs ? glyphIDs.count() : 0; |
| 1157 SkAutoTUnref<SkAdvancedTypefaceMetrics> fontMetrics( | 1160 SkAutoTUnref<SkAdvancedTypefaceMetrics> fontMetrics( |
| 1158 typeface()->getAdvancedTypefaceMetrics(info, glyphs, glyphsCount)); | 1161 typeface()->getAdvancedTypefaceMetrics(info, glyphs, glyphsCount)); |
| 1159 setFontInfo(fontMetrics.get()); | 1162 setFontInfo(fontMetrics.get()); |
| 1160 addFontDescriptor(0, &glyphIDs); | 1163 addFontDescriptor(0, &glyphIDs); |
| 1161 } else { | 1164 } else { |
| 1162 // Other CID fonts | 1165 // Other CID fonts |
| 1163 addFontDescriptor(0, NULL); | 1166 addFontDescriptor(0, NULL); |
| 1164 } | 1167 } |
| 1165 | 1168 |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1421 | 1424 |
| 1422 insert("FontBBox", makeFontBBox(bbox, 1000))->unref(); | 1425 insert("FontBBox", makeFontBBox(bbox, 1000))->unref(); |
| 1423 insertInt("FirstChar", firstGlyphID()); | 1426 insertInt("FirstChar", firstGlyphID()); |
| 1424 insertInt("LastChar", lastGlyphID()); | 1427 insertInt("LastChar", lastGlyphID()); |
| 1425 insert("Widths", widthArray.get()); | 1428 insert("Widths", widthArray.get()); |
| 1426 insertName("CIDToGIDMap", "Identity"); | 1429 insertName("CIDToGIDMap", "Identity"); |
| 1427 | 1430 |
| 1428 populateToUnicodeTable(NULL); | 1431 populateToUnicodeTable(NULL); |
| 1429 return true; | 1432 return true; |
| 1430 } | 1433 } |
| OLD | NEW |