@@ -73,6 +73,9 @@ def __init__(self, display):
73
73
"early_limit" : 5.0 ,
74
74
"reverse_stagger" : 1.5 ,
75
75
"ruby_expand" : 0 ,
76
+ "margin_x" : 0.07 ,
77
+ "margin_y" : 0.07 ,
78
+ "line_spacing" : 0.01 ,
76
79
}
77
80
78
81
self .descender = 0
@@ -135,7 +138,8 @@ def add(self, molecule, get_atom_time, style, font, ruby_font):
135
138
136
139
new_ascender = font .ascender
137
140
if ruby_font :
138
- new_ascender += ruby_font .ascender - ruby_font .descender
141
+ ruby_spacing = style .ruby_spacing * (ruby_font .ascender - ruby_font .descender )
142
+ new_ascender += ruby_spacing + ruby_font .ascender - ruby_font .descender
139
143
self .ascender = max (self .ascender , new_ascender )
140
144
self .descender = min (self .descender , font .descender )
141
145
@@ -181,7 +185,7 @@ def add(self, molecule, get_atom_time, style, font, ruby_font):
181
185
if atom .particles is not None and ruby_font :
182
186
# ruby pen. we will adjust X later when centering over atom.
183
187
ruby_px = 0
184
- ruby_py = self .display .round_coord (atom_y + font .ascender - ruby_font .descender )
188
+ ruby_py = self .display .round_coord (atom_y + font .ascender - ruby_font .descender + ruby_spacing )
185
189
ruby_prev_char = None
186
190
ruby_glyphs = []
187
191
par_step = step
@@ -251,10 +255,6 @@ def __init__(self, song_obj, variant, renderer):
251
255
self .variant = song_obj .variants [variant ]
252
256
self .renderer = renderer
253
257
254
- self .margin = 0.07
255
- self .rowspacing = 0.01
256
- self .wrapwidth = 1.0 - self .margin * 2
257
-
258
258
self .lines = {}
259
259
self .fonts = {}
260
260
@@ -431,7 +431,8 @@ def movetop(l):
431
431
432
432
max_ascender = max (l .ascender for l in lines )
433
433
min_descender = min (l .descender for l in lines )
434
- row_height = max_ascender - min_descender + self .rowspacing
434
+ max_spacing = max (l .layout_options ["line_spacing" ] for l in lines )
435
+ row_height = (max_ascender - min_descender ) + max_spacing
435
436
436
437
lastrow = 1 if top else - 1
437
438
max_end = 0
@@ -452,7 +453,7 @@ def movetop(l):
452
453
l .align = 1.0 # right
453
454
else :
454
455
l .align = 0.5 # center
455
- l .x = self . margin + l .align * (self . wrapwidth - l .width )
456
+ l .x = l . layout_options [ "margin_x" ] + l .align * (1.0 - l . layout_options [ "margin_x" ] * 2 - l .width )
456
457
if max_end > l .start and prev_l :
457
458
orig_start = l .start
458
459
l .start = max (min (l .start , prev_l .lim_start ), l .start - l .layout_options ["early_limit" ])
@@ -464,9 +465,9 @@ def movetop(l):
464
465
max_end = max (max_end , l .end )
465
466
lastrow = l .row
466
467
if not top :
467
- l .y = self . margin - min_descender + row_height * l .row
468
+ l .y = l . layout_options [ "margin_y" ] - min_descender + row_height * l .row
468
469
else :
469
- l .y = self .renderer .display .top - self . margin - max_ascender - row_height * l .row
470
+ l .y = self .renderer .display .top - l . layout_options [ "margin_y" ] - max_ascender - row_height * l .row
470
471
prev_l = l
471
472
472
473
def draw (self , t , renderer ):
0 commit comments