diff options
author | Sven Weidauer <sven.weidauer@gmail.com> | 2011-01-28 13:22:34 +0000 |
---|---|---|
committer | Sven Weidauer <sven.weidauer@gmail.com> | 2011-01-28 13:22:34 +0000 |
commit | b2482982dd202fdd728abf036841c1c043713227 (patch) | |
tree | 68b9d9a571afe015984caf4878ca928bb345e5bf | |
parent | ccac2289cfe4a46e5819b0fb3de68d930f3f9dd8 (diff) | |
download | netsurf-b2482982dd202fdd728abf036841c1c043713227.tar.gz netsurf-b2482982dd202fdd728abf036841c1c043713227.tar.bz2 |
More font-related fixes.
svn path=/trunk/netsurf/; revision=11516
-rw-r--r-- | cocoa/font.m | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/cocoa/font.m b/cocoa/font.m index f2f38793c..795b04802 100644 --- a/cocoa/font.m +++ b/cocoa/font.m @@ -149,7 +149,7 @@ static inline NSUInteger cocoa_glyph_for_location( NSLayoutManager *layout, CGFl NSUInteger glyphIndex = [layout glyphIndexForPoint: NSMakePoint( cocoa_px_to_pt( x ), 0 ) inTextContainer: cocoa_text_container fractionOfDistanceThroughGlyph: &fraction]; - if (fraction > 0) ++glyphIndex; + if (fraction >= 1.0) ++glyphIndex; return glyphIndex; } @@ -171,9 +171,11 @@ static NSLayoutManager *cocoa_prepare_layout_manager( const char *bytes, size_t const plot_font_style_t *style ) { if (NULL == bytes || 0 == length) return nil; - + + NSString *string = [[[NSString alloc] initWithBytes: bytes length:length encoding:NSUTF8StringEncoding] autorelease]; + if (string == nil) return nil; + static NSLayoutManager *layout = nil; - if (nil == layout) { cocoa_text_container = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize( CGFLOAT_MAX, CGFLOAT_MAX )]; [cocoa_text_container setLineFragmentPadding: 0]; @@ -182,9 +184,6 @@ static NSLayoutManager *cocoa_prepare_layout_manager( const char *bytes, size_t [layout addTextContainer: cocoa_text_container]; } - - NSString *string = [[[NSString alloc] initWithBytes: bytes length:length encoding:NSUTF8StringEncoding] autorelease]; - static NSString *oldString = 0; static plot_font_style_t oldStyle = { 0 }; @@ -203,14 +202,13 @@ static NSLayoutManager *cocoa_prepare_layout_manager( const char *bytes, size_t [attributes release]; attributes = [cocoa_font_attributes( style ) retain]; } - + [cocoa_text_storage release]; cocoa_text_storage = [[NSTextStorage alloc] initWithString: string attributes: attributes]; [cocoa_text_storage addLayoutManager: layout]; [layout ensureLayoutForTextContainer: cocoa_text_container]; - return layout; } |