diff options
author | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-08-18 02:38:50 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-08-18 02:38:50 +0000 |
commit | 37ad8fb72ff1b3faac93b01ead2c79e1a06fc172 (patch) | |
tree | 89df0774c02e8dcca67a529c7ec8d8fbfc57b0d2 /src/ports/SkFontHost_FreeType.cpp | |
parent | 37c472007ec3b9b6a11cf196bae1f6b7af3bff19 (diff) |
[PDF] Subset font advance data (W array).
Patch by arthurhsu@chromium.org. Original CL:
http://codereview.appspot.com/4830068
http://codereview.appspot.com/4905051/
Review URL: http://codereview.appspot.com/4911042
git-svn-id: http://skia.googlecode.com/svn/trunk@2134 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports/SkFontHost_FreeType.cpp')
-rw-r--r-- | src/ports/SkFontHost_FreeType.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp index 2894a3d159..09390151fb 100644 --- a/src/ports/SkFontHost_FreeType.cpp +++ b/src/ports/SkFontHost_FreeType.cpp @@ -408,7 +408,9 @@ static void populate_glyph_to_unicode(FT_Face& face, // static SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics( uint32_t fontID, - SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo) { + SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo, + const uint32_t* glyphIDs, + uint32_t glyphIDsCount) { #if defined(SK_BUILD_FOR_MAC) || defined(ANDROID) return NULL; #else @@ -521,7 +523,7 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics( info->fBBox = SkIRect::MakeLTRB(face->bbox.xMin, face->bbox.yMax, face->bbox.xMax, face->bbox.yMin); - if (!canEmbed(face) || !FT_IS_SCALABLE(face) || + if (!canEmbed(face) || !FT_IS_SCALABLE(face) || info->fType == SkAdvancedTypefaceMetrics::kOther_Font) { perGlyphInfo = SkAdvancedTypefaceMetrics::kNo_PerGlyphInfo; } @@ -552,7 +554,11 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics( SkAdvancedTypefaceMetrics::WidthRange::kRange); } else { info->fGlyphWidths.reset( - getAdvanceData(face, face->num_glyphs, &getWidthAdvance)); + getAdvanceData(face, + face->num_glyphs, + glyphIDs, + glyphIDsCount, + &getWidthAdvance)); } } @@ -588,6 +594,7 @@ SkAdvancedTypefaceMetrics* SkFontHost::GetAdvancedTypefaceMetrics( return info; #endif } + /////////////////////////////////////////////////////////////////////////// static bool bothZero(SkScalar a, SkScalar b) { @@ -622,7 +629,7 @@ void SkFontHost::FilterRec(SkScalerContext::Rec* rec) { // to do subpixel, we must have at most slight hinting h = SkPaint::kSlight_Hinting; } -#ifndef SK_IGNORE_ROTATED_FREETYPE_FIX +#ifndef SK_IGNORE_ROTATED_FREETYPE_FIX // rotated text looks bad with hinting, so we disable it as needed if (!isAxisAligned(*rec)) { h = SkPaint::kNo_Hinting; |