| Index: src/ports/SkFontHost_win_dw.cpp
|
| ===================================================================
|
| --- src/ports/SkFontHost_win_dw.cpp (revision 8262)
|
| +++ src/ports/SkFontHost_win_dw.cpp (working copy)
|
| @@ -481,6 +481,9 @@
|
| protected:
|
| virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK_OVERRIDE;
|
| virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE;
|
| + virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics(
|
| + SkAdvancedTypefaceMetrics::PerGlyphInfo,
|
| + const uint32_t*, uint32_t) const SK_OVERRIDE;
|
| };
|
|
|
| class SkScalerContext_Windows : public SkScalerContext {
|
| @@ -1397,23 +1400,19 @@
|
| void* fLock;
|
| };
|
|
|
| -// static
|
| -SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics(
|
| - uint32_t fontID,
|
| +SkAdvancedTypefaceMetrics* DWriteFontTypeface::onGetAdvancedTypefaceMetrics(
|
| SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo,
|
| const uint32_t* glyphIDs,
|
| - uint32_t glyphIDsCount) {
|
| + uint32_t glyphIDsCount) const {
|
|
|
| SkAdvancedTypefaceMetrics* info = NULL;
|
|
|
| HRESULT hr = S_OK;
|
|
|
| - DWriteFontTypeface* typeface = GetDWriteFontByID(fontID);
|
| + const unsigned glyphCount = fDWriteFontFace->GetGlyphCount();
|
|
|
| - const unsigned glyphCount = typeface->fDWriteFontFace->GetGlyphCount();
|
| -
|
| DWRITE_FONT_METRICS dwfm;
|
| - typeface->fDWriteFontFace->GetMetrics(&dwfm);
|
| + fDWriteFontFace->GetMetrics(&dwfm);
|
|
|
| info = new SkAdvancedTypefaceMetrics;
|
| info->fEmSize = dwfm.designUnitsPerEm;
|
| @@ -1424,8 +1423,8 @@
|
|
|
| SkTScopedComPtr<IDWriteLocalizedStrings> familyNames;
|
| SkTScopedComPtr<IDWriteLocalizedStrings> faceNames;
|
| - hr = typeface->fDWriteFontFamily->GetFamilyNames(&familyNames);
|
| - hr = typeface->fDWriteFont->GetFaceNames(&faceNames);
|
| + hr = fDWriteFontFamily->GetFamilyNames(&familyNames);
|
| + hr = fDWriteFont->GetFaceNames(&faceNames);
|
|
|
| UINT32 familyNameLength;
|
| hr = familyNames->GetStringLength(0, &familyNameLength);
|
| @@ -1451,10 +1450,10 @@
|
| info->fFontName.set(familyName.begin(), str_len);
|
|
|
| if (perGlyphInfo & SkAdvancedTypefaceMetrics::kToUnicode_PerGlyphInfo) {
|
| - populate_glyph_to_unicode(typeface->fDWriteFontFace.get(), glyphCount, &(info->fGlyphToUnicode));
|
| + populate_glyph_to_unicode(fDWriteFontFace.get(), glyphCount, &(info->fGlyphToUnicode));
|
| }
|
|
|
| - DWRITE_FONT_FACE_TYPE fontType = typeface->fDWriteFontFace->GetType();
|
| + DWRITE_FONT_FACE_TYPE fontType = fDWriteFontFace->GetType();
|
| if (fontType == DWRITE_FONT_FACE_TYPE_TRUETYPE ||
|
| fontType == DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION) {
|
| info->fType = SkAdvancedTypefaceMetrics::kTrueType_Font;
|
| @@ -1469,10 +1468,10 @@
|
| return info;
|
| }
|
|
|
| - AutoDWriteTable<SkOTTableHead> headTable(typeface->fDWriteFontFace.get());
|
| - AutoDWriteTable<SkOTTablePostScript> postTable(typeface->fDWriteFontFace.get());
|
| - AutoDWriteTable<SkOTTableHorizontalHeader> hheaTable(typeface->fDWriteFontFace.get());
|
| - AutoDWriteTable<SkOTTableOS2> os2Table(typeface->fDWriteFontFace.get());
|
| + AutoDWriteTable<SkOTTableHead> headTable(fDWriteFontFace.get());
|
| + AutoDWriteTable<SkOTTablePostScript> postTable(fDWriteFontFace.get());
|
| + AutoDWriteTable<SkOTTableHorizontalHeader> hheaTable(fDWriteFontFace.get());
|
| + AutoDWriteTable<SkOTTableOS2> os2Table(fDWriteFontFace.get());
|
| if (!headTable.fExists || !postTable.fExists || !hheaTable.fExists || !os2Table.fExists) {
|
| info->fItalicAngle = 0;
|
| info->fAscent = dwfm.ascent;;
|
| @@ -1546,13 +1545,13 @@
|
| if (fixedWidth) {
|
| appendRange(&info->fGlyphWidths, 0);
|
| int16_t advance;
|
| - getWidthAdvance(typeface->fDWriteFontFace.get(), 1, &advance);
|
| + getWidthAdvance(fDWriteFontFace.get(), 1, &advance);
|
| info->fGlyphWidths->fAdvance.append(1, &advance);
|
| finishRange(info->fGlyphWidths.get(), 0,
|
| SkAdvancedTypefaceMetrics::WidthRange::kDefault);
|
| } else {
|
| info->fGlyphWidths.reset(
|
| - getAdvanceData(typeface->fDWriteFontFace.get(),
|
| + getAdvanceData(fDWriteFontFace.get(),
|
| glyphCount,
|
| glyphIDs,
|
| glyphIDsCount,
|
|
|