[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:17:51 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 97f5c5903743e02e0522783c41ddb36615075a66
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Jun 10 19:44:53 2002 +0000

    	* WebCoreSupport.subproj/IFCachedTextRenderer.m: Removed.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1325 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 5c8d5cb..c6ea300 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,7 @@
+2002-06-10  Darin Adler  <darin at apple.com>
+
+	* WebCoreSupport.subproj/IFCachedTextRenderer.m: Removed.
+
 2002-06-10  John Sullivan  <sullivan at apple.com>
 
 	Fixed leaks in History mechanism, found by overriding
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 5c8d5cb..c6ea300 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,7 @@
+2002-06-10  Darin Adler  <darin at apple.com>
+
+	* WebCoreSupport.subproj/IFCachedTextRenderer.m: Removed.
+
 2002-06-10  John Sullivan  <sullivan at apple.com>
 
 	Fixed leaks in History mechanism, found by overriding
diff --git a/WebKit/WebCoreSupport.subproj/IFCachedTextRenderer.m b/WebKit/WebCoreSupport.subproj/IFCachedTextRenderer.m
deleted file mode 100644
index aa82f05..0000000
--- a/WebKit/WebCoreSupport.subproj/IFCachedTextRenderer.m
+++ /dev/null
@@ -1,514 +0,0 @@
-//
-//  IFCachedTextRenderer.m
-//  WebKit
-//
-//  Created by Darin Adler on Thu May 02 2002.
-//  Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
-//
-
-#import "IFCachedTextRenderer.h"
-
-#import <Cocoa/Cocoa.h>
-
-#import <ApplicationServices/ApplicationServices.h>
-#import <CoreGraphics/CoreGraphicsPrivate.h>
-#import <WebKit/WebKitDebug.h>
-
-#define NON_BREAKING_SPACE 0xA0
-#define SPACE 0x20
-
-//#define ROUND_TO_INT(x) (int)(((x) > (floor(x) + .5)) ? ceil(x) : floor(x))
-#define ROUND_TO_INT(x) (unsigned int)((x)+.5)
-
-#ifdef FOOOOFOOO
-static inline int ROUND_TO_INT (float x)
-{
-    int floored = (int)(x);
-    
-    if (((float)x) > ((float)(floored) + .5))
-        return (int)ceil(x);
-    return floored;
-}
-#endif
-
-#define LOCAL_GLYPH_BUFFER_SIZE 1024
-
-#define INITIAL_GLYPH_CACHE_MAX 512
-#define INCREMENTAL_GLYPH_CACHE_BLOCK 1024
-
-#define UNINITIALIZED_GLYPH_WIDTH 65535
-
-// These definitions are used to bound the character-to-glyph mapping cache.  The
-// range is limited to LATIN1.  When accessing the cache a check must be made to
-// determine that a character range does not include a composable charcter.
-
-// The first displayable character in latin1. (SPACE)
-#define FIRST_CACHE_CHARACTER (0x20)
-
-// The last character in latin1 extended A. (LATIN SMALL LETTER LONG S)
-#define LAST_CACHE_CHARACTER (0x17F)
-
- at interface NSFont (IFPrivate)
-- (ATSUFontID)_atsFontID;
-- (CGFontRef)_backingCGSFont;
- at end
-
-static void InitATSGlyphVector(ATSGlyphVector *glyphVector, UInt32 numGlyphs)
-{
-    if (glyphVector->numAllocatedGlyphs == 0) {
-        ATSInitializeGlyphVector(numGlyphs, 0, glyphVector);
-
-//#warning Aki: 6/28/00 Need to reconsider these when we do bidi
-        ATSFree(glyphVector->levelIndexes);
-        glyphVector->levelIndexes = NULL;
-    } else if (glyphVector->numAllocatedGlyphs < numGlyphs) {
-        ATSGrowGlyphVector(numGlyphs - glyphVector->numAllocatedGlyphs, glyphVector);
-    }
-}
-
-static void ResetATSGlyphVector(ATSGlyphVector *glyphVector)
-{
-    ATSGlyphVector tmpVector = *glyphVector;
-
-    // Prevents glyph array & style settings from deallocated
-    glyphVector->firstRecord = NULL;
-    glyphVector->styleSettings = NULL;
-    glyphVector->levelIndexes = NULL;
-    ATSClearGlyphVector(glyphVector);
-
-    glyphVector->numAllocatedGlyphs = tmpVector.numAllocatedGlyphs;
-    glyphVector->recordSize = tmpVector.recordSize;
-    glyphVector->firstRecord = tmpVector.firstRecord;
-    glyphVector->styleSettings = tmpVector.styleSettings;
-    glyphVector->levelIndexes = tmpVector.levelIndexes;
-}
-
- at class NSCGSFont;
-
-static void FillStyleWithAttributes(ATSUStyle style, NSFont *theFont)
-{
-    if (theFont) {
-        ATSUFontID fontId = (ATSUFontID)[theFont _atsFontID];
-        ATSUAttributeTag tag = kATSUFontTag;
-        ByteCount size = sizeof(ATSUFontID);
-        ATSUFontID *valueArray[1] = {&fontId};
-
-        if (fontId) {
-            if (ATSUSetAttributes(style, 1, &tag, &size, (void **)valueArray) != noErr)
-                [NSException raise:NSInternalInconsistencyException format:@"Failed to set font (%@) ATSUStyle 0x%X", theFont, style];
-
-#if 1
-//#warning Aki 7/20/2000 This code should be disabled once the brain dead bug 2499383 is fixed
-            {
-                ATSUFontFeatureType types[8] = {kDiacriticsType, kTypographicExtrasType, kFractionsType, kSmartSwashType, kSmartSwashType, kSmartSwashType, kSmartSwashType, kSmartSwashType};
-                ATSUFontFeatureSelector selectors[8] = {kDecomposeDiacriticsSelector, kSmartQuotesOffSelector, kNoFractionsSelector, kWordInitialSwashesOffSelector, kWordFinalSwashesOffSelector, kLineInitialSwashesOffSelector, kLineFinalSwashesOffSelector, kNonFinalSwashesOffSelector};
-                ATSUSetFontFeatures(style, 8, types, selectors);
-            }
-#endif
-        }
-    }
-}
-
-/* Convert non-breaking spaces into spaces. */
-static void ConvertCharactersToGlyphs(ATSStyleGroupPtr styleGroup, const UniChar *characters, int numCharacters, ATSGlyphVector *glyphs)
-{
-    int i;
-    UniChar localBuffer[LOCAL_GLYPH_BUFFER_SIZE];
-    UniChar *buffer = localBuffer;
-    
-    for (i = 0; i < numCharacters; i++) {
-        if (characters[i] == NON_BREAKING_SPACE) {
-            break;
-        }
-    }
-    
-    if (i < numCharacters) {
-        if (numCharacters > LOCAL_GLYPH_BUFFER_SIZE) {
-            buffer = (UniChar *)malloc(sizeof(UniChar) * numCharacters);
-        }
-        
-        for (i = 0; i < numCharacters; i++) {
-            if (characters[i] == NON_BREAKING_SPACE) {
-                buffer[i] = SPACE;
-            } else {
-                buffer[i] = characters[i];
-            }
-        }
-        
-        characters = buffer;
-    }
-    
-    ATSUConvertCharToGlyphs(styleGroup, characters, 0, numCharacters, 0, glyphs);
-    
-    if (buffer != localBuffer) {
-        free(buffer);
-    }
-}
-
- at implementation IFCachedTextRenderer
-
-- (void)initializeCaches
-{
-    unsigned int i, glyphsToCache;
-    int errorResult;
-    size_t numGlyphsInFont = CGFontGetNumberOfGlyphs([font _backingCGSFont]);
-    short unsigned int sequentialGlyphs[INITIAL_GLYPH_CACHE_MAX];
-    ATSLayoutRecord *glyphRecords;
-
-    WEBKITDEBUGLEVEL (WEBKIT_LOG_FONTCACHE, "Caching %s %.0f (%ld glyphs) ascent = %f, descent = %f, defaultLineHeightForFont = %f\n", [[font displayName] cString], [font pointSize], numGlyphsInFont, [font ascender], [font descender], [font defaultLineHeightForFont]); 
-
-    // Initially just cache the max of number of glyphs in font or
-    // INITIAL_GLYPH_CACHE_MAX.  Holes in the cache will be filled on demand
-    // in INCREMENTAL_GLYPH_CACHE_BLOCK chunks. 
-    if (numGlyphsInFont > INITIAL_GLYPH_CACHE_MAX)
-        glyphsToCache = INITIAL_GLYPH_CACHE_MAX;
-    else
-        glyphsToCache = numGlyphsInFont;
-    widthCacheSize = (int)numGlyphsInFont;
-    for (i = 0; i < glyphsToCache; i++)
-        sequentialGlyphs[i] = i;
-        
-    widthCache = (IFGlyphWidth *)calloc (1, widthCacheSize * sizeof(IFGlyphWidth));
-    
-    // Some glyphs can have zero width, so we have to use a non-zero value
-    // in empty slots to indicate they are uninitialized.
-    for (i = glyphsToCache; i < widthCacheSize; i++){
-        widthCache[i] = UNINITIALIZED_GLYPH_WIDTH;
-    }
-    
-    CGContextRef cgContext;
-
-    cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
-    errorResult = CGFontGetGlyphScaledAdvances ([font _backingCGSFont], &sequentialGlyphs[0], glyphsToCache, widthCache, [font pointSize]);
-    if (errorResult == 0)
-        [NSException raise:NSInternalInconsistencyException format:@"Optimization assumption violation:  unable to cache glyph advances - for %@ %f", self, [font displayName], [font pointSize]];
-
-    unsigned int latinCount = LAST_CACHE_CHARACTER - FIRST_CACHE_CHARACTER + 1;
-    short unsigned int latinBuffer[LAST_CACHE_CHARACTER+1];
-    
-    for (i = FIRST_CACHE_CHARACTER; i <= LAST_CACHE_CHARACTER; i++){
-        latinBuffer[i] = i;
-    }
-
-    ATSGlyphVector latinGlyphVector;
-    ATSInitializeGlyphVector(latinCount, 0, &latinGlyphVector);
-    ConvertCharactersToGlyphs(styleGroup, &latinBuffer[FIRST_CACHE_CHARACTER], latinCount, &latinGlyphVector);
-    if (latinGlyphVector.numGlyphs != latinCount)
-        [NSException raise:NSInternalInconsistencyException format:@"Optimization assumption violation:  ascii and glyphID count not equal - for %@ %f", self, [font displayName], [font pointSize]];
-        
-    unsigned int numGlyphs = latinGlyphVector.numGlyphs;
-    characterToGlyph = (ATSGlyphRef *)calloc (1, latinGlyphVector.numGlyphs * sizeof(ATSGlyphRef));
-    glyphRecords = (ATSLayoutRecord *)latinGlyphVector.firstRecord;
-    for (i = 0; i < numGlyphs; i++){
-        characterToGlyph[i] = glyphRecords[i].glyphID;
-    }
-    ATSClearGlyphVector(&latinGlyphVector);
-
-#define DEBUG_CACHE_SIZE
-#ifdef DEBUG_CACHE_SIZE
-    static int totalCacheSize = 0;
-    
-    totalCacheSize += widthCacheSize * sizeof(IFGlyphWidth) + numGlyphs * sizeof(ATSGlyphRef) + sizeof(*self);
-    WEBKITDEBUGLEVEL (WEBKIT_LOG_MEMUSAGE, "memory usage in bytes:  widths = %ld, latin1 ext. character-to-glyph = %ld, total this cache = %ld, total all caches %d\n", widthCacheSize * sizeof(IFGlyphWidth), numGlyphs * sizeof(ATSGlyphRef), widthCacheSize * sizeof(IFGlyphWidth) + numGlyphs * sizeof(ATSGlyphRef) + sizeof(*self), totalCacheSize); 
-#endif
-}
-
-- initWithFont:(NSFont *)f
-{
-    [super init];
-    
-    font = [f retain];
-    ascent = -1;
-    descent = -1;
-    lineSpacing = -1;
-    
-    OSStatus errCode;
-    ATSUStyle style;
-    
-    if ((errCode = ATSUCreateStyle(&style)) != noErr)
-        [NSException raise:NSInternalInconsistencyException format:@"%@: Failed to alloc ATSUStyle %d", self, errCode];
-
-    FillStyleWithAttributes(style, font);
-
-    if ((errCode = ATSUGetStyleGroup(style, &styleGroup)) != noErr) {
-        [NSException raise:NSInternalInconsistencyException format:@"%@: Failed to create attribute group from ATSUStyle 0x%X %d", self, style, errCode];
-    }
-    
-    ATSUDisposeStyle(style);
-
-    return self;
-}
-
-- (void)dealloc
-{
-    [font release];
-
-    if (styleGroup)
-        ATSUDisposeStyleGroup(styleGroup);
-    if (glyphVector.numAllocatedGlyphs > 0)
-        ATSClearGlyphVector(&glyphVector);
-    free(widthCache);
-    free(characterToGlyph);
-    
-    [super dealloc];
-}
-
-- (int)widthForString:(NSString *)string
-{
-    UniChar localBuffer[LOCAL_GLYPH_BUFFER_SIZE];
-    const UniChar *_internalBuffer = CFStringGetCharactersPtr ((CFStringRef)string);
-    const UniChar *internalBuffer;
-
-    if (!_internalBuffer) {
-        // FIXME: Handle case where string is larger than LOCAL_GLYPH_BUFFER_SIZE?
-        CFStringGetCharacters((CFStringRef)string, CFRangeMake(0, CFStringGetLength((CFStringRef)string)), &localBuffer[0]);
-        internalBuffer = &localBuffer[0];
-    }
-    else
-        internalBuffer = _internalBuffer;
-
-    return [self widthForCharacters:internalBuffer length:[string length]];
-}
-
-- (int)ascent
-{
-    if (ascent < 0)  {
-        ascent = ROUND_TO_INT([font ascender]);
-    }
-    return ascent;
-}
-
-- (int)descent
-{
-    if (descent < 0)  {
-        descent = ROUND_TO_INT(-[font descender]);
-    }
-    return descent;
-}
-
-- (int)lineSpacing
-{
-    if (lineSpacing < 0) {
-        lineSpacing = ROUND_TO_INT([font defaultLineHeightForFont]);
-    }
-    return lineSpacing;
-}
-
-- (void)drawString:(NSString *)string atPoint:(NSPoint)point withColor:(NSColor *)color
-{
-    // This will draw the text from the top of the bounding box down.
-    // Qt expects to draw from the baseline.
-    // Remember that descender is negative.
-    //point.y -= [self lineSpacing] - [self descent];
-    point.y -= ROUND_TO_INT([font defaultLineHeightForFont] + [font descender]);
-    
-    UniChar localBuffer[LOCAL_GLYPH_BUFFER_SIZE];
-    const UniChar *_internalBuffer = CFStringGetCharactersPtr ((CFStringRef)string);
-    const UniChar *internalBuffer;
-
-    if (!_internalBuffer){
-        // FIXME: Handle case where length > LOCAL_GLYPH_BUFFER_SIZE
-        CFStringGetCharacters((CFStringRef)string, CFRangeMake(0, CFStringGetLength((CFStringRef)string)), &localBuffer[0]);
-        internalBuffer = &localBuffer[0];
-    }
-    else
-        internalBuffer = _internalBuffer;
-
-    CGContextRef cgContext;
-
-    InitATSGlyphVector(&glyphVector, [string length]);
-
-    ConvertCharactersToGlyphs(styleGroup, internalBuffer, [string length], &glyphVector);
-
-    [color set];
-    [font set];
-    
-    if ([font glyphPacking] != NSNativeShortGlyphPacking &&
-        [font glyphPacking] != NSTwoByteGlyphPacking)
-        [NSException raise:NSInternalInconsistencyException format:@"%@: Don't know how to deal with font %@", self, [font displayName]];
-        
-    {
-        int i, numGlyphs = glyphVector.numGlyphs;
-        char localGlyphBuf[LOCAL_GLYPH_BUFFER_SIZE];
-        char *usedGlyphBuf, *glyphBufPtr, *glyphBuf = 0;
-        ATSLayoutRecord *glyphRecords = (ATSLayoutRecord *)glyphVector.firstRecord;
-        
-        if (numGlyphs > LOCAL_GLYPH_BUFFER_SIZE/2)
-            usedGlyphBuf = glyphBufPtr = glyphBuf = (char *)malloc (numGlyphs * 2);
-        else
-            usedGlyphBuf = glyphBufPtr = &localGlyphBuf[0];
-            
-        for (i = 0; i < numGlyphs; i++){
-            *glyphBufPtr++ = (char)((glyphRecords->glyphID >> 8) & 0x00FF);
-            *glyphBufPtr++ = (char)(glyphRecords->glyphID & 0x00FF);
-            glyphRecords++;
-        }
-        cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
-        CGContextSetCharacterSpacing(cgContext, 0.0);
-        //CGContextShowGlyphsAtPoint (cgContext, p.x, p.y + lineHeight - 1 - ROUND_TO_INT(-[font descender]), (const short unsigned int *)usedGlyphBuf, numGlyphs);
-        CGContextShowGlyphsAtPoint (cgContext, point.x, point.y + [font defaultLineHeightForFont] - 1, (const short unsigned int *)usedGlyphBuf, numGlyphs);
-        
-        if (glyphBuf)
-            free (glyphBuf);
-    }
-
-    ResetATSGlyphVector(&glyphVector);
-}
-
-- (void)drawUnderlineForString:(NSString *)string atPoint:(NSPoint)point withColor:(NSColor *)color
-{
-    // This will draw the text from the top of the bounding box down.
-    // Qt expects to draw from the baseline.
-    // Remember that descender is negative.
-    //point.y -= [self lineSpacing] - [self descent];
-    point.y -= ROUND_TO_INT([font defaultLineHeightForFont] + [font descender]);
-    
-    int width = [self widthForString: string];
-    NSGraphicsContext *graphicsContext = [NSGraphicsContext currentContext];
-    CGContextRef cgContext;
-    float lineWidth;
-    
-    [color set];
-
-    BOOL flag = [graphicsContext shouldAntialias];
-
-    [graphicsContext setShouldAntialias: NO];
-
-    cgContext = (CGContextRef)[graphicsContext graphicsPort];
-    lineWidth = 0.0;
-    if ([graphicsContext isDrawingToScreen] && lineWidth == 0.0) {
-        CGSize size = CGSizeApplyAffineTransform(CGSizeMake(1.0, 1.0), CGAffineTransformInvert(CGContextGetCTM(cgContext)));
-        lineWidth = size.width;
-    }
-    CGContextSetLineWidth(cgContext, lineWidth);
-    ///CGContextMoveToPoint(cgContext, p.x, p.y + lineHeight + 0.5 - ROUND_TO_INT(-[font descender]));
-    //CGContextAddLineToPoint(cgContext, p.x + rect.size.width, p.y + lineHeight + 0.5 - ROUND_TO_INT(-[font descender]));
-    CGContextMoveToPoint(cgContext, point.x, point.y + [font defaultLineHeightForFont] + 0.5);
-    CGContextAddLineToPoint(cgContext, point.x + width, point.y + [font defaultLineHeightForFont] + 0.5);
-    CGContextStrokePath(cgContext);
-
-    [graphicsContext setShouldAntialias: flag];
-}
-
-- (int)widthForCharacters:(const UniChar *)characters length:(unsigned)length
-{
-    float totalWidth = 0;
-    unsigned int i, index;
-    int glyphID;
-    ATSLayoutRecord *glyphRecords;
-    unsigned int numGlyphs;
-    
-    ATSGlyphRef localCharacterToGlyph[LOCAL_GLYPH_BUFFER_SIZE];
-    ATSGlyphRef *usedCharacterToGlyph, *allocateCharacterToGlyph = 0;
-    
-    BOOL needCharToGlyphLookup = NO;
-
-
-    // Best case, and common case for latin1, performance will require two iterations over
-    // the internalBuffer.
-    // Pass 1 (on characters):  
-    //      Determine if we can use character-to-glyph map by comparing characters to cache
-    //      range.
-    // Pass 2 (on characters):  
-    //      Sum the widths using the character-to-glyph map and width cache.
-    
-    // FIXME:  For non-latin1 character sets we don't optimize.
-    // Worst case performance we must lookup the character-to-glyph map and lookup the glyph
-    // widths.
-    
-    if ([font glyphPacking] != NSNativeShortGlyphPacking &&
-        [font glyphPacking] != NSTwoByteGlyphPacking)
-	[NSException raise:NSInternalInconsistencyException format:@"%@: Don't know how to pack glyphs for font %@ %f", self, [font displayName], [font pointSize]];
-    
-    if (widthCache == 0)
-        [self initializeCaches];
-    
-    // Pass 1:
-    // Check if we can use the cached character-to-glyph map.  We only use the character-to-glyph map
-    // if ALL the characters in the string fall in the safe cache range.  This must be done
-    // to ensure that we don't match composable characters incorrectly.  This check could
-    // be smarter.  Also the character-to-glyph could be extended to support other ranges
-    // of unicode.  For now, we only optimize for latin1.
-    for (i = 0; i < length; i++){
-        if (characters[i] < FIRST_CACHE_CHARACTER || characters[i] > LAST_CACHE_CHARACTER){
-            needCharToGlyphLookup = YES;
-            break;
-        }
-    }
-
-    // If we can't use the cached map, then calculate a map for this string.   Expensive.
-    if (needCharToGlyphLookup){
-        
-        WEBKITDEBUGLEVEL(WEBKIT_LOG_FONTCACHECHARMISS, "character-to-glyph cache miss for character 0x%04x in %s, %.0f\n", characters[i], [[font displayName] lossyCString], [font pointSize]);
-        InitATSGlyphVector(&glyphVector, length);
-        ConvertCharactersToGlyphs(styleGroup, characters, length, &glyphVector);
-        glyphRecords = (ATSLayoutRecord *)glyphVector.firstRecord;
-        numGlyphs = glyphVector.numGlyphs;
-
-        if (numGlyphs > LOCAL_GLYPH_BUFFER_SIZE)
-            usedCharacterToGlyph = allocateCharacterToGlyph = (ATSGlyphRef *)calloc (1, numGlyphs * sizeof(ATSGlyphRef));
-        else
-            usedCharacterToGlyph = &localCharacterToGlyph[0];
-            
-        for (i = 0; i < numGlyphs; i++){
-            glyphID = glyphRecords[i].glyphID;
-            usedCharacterToGlyph[i] = glyphID;
-            
-            // Fill the block of glyphs for the glyph needed. If we're going to incur the overhead
-            // of calling into CG, we may as well get a block of scaled glyph advances.
-            if (widthCache[glyphID] == UNINITIALIZED_GLYPH_WIDTH) {
-                short unsigned int sequentialGlyphs[INCREMENTAL_GLYPH_CACHE_BLOCK];
-                unsigned int blockStart, blockEnd, blockID;
-                int errorResult;
-                
-                blockStart = (glyphID / INCREMENTAL_GLYPH_CACHE_BLOCK) * INCREMENTAL_GLYPH_CACHE_BLOCK;
-                blockEnd = blockStart + INCREMENTAL_GLYPH_CACHE_BLOCK;
-                if (blockEnd > widthCacheSize)
-                    blockEnd = widthCacheSize;
-                WEBKITDEBUGLEVEL (WEBKIT_LOG_FONTCACHE, "width cache miss for glyph 0x%04x in %s, %.0f, filling block 0x%04x to 0x%04x\n", glyphID, [[font displayName] cString], [font pointSize], blockStart, blockEnd);
-                for (blockID = blockStart; blockID < blockEnd; blockID++)
-                    sequentialGlyphs[blockID-blockStart] = blockID;
-
-                errorResult = CGFontGetGlyphScaledAdvances ([font _backingCGSFont], &sequentialGlyphs[0], blockEnd-blockStart, &widthCache[blockStart], [font pointSize]);
-                if (errorResult == 0)
-                    [NSException raise:NSInternalInconsistencyException format:@"Optimization assumption violation:  unable to cache glyph widths - for %@ %f", self, [font displayName], [font pointSize]];
-            }
-        }
-
-        ResetATSGlyphVector(&glyphVector);
-    }
-    else {
-        numGlyphs = length;
-        usedCharacterToGlyph = characterToGlyph;
-    }
-    
-    // Pass 2:
-    // Sum the widths for all the glyphs.
-    if (needCharToGlyphLookup){
-        for (i = 0; i < numGlyphs; i++){
-            totalWidth += widthCache[usedCharacterToGlyph[i]];
-        }
-        
-        if (allocateCharacterToGlyph)
-            free (allocateCharacterToGlyph);
-    }
-    else {
-        for (i = 0; i < numGlyphs; i++){
-            index = characters[i]-FIRST_CACHE_CHARACTER;
-            totalWidth += widthCache[usedCharacterToGlyph[index]];
-        }
-    }
-    
-    return ROUND_TO_INT(totalWidth);
-}
-
-- (void)drawString:(NSString *)string inRect:(NSRect)rect withColor:(NSColor *)color paragraphStyle:(NSParagraphStyle *)style
-{
-    [string drawInRect:rect withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
-        font, NSFontAttributeName,
-        color, NSForegroundColorAttributeName,
-        style, NSParagraphStyleAttributeName,
-        nil]];
-}
-
- at end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list