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

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

Issue 27338003: Fix off by one error in last advanceCount in SkFontHost_FreeType. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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 "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 info->fGlyphWidths->fAdvance.append(1, &advance); 598 info->fGlyphWidths->fAdvance.append(1, &advance);
599 finishRange(info->fGlyphWidths.get(), 0, 599 finishRange(info->fGlyphWidths.get(), 0,
600 SkAdvancedTypefaceMetrics::WidthRange::kDefault); 600 SkAdvancedTypefaceMetrics::WidthRange::kDefault);
601 } else if (!cid) { 601 } else if (!cid) {
602 appendRange(&info->fGlyphWidths, 0); 602 appendRange(&info->fGlyphWidths, 0);
603 // So as to not blow out the stack, get advances in batches. 603 // So as to not blow out the stack, get advances in batches.
604 for (int gID = 0; gID < face->num_glyphs; gID += 128) { 604 for (int gID = 0; gID < face->num_glyphs; gID += 128) {
605 FT_Fixed advances[128]; 605 FT_Fixed advances[128];
606 int advanceCount = 128; 606 int advanceCount = 128;
607 if (gID + advanceCount > face->num_glyphs) 607 if (gID + advanceCount > face->num_glyphs)
608 advanceCount = face->num_glyphs - gID + 1; 608 advanceCount = face->num_glyphs - gID;
609 getAdvances(face, gID, advanceCount, FT_LOAD_NO_SCALE, 609 getAdvances(face, gID, advanceCount, FT_LOAD_NO_SCALE,
610 advances); 610 advances);
611 for (int i = 0; i < advanceCount; i++) { 611 for (int i = 0; i < advanceCount; i++) {
612 int16_t advance = advances[i]; 612 int16_t advance = advances[i];
613 info->fGlyphWidths->fAdvance.append(1, &advance); 613 info->fGlyphWidths->fAdvance.append(1, &advance);
614 } 614 }
615 } 615 }
616 finishRange(info->fGlyphWidths.get(), face->num_glyphs - 1, 616 finishRange(info->fGlyphWidths.get(), face->num_glyphs - 1,
617 SkAdvancedTypefaceMetrics::WidthRange::kRange); 617 SkAdvancedTypefaceMetrics::WidthRange::kRange);
618 } else { 618 } else {
(...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after
1501 *style = (SkTypeface::Style) tempStyle; 1501 *style = (SkTypeface::Style) tempStyle;
1502 } 1502 }
1503 if (isFixedPitch) { 1503 if (isFixedPitch) {
1504 *isFixedPitch = FT_IS_FIXED_WIDTH(face); 1504 *isFixedPitch = FT_IS_FIXED_WIDTH(face);
1505 } 1505 }
1506 1506
1507 FT_Done_Face(face); 1507 FT_Done_Face(face);
1508 FT_Done_FreeType(library); 1508 FT_Done_FreeType(library);
1509 return true; 1509 return true;
1510 } 1510 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698