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

Side by Side Diff: src/ports/SkFontHost_FreeType.cpp

Issue 411313002: Colored Emoji not drawn in Chrome if font style is set as Bold (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fixing typo error Created 6 years, 4 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
« src/core/SkScalerContext.h ('K') | « src/core/SkScalerContext.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkAdvancedTypefaceMetrics.h" 9 #include "SkAdvancedTypefaceMetrics.h"
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 fFace, fScaleX, fScaleY, err)); 1015 fFace, fScaleX, fScaleY, err));
1016 fFace = NULL; 1016 fFace = NULL;
1017 return; 1017 return;
1018 } 1018 }
1019 FT_Set_Transform(fFace, &fMatrix22, NULL); 1019 FT_Set_Transform(fFace, &fMatrix22, NULL);
1020 } else if (FT_HAS_FIXED_SIZES(fFace)) { 1020 } else if (FT_HAS_FIXED_SIZES(fFace)) {
1021 fStrikeIndex = chooseBitmapStrike(fFace, fScaleY); 1021 fStrikeIndex = chooseBitmapStrike(fFace, fScaleY);
1022 if (fStrikeIndex == -1) { 1022 if (fStrikeIndex == -1) {
1023 SkDEBUGF(("no glyphs for font \"%s\" size %f?\n", 1023 SkDEBUGF(("no glyphs for font \"%s\" size %f?\n",
1024 fFace->family_name, SkFixedToScalar(fScaleY))) ; 1024 fFace->family_name, SkFixedToScalar(fScaleY))) ;
1025 updateImageFromPath(true);
reed1 2014/09/05 13:29:42 nit: prefix method calls with this->
h.joshi 2014/09/05 14:06:31 Done.
1025 } else { 1026 } else {
1026 // FreeType does no provide linear metrics for bitmap fonts. 1027 // FreeType does no provide linear metrics for bitmap fonts.
1027 linearMetrics = false; 1028 linearMetrics = false;
1028 1029
1029 // FreeType documentation says: 1030 // FreeType documentation says:
1030 // FT_LOAD_NO_BITMAP -- Ignore bitmap strikes when loading. 1031 // FT_LOAD_NO_BITMAP -- Ignore bitmap strikes when loading.
1031 // Bitmap-only fonts ignore this flag. 1032 // Bitmap-only fonts ignore this flag.
1032 // 1033 //
1033 // However, in FreeType 2.5.1 color bitmap only fonts do not ignore this flag. 1034 // However, in FreeType 2.5.1 color bitmap only fonts do not ignore this flag.
1034 // Force this flag off for bitmap only fonts. 1035 // Force this flag off for bitmap only fonts.
1035 fLoadGlyphFlags &= ~FT_LOAD_NO_BITMAP; 1036 fLoadGlyphFlags &= ~FT_LOAD_NO_BITMAP;
1037 updateImageFromPath(false);
1036 } 1038 }
1037 } else { 1039 } else {
1038 SkDEBUGF(("unknown kind of font \"%s\" size %f?\n", 1040 SkDEBUGF(("unknown kind of font \"%s\" size %f?\n",
1039 fFace->family_name, SkFixedToScalar(fScaleY))) ; 1041 fFace->family_name, SkFixedToScalar(fScaleY))) ;
1040 } 1042 }
1041 1043
1042 fDoLinearMetrics = linearMetrics; 1044 fDoLinearMetrics = linearMetrics;
1043 } 1045 }
1044 1046
1045 SkScalerContext_FreeType::~SkScalerContext_FreeType() { 1047 SkScalerContext_FreeType::~SkScalerContext_FreeType() {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 if (fRec.fFlags & SkScalerContext::kVertical_Flag) { 1255 if (fRec.fFlags & SkScalerContext::kVertical_Flag) {
1254 FT_Vector vector; 1256 FT_Vector vector;
1255 vector.x = fFace->glyph->metrics.vertBearingX - fFace->glyph->metric s.horiBearingX; 1257 vector.x = fFace->glyph->metrics.vertBearingX - fFace->glyph->metric s.horiBearingX;
1256 vector.y = -fFace->glyph->metrics.vertBearingY - fFace->glyph->metri cs.horiBearingY; 1258 vector.y = -fFace->glyph->metrics.vertBearingY - fFace->glyph->metri cs.horiBearingY;
1257 FT_Vector_Transform(&vector, &fMatrix22); 1259 FT_Vector_Transform(&vector, &fMatrix22);
1258 fFace->glyph->bitmap_left += SkFDot6Floor(vector.x); 1260 fFace->glyph->bitmap_left += SkFDot6Floor(vector.x);
1259 fFace->glyph->bitmap_top += SkFDot6Floor(vector.y); 1261 fFace->glyph->bitmap_top += SkFDot6Floor(vector.y);
1260 } 1262 }
1261 1263
1262 if (fFace->glyph->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA) { 1264 if (fFace->glyph->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA) {
1265 updateImageFromPath(false);
1263 glyph->fMaskFormat = SkMask::kARGB32_Format; 1266 glyph->fMaskFormat = SkMask::kARGB32_Format;
1264 } 1267 } else
1268 updateImageFromPath(true);
1265 1269
1266 glyph->fWidth = SkToU16(fFace->glyph->bitmap.width); 1270 glyph->fWidth = SkToU16(fFace->glyph->bitmap.width);
1267 glyph->fHeight = SkToU16(fFace->glyph->bitmap.rows); 1271 glyph->fHeight = SkToU16(fFace->glyph->bitmap.rows);
1268 glyph->fTop = -SkToS16(fFace->glyph->bitmap_top); 1272 glyph->fTop = -SkToS16(fFace->glyph->bitmap_top);
1269 glyph->fLeft = SkToS16(fFace->glyph->bitmap_left); 1273 glyph->fLeft = SkToS16(fFace->glyph->bitmap_left);
1270 break; 1274 break;
1271 1275
1272 default: 1276 default:
1273 SkDEBUGFAIL("unknown glyph format"); 1277 SkDEBUGFAIL("unknown glyph format");
1274 goto ERROR; 1278 goto ERROR;
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1720 *style = (SkTypeface::Style) tempStyle; 1724 *style = (SkTypeface::Style) tempStyle;
1721 } 1725 }
1722 if (isFixedPitch) { 1726 if (isFixedPitch) {
1723 *isFixedPitch = FT_IS_FIXED_WIDTH(face); 1727 *isFixedPitch = FT_IS_FIXED_WIDTH(face);
1724 } 1728 }
1725 1729
1726 FT_Done_Face(face); 1730 FT_Done_Face(face);
1727 FT_Done_FreeType(library); 1731 FT_Done_FreeType(library);
1728 return true; 1732 return true;
1729 } 1733 }
OLDNEW
« src/core/SkScalerContext.h ('K') | « src/core/SkScalerContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698