Changeset 283

Show
Ignore:
Timestamp:
01/13/07 20:45:08 (2 years ago)
Author:
astrange
Message:

Fix subtitles' font substitution. Closes #86.
(ATSUSetTransientFontMatching apparently must be called after ATSUSetTextPointerLocation?)
Add a null pointer check.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/TextSubCodec.c

    r217 r283  
    4848static CFMutableStringRef CFStringCreateWithCStringMutable(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding) { 
    4949        CFStringRef                s1 = CFStringCreateWithCString(alloc,cStr,encoding); 
     50        if (!s1) return NULL; 
    5051        CFMutableStringRef s2 = CFStringCreateMutableCopy(alloc,0,s1); 
    5152        CFRelease(s1); 
     
    338339                ATSUCreateTextLayout(&glob->textLayout); 
    339340                ATSUSetLayoutControls(glob->textLayout, 2, tags, sizes, vals); 
    340                 ATSUSetTransientFontMatching(glob->textLayout,TRUE); 
    341341        } 
    342342         
     
    355355         
    356356        ATSUSetLayoutControls(glob->textLayout, 1, cgc, cgc_s, cgc_v); 
    357  
     357                 
    358358        CFMutableStringRef cfsub = CFStringCreateWithCStringMutable(NULL, textBuffer, kCFStringEncodingUTF8); 
    359359        if (cfsub == NULL) 
     
    576576        CFStringGetCharacters(cfsub, all, uc); 
    577577        ATSUSetTextPointerLocation(glob->textLayout,uc,kATSUFromTextBeginning,kATSUToTextEnd,sublen); 
     578        ATSUSetTransientFontMatching(glob->textLayout,TRUE); 
     579 
    578580        ATSUSetRunStyle(glob->textLayout,glob->textStyle,kATSUFromTextBeginning,kATSUToTextEnd); 
    579581        if (italics) {