Revision: 16599
          http://sourceforge.net/p/skim-app/code/16599
Author:   hofman
Date:     2026-10-03 17:55:06 +0000 (Sat, 03 Oct 2026)
Log Message:
-----------
scan for font and font color together, it is in the same /DA value

Modified Paths:
--------------
    trunk/SkimNotes/PDFAnnotation_SKNExtensions.m

Modified: trunk/SkimNotes/PDFAnnotation_SKNExtensions.m
===================================================================
--- trunk/SkimNotes/PDFAnnotation_SKNExtensions.m       2026-10-03 17:39:10 UTC 
(rev 16598)
+++ trunk/SkimNotes/PDFAnnotation_SKNExtensions.m       2026-10-03 17:55:06 UTC 
(rev 16599)
@@ -706,55 +706,55 @@
             }
             
             PDFKitPlatformFont *font = nil;
-            if ([self respondsToSelector:@selector(font)]) {
+            if ([self respondsToSelector:@selector(font)])
                 font = [(id)self font];
-            }
-            if (font == nil && (value = [self valueForAnnotationKey:@"/DA"])) {
+            PDFKitPlatformColor *fontColor = nil;
+            if ([self respondsToSelector:@selector(fontColor)])
+                fontColor = [(id)self fontColor];
+            if ((font == nil || fontColor == nil) && (value = [self 
valueForAnnotationKey:@"/DA"])) {
                 NSScanner *scanner = [[NSScanner alloc] initWithString:value];
-                NSString *fontName;
-                double fontSize;
-                if ([scanner scanUpToString:@"Tf" intoString:NULL] && [scanner 
isAtEnd] == NO) {
-                    NSUInteger location = [scanner scanLocation];
-                    NSRange r = [value rangeOfString:@"/" 
options:NSBackwardsSearch range:NSMakeRange(0, location)];
-                    if (r.location != NSNotFound) {
-                        [scanner setScanLocation:NSMaxRange(r)];
-                        if ([scanner scanUpToCharactersFromSet:[NSCharacterSet 
whitespaceAndNewlineCharacterSet] intoString:&fontName] &&
-                            [scanner scanDouble:&fontSize] &&
-                            [scanner scanString:@"Tf" intoString:NULL] &&
-                            [scanner scanLocation] == location + 2) {
-                            font = [PDFKitPlatformFont fontWithName:fontName 
size:fontSize];
+                if (font == nil) {
+                    NSString *fontName;
+                    double fontSize;
+                    if ([scanner scanUpToString:@"Tf" intoString:NULL] && 
[scanner isAtEnd] == NO) {
+                        NSUInteger location = [scanner scanLocation];
+                        NSRange r = [value rangeOfString:@"/" 
options:NSBackwardsSearch range:NSMakeRange(0, location)];
+                        if (r.location != NSNotFound) {
+                            [scanner setScanLocation:NSMaxRange(r)];
+                            if ([scanner 
scanUpToCharactersFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] 
intoString:&fontName] &&
+                                [scanner scanDouble:&fontSize] &&
+                                [scanner scanString:@"Tf" intoString:NULL] &&
+                                [scanner scanLocation] == location + 2) {
+                                font = [PDFKitPlatformFont 
fontWithName:fontName size:fontSize];
+                            }
                         }
                     }
                 }
+                if (fontColor == nil) {
+                    NSUInteger end = [value rangeOfString:@"rg"].location;
+                    if (end == NSNotFound) {
+                        end = [value rangeOfString:@"g"].location;
+                        if (end == NSNotFound)
+                            end = [value rangeOfString:@"k"].location;
+                    }
+                    if (end != NSNotFound) {
+                        NSCharacterSet *numberChars = [NSCharacterSet 
characterSetWithCharactersInString:@"0123456789. "];
+                        NSUInteger start = end;
+                        while (start > 0 && [numberChars 
characterIsMember:[value characterAtIndex:start--]]) {}
+                        if (start < end) {
+                            [scanner setScanLocation:start];
+                            CGFloat c;
+                            NSMutableArray *array = [NSMutableArray array];
+                            while ([scanner scanDouble:&c])
+                                [array addObject:[NSNumber 
numberWithDouble:c]];
+                            fontColor = SKNColorFromArray(array);
+                        }
+                    }
+                }
+                
             }
             if (font)
                 [dict setValue:font forKey:SKNPDFAnnotationFontKey];
-            
-            PDFKitPlatformColor *fontColor = nil;
-            if ([self respondsToSelector:@selector(fontColor)]) {
-                fontColor = [(id)self fontColor];
-            }
-            if (fontColor == nil && (value = [self 
valueForAnnotationKey:@"/DA"])) {
-                NSUInteger end = [value rangeOfString:@"rg"].location;
-                if (end == NSNotFound) {
-                    end = [value rangeOfString:@"g"].location;
-                    if (end == NSNotFound)
-                        end = [value rangeOfString:@"k"].location;
-                }
-                if (end != NSNotFound) {
-                    NSCharacterSet *numberChars = [NSCharacterSet 
characterSetWithCharactersInString:@"0123456789. "];
-                    NSUInteger start = end;
-                    while (start > 0 && [numberChars characterIsMember:[value 
characterAtIndex:start--]]) {}
-                    if (start < end) {
-                        NSScanner *scanner = [[NSScanner alloc] 
initWithString:[value substringWithRange:NSMakeRange(start, end - start)]];
-                        CGFloat c;
-                        NSMutableArray *array = [NSMutableArray array];
-                        while ([scanner scanDouble:&c])
-                            [array addObject:[NSNumber numberWithDouble:c]];
-                        fontColor = SKNColorFromArray(array);
-                    }
-                }
-            }
             if (fontColor)
                 [dict setValue:fontColor forKey:SKNPDFAnnotationFontColorKey];
             

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to