mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 22:00:46 +00:00
[runStringForString:attributes:paragraphStart:] Improved output of
bold/italic formating. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@7242 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
0fcde31c72
commit
093280f8d8
1 changed files with 29 additions and 50 deletions
|
@ -49,50 +49,6 @@
|
||||||
documentAttributes: (NSDictionary*)dict;
|
documentAttributes: (NSDictionary*)dict;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface NSString (Replacing)
|
|
||||||
- (NSString*) stringByReplacingEveryOccurrenceOfString: (NSString*)aString
|
|
||||||
withString: (NSString*)other;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSString (Replacing)
|
|
||||||
|
|
||||||
- (NSString*) stringByReplacingEveryOccurrenceOfString: (NSString*)aString
|
|
||||||
withString: (NSString*)other
|
|
||||||
{
|
|
||||||
unsigned len = [self length];
|
|
||||||
NSMutableString *erg = [NSMutableString string];
|
|
||||||
NSRange currRange = [self rangeOfString: aString];
|
|
||||||
unsigned prevLocation = 0;
|
|
||||||
|
|
||||||
while (currRange.length > 0)
|
|
||||||
{
|
|
||||||
if (currRange.location > 0)
|
|
||||||
{
|
|
||||||
NSRange r;
|
|
||||||
|
|
||||||
r = NSMakeRange(prevLocation, currRange.location - prevLocation);
|
|
||||||
[erg appendString: [self substringWithRange: r]];
|
|
||||||
}
|
|
||||||
[erg appendString: other];
|
|
||||||
currRange.location += currRange.length;
|
|
||||||
currRange.length = len - currRange.location;
|
|
||||||
prevLocation = currRange.location;
|
|
||||||
currRange = [self rangeOfString: aString
|
|
||||||
options: NSLiteralSearch
|
|
||||||
range: currRange];
|
|
||||||
}
|
|
||||||
if (prevLocation < len)
|
|
||||||
{
|
|
||||||
NSRange r;
|
|
||||||
|
|
||||||
r = NSMakeRange(prevLocation, len - prevLocation);
|
|
||||||
[erg appendString: [self substringWithRange: r]];
|
|
||||||
}
|
|
||||||
|
|
||||||
return erg;
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation RTFProducer
|
@implementation RTFProducer
|
||||||
|
|
||||||
+ (NSFileWrapper*) produceRTFD: (NSAttributedString*) aText
|
+ (NSFileWrapper*) produceRTFD: (NSAttributedString*) aText
|
||||||
|
@ -194,6 +150,7 @@
|
||||||
NSString *fontFamily;
|
NSString *fontFamily;
|
||||||
NSString *detail;
|
NSString *detail;
|
||||||
|
|
||||||
|
// If we ever have more fonts to map to families, we should use a dictionary
|
||||||
if ([currFont isEqualToString: @"Symbol"])
|
if ([currFont isEqualToString: @"Symbol"])
|
||||||
fontFamily = @"tech";
|
fontFamily = @"tech";
|
||||||
else if ([currFont isEqualToString: @"Helvetica"])
|
else if ([currFont isEqualToString: @"Helvetica"])
|
||||||
|
@ -476,11 +433,17 @@
|
||||||
NSFont *font;
|
NSFont *font;
|
||||||
NSString *fontName;
|
NSString *fontName;
|
||||||
NSFontTraitMask traits;
|
NSFontTraitMask traits;
|
||||||
|
NSFontTraitMask oldTraits;
|
||||||
|
|
||||||
font = [attributes objectForKey: NSFontAttributeName];
|
font = [attributes objectForKey: NSFontAttributeName];
|
||||||
fontName = [font familyName];
|
fontName = [font familyName];
|
||||||
traits = [[NSFontManager sharedFontManager] traitsOfFont: font];
|
traits = [[NSFontManager sharedFontManager] traitsOfFont: font];
|
||||||
|
|
||||||
|
if (currentFont == nil)
|
||||||
|
oldTraits = 0;
|
||||||
|
else
|
||||||
|
oldTraits = [[NSFontManager sharedFontManager] traitsOfFont: currentFont];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* font name
|
* font name
|
||||||
*/
|
*/
|
||||||
|
@ -504,15 +467,31 @@
|
||||||
/*
|
/*
|
||||||
* font attributes
|
* font attributes
|
||||||
*/
|
*/
|
||||||
if (traits & NSItalicFontMask)
|
if ((traits & NSItalicFontMask) != (oldTraits & NSItalicFontMask))
|
||||||
{
|
{
|
||||||
[headerString appendString: @"\\i"];
|
if (traits & NSItalicFontMask)
|
||||||
[trailerString appendString: @"\\i0"];
|
{
|
||||||
|
[headerString appendString: @"\\i"];
|
||||||
|
[trailerString appendString: @"\\i0"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[headerString appendString: @"\\i0"];
|
||||||
|
[trailerString appendString: @"\\i"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (traits & NSBoldFontMask)
|
if ((traits & NSBoldFontMask) != (oldTraits & NSBoldFontMask))
|
||||||
{
|
{
|
||||||
[headerString appendString: @"\\b"];
|
if (traits & NSBoldFontMask)
|
||||||
[trailerString appendString: @"\\b0"];
|
{
|
||||||
|
[headerString appendString: @"\\b"];
|
||||||
|
[trailerString appendString: @"\\b0"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[headerString appendString: @"\\b0"];
|
||||||
|
[trailerString appendString: @"\\b"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (first)
|
if (first)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue