@@ -164,23 +164,29 @@ export class Tooltip extends Mark {
164
164
}
165
165
}
166
166
}
167
- const tspan = content
167
+
168
+ content
168
169
. selectChildren ( )
169
170
. data ( text )
170
171
. join ( "tspan" )
171
172
. attr ( "x" , 0 )
172
- . attr ( "y" , ( d , i ) => `${ i * lineHeight } em` ) ;
173
- tspan
174
- . selectChildren ( )
175
- . data ( ( d ) => d . slice ( 0 , 2 ) )
176
- . join ( "tspan" )
177
- . attr ( "font-weight" , ( d , i ) => ( i ? null : "bold" ) )
178
- . text ( String ) ;
179
- tspan
180
- . selectAll ( "title" )
181
- . data ( ( d ) => ( d . length > 2 ? [ d [ 2 ] ] : [ ] ) )
182
- . join ( "title" )
183
- . text ( String ) ;
173
+ . attr ( "dy" , `${ lineHeight } em` )
174
+ . call ( ( tspan ) =>
175
+ tspan
176
+ . selectChildren ( )
177
+ . data ( ( d ) => d . slice ( 0 , 2 ) )
178
+ . join ( "tspan" )
179
+ . attr ( "font-weight" , ( d , i ) => ( i ? null : "bold" ) )
180
+ . text ( String )
181
+ )
182
+ . call ( ( tspan ) =>
183
+ tspan
184
+ . selectAll ( "title" )
185
+ . data ( ( d ) => ( d . length > 2 ? [ d [ 2 ] ] : [ ] ) )
186
+ . join ( "title" )
187
+ . text ( String )
188
+ ) ;
189
+
184
190
const { width : w , height : h } = content . node ( ) . getBBox ( ) ;
185
191
const { width, height} = svg . getBBox ( ) ;
186
192
if ( anchor === undefined ) {
@@ -192,9 +198,8 @@ export class Tooltip extends Mark {
192
198
const cy = ( / ^ t o p - / . test ( c ) ? fitTop || ! fitBottom : fitTop && ! fitBottom ) ? "top" : "bottom" ;
193
199
c = `${ cy } -${ cx } ` ;
194
200
}
195
- const oy = getLineOffset ( c , text , lineHeight ) ;
196
- tspan . attr ( "y" , ( d , i ) => `${ i * lineHeight + oy } em` ) ;
197
201
path . attr ( "d" , getPath ( c , m , r , w , h ) ) ;
202
+ content . attr ( "y" , `${ + getLineOffset ( c , text , lineHeight ) . toFixed ( 6 ) } em` ) ;
198
203
content . attr ( "transform" , getTextTransform ( c , m , r , w , h ) ) ;
199
204
dot . attr ( "transform" , `translate(${ Math . round ( xi ) } ,${ Math . round ( yi ) } )` ) ;
200
205
dot . attr ( "display" , "inline" ) ; // make visible only after getBBox
@@ -281,7 +286,7 @@ function getSource2(channels, key) {
281
286
}
282
287
283
288
function getLineOffset ( anchor , text , lineHeight ) {
284
- return / ^ t o p - / . test ( anchor ) ? 0.94 : - 0.29 - ( text . length - 1 ) * lineHeight ;
289
+ return / ^ t o p - / . test ( anchor ) ? 0.94 - lineHeight : - 0.29 - text . length * lineHeight ;
285
290
}
286
291
287
292
function getTextTransform ( anchor , m , r , width ) {
0 commit comments