From 884ca0313502625b32ff925a73c20c79cf231dd2 Mon Sep 17 00:00:00 2001 From: Fred Kiefer Date: Sun, 7 May 2000 22:24:29 +0000 Subject: [PATCH] Corrected baseline for font with different point size. Added primitiv support for super/subscript as baseline change of 3 points. The baseline correction is only done for the current chunk not for the whole line. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@6580 72102866-910b-0410-8b05-ffd578937521 --- Source/NSStringDrawing.m | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Source/NSStringDrawing.m b/Source/NSStringDrawing.m index 64a0d3418..2c8d00f7a 100644 --- a/Source/NSStringDrawing.m +++ b/Source/NSStringDrawing.m @@ -484,13 +484,12 @@ drawRun(GSTextRun *run, NSPoint origin, GSDrawInfo *draw) */ if (draw->flip) { - origin.y += (run->height - run->baseline); + origin.y -= run->base; } else { - origin.y -= (run->height - run->baseline); + origin.y += run->base; } - /* * Set current font and color if necessary. */ @@ -602,14 +601,18 @@ setupRun(GSTextRun *run, unsigned length, unichar *chars, unsigned pos, // Get superscript num = (NSNumber*)[attr objectForKey: NSSuperscriptAttributeName]; if (num == nil) - run->superscript = 0; + run->base = 0.0; + //run->superscript = 0; else - run->superscript = [num intValue]; + // interprete as a baseline change without font change + run->base = 3.0 * [num intValue]; + //run->superscript = [num intValue]; // Get baseline offset num = (NSNumber*)[attr objectForKey: NSBaselineOffsetAttributeName]; if (num == nil) - run->base = 0.0; + ; // Use value from superscript! + //run->base = 0.0; else run->base = [num floatValue]; @@ -716,6 +719,14 @@ drawChunk(GSTextChunk *chunk, NSPoint origin, GSDrawInfo *draw) GSTextRun *run = &chunk->run0; origin.x += chunk->xpos; + if (draw->flip) + { + origin.y += (chunk->height - chunk->baseline); + } + else + { + origin.y -= (chunk->height - chunk->baseline); + } while (run != 0) { drawRun(run, origin, draw);