@@ -4,8 +4,8 @@ function plugindef()
44 finaleplugin .NoStore = true
55 finaleplugin .Author = " Robert Patterson"
66 finaleplugin .Copyright = " CC0 https://creativecommons.org/publicdomain/zero/1.0/"
7- finaleplugin .Version = " 1.0.3 "
8- finaleplugin .Date = " December 31, 2024 "
7+ finaleplugin .Version = " 1.1.0 "
8+ finaleplugin .Date = " December 8, 2025 "
99 finaleplugin .CategoryTags = " Document"
1010 finaleplugin .MinJWLuaVersion = 0.75
1111 finaleplugin .Notes = [[
@@ -124,6 +124,7 @@ local tie_prefs
124124local tuplet_prefs
125125local text_exps
126126local music_font_name
127+ local spatium_scaling
127128
128129function open_current_prefs ()
129130 local font_prefs = finale .FCFontPrefs ()
@@ -180,6 +181,9 @@ function open_current_prefs()
180181 else
181182 music_font_name = nil
182183 end
184+ local page_percent = page_prefs .PageScaling / 100
185+ local staff_percent = (page_prefs .SystemStaffHeight / (EVPU_PER_SPACE * 4 * 16 )) * (page_prefs .SystemScaling / 100 )
186+ spatium_scaling = page_percent * staff_percent
183187end
184188
185189local function format_muse_float (value )
@@ -220,17 +224,21 @@ local function set_point_element(style_element, name, x, y)
220224 return element
221225end
222226
223- local function calc_font_height_in_spaces (font_info )
227+ local function font_mag_val (font_info )
228+ return font_info .Absolute and 1 or MUSE_FINALE_SCALE_DIFFERENTIAL
229+ end
230+
231+ local function calc_font_ascent_in_spaces (font_info )
224232 if not font_info then
225233 return 0
226234 end
227235 local text_metrics = finale .FCTextMetrics ()
228236 local test_string = finale .FCString ()
229237 test_string .LuaString = " 0123456789"
230- if not text_metrics :LoadString (test_string , font_info , 100 ) then
238+ if not text_metrics :LoadString (test_string , font_info , 100 * font_mag_val ( font_info ) ) then
231239 return 0
232240 end
233- return text_metrics : CalcHeightEVPUs () / EVPU_PER_SPACE
241+ return text_metrics . TopEVPUs / EVPU_PER_SPACE
234242end
235243
236244function muse_font_efx (font_info )
263271
264272function write_font_pref (style_element , name_prefix , font_info )
265273 set_element_text (style_element , name_prefix .. " FontFace" , font_info .Name )
266- set_element_text (style_element , name_prefix .. " FontSize" , font_info .Size * (font_info . Absolute and 1 or MUSE_FINALE_SCALE_DIFFERENTIAL ))
274+ set_element_text (style_element , name_prefix .. " FontSize" , font_info .Size * font_mag_val (font_info ))
267275 set_element_text (style_element , name_prefix .. " FontSpatiumDependent" , not font_info .Absolute )
268276 set_element_text (style_element , name_prefix .. " FontStyle" , muse_font_efx (font_info ))
269277end
@@ -331,9 +339,7 @@ function write_page_prefs(style_element)
331339 set_element_text (style_element , " pageTwosided" , page_prefs .UseFacingPages )
332340 set_element_text (style_element , " enableIndentationOnFirstSystem" , page_prefs .UseFirstSystemMargins )
333341 set_element_text (style_element , " firstSystemIndentationValue" , page_prefs .FirstSystemLeft / EVPU_PER_SPACE )
334- local page_percent = page_prefs .PageScaling / 100
335- local staff_percent = (page_prefs .SystemStaffHeight / (EVPU_PER_SPACE * 4 * 16 )) * (page_prefs .SystemScaling / 100 )
336- set_element_text (style_element , " spatium" , (EVPU_PER_SPACE * staff_percent * page_percent ) / EVPU_PER_MM )
342+ set_element_text (style_element , " spatium" , (EVPU_PER_SPACE * spatium_scaling ) / EVPU_PER_MM )
337343 local first_system = finale .FCStaffSystem ()
338344 if first_system :LoadFirst () then
339345 local min_size = 100
@@ -486,7 +492,9 @@ function write_measure_number_prefs(style_element)
486492 local parts_val = library .calc_parts_boolean_for_measure_number_region (meas_nums , current_is_part )
487493 set_element_text (style_element , " showMeasureNumberOne" , not meas_nums :GetHideFirstNumber (parts_val ))
488494 set_element_text (style_element , " measureNumberInterval" , meas_nums :GetMultipleValue (parts_val ))
489- set_element_text (style_element , " measureNumberSystem" , meas_nums :GetShowOnSystemStart (parts_val ) and not meas_nums :GetShowMultiples (parts_val ))
495+ local show_on_every = meas_nums :GetShowMultiples (parts_val )
496+ local use_show_on_start = meas_nums :GetShowOnSystemStart (parts_val ) and not show_on_every
497+ set_element_text (style_element , " measureNumberSystem" , use_show_on_start )
490498
491499 local function justification_string (justi )
492500 if justi == finale .MNJUSTIFY_LEFT then
@@ -520,7 +528,7 @@ function write_measure_number_prefs(style_element)
520528 set_element_text (style_element , prefix .. " Position" , align_string (justification ))
521529 local horizontal_sp = horizontal / EVPU_PER_SPACE
522530 local vertical_sp = vertical / EVPU_PER_SPACE
523- local text_height_sp = calc_font_height_in_spaces (font_info )
531+ local text_height_sp = calc_font_ascent_in_spaces (font_info ) * spatium_scaling
524532 set_point_element (style_element , prefix .. " PosAbove" , horizontal_sp , math.min (- vertical_sp , 0 ))
525533 set_point_element (style_element , prefix .. " PosBelow" , horizontal_sp ,
526534 math.max (- (vertical_sp + NORMAL_STAFF_HEIGHT_SP ) - text_height_sp , 0 ))
@@ -567,13 +575,13 @@ function write_measure_number_prefs(style_element)
567575 end
568576 set_element_text (style_element , " measureNumberPlacementMode" , placement_mode )
569577
570- local font_info = meas_nums : GetShowOnSystemStart ( parts_val ) and meas_nums :CreateStartFontInfo (parts_val ) or meas_nums :CreateMultipleFontInfo (parts_val )
571- local enclosure = meas_nums : GetShowOnSystemStart ( parts_val ) and meas_nums :GetEnclosureStart (parts_val ) or meas_nums :GetEnclosureMultiple (parts_val )
572- local use_enclosure = meas_nums : GetShowOnSystemStart ( parts_val ) and meas_nums :GetUseEnclosureStart (parts_val ) or meas_nums :GetUseEnclosureMultiple (parts_val )
573- local justification = meas_nums : GetShowMultiples ( parts_val ) and meas_nums :GetMultipleJustification (parts_val ) or meas_nums :GetStartJustification (parts_val )
574- local alignment = meas_nums : GetShowMultiples ( parts_val ) and meas_nums :GetMultipleAlignment (parts_val ) or meas_nums :GetStartAlignment (parts_val )
575- local vertical = meas_nums : GetShowOnSystemStart ( parts_val ) and meas_nums :GetStartVerticalPosition (parts_val ) or meas_nums :GetMultipleVerticalPosition (parts_val )
576- local horizontal = meas_nums : GetShowOnSystemStart ( parts_val ) and meas_nums :GetStartHorizontalPosition (parts_val ) or meas_nums :GetMultipleHorizontalPosition (parts_val )
578+ local font_info = use_show_on_start and meas_nums :CreateStartFontInfo (parts_val ) or meas_nums :CreateMultipleFontInfo (parts_val )
579+ local enclosure = use_show_on_start and meas_nums :GetEnclosureStart (parts_val ) or meas_nums :GetEnclosureMultiple (parts_val )
580+ local use_enclosure = use_show_on_start and meas_nums :GetUseEnclosureStart (parts_val ) or meas_nums :GetUseEnclosureMultiple (parts_val )
581+ local justification = show_on_every and meas_nums :GetMultipleJustification (parts_val ) or meas_nums :GetStartJustification (parts_val )
582+ local alignment = show_on_every and meas_nums :GetMultipleAlignment (parts_val ) or meas_nums :GetStartAlignment (parts_val )
583+ local vertical = use_show_on_start and meas_nums :GetStartVerticalPosition (parts_val ) or meas_nums :GetMultipleVerticalPosition (parts_val )
584+ local horizontal = use_show_on_start and meas_nums :GetStartHorizontalPosition (parts_val ) or meas_nums :GetMultipleHorizontalPosition (parts_val )
577585 set_element_text (style_element , " measureNumberAlignToBarline" , alignment == finale .MNALIGN_LEFT )
578586 set_element_text (style_element , " measureNumberOffsetType" , 1 )
579587 process_segment (font_info , enclosure , use_enclosure , justification , alignment , horizontal , vertical , " measureNumber" )
@@ -588,7 +596,7 @@ function write_measure_number_prefs(style_element)
588596 else
589597 set_element_text (style_element , " mmRestRangeBracketType" , 0 )
590598 end
591- process_segment (meas_nums :CreateMultiMeasureFontInfo (parts_val ), meas_nums : GetEnclosureMultiple ( parts_val ), meas_nums : GetUseEnclosureMultiple ( parts_val ) ,
599+ process_segment (meas_nums :CreateMultiMeasureFontInfo (parts_val ), nil , false ,
592600 meas_nums :GetMultiMeasureJustification (parts_val ), meas_nums :GetMultiMeasureAlignment (parts_val ),
593601 meas_nums :GetMultiMeasureHorizontalPosition (parts_val ), meas_nums :GetMultiMeasureVerticalPosition (parts_val ), " mmRestRange" )
594602 end
0 commit comments