Skip to content

Commit 9132bc8

Browse files
committed
fix problems found in testing and update version
1 parent 46fbe36 commit 9132bc8

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

src/document_options_to_musescore.lua

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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
124124
local tuplet_prefs
125125
local text_exps
126126
local music_font_name
127+
local spatium_scaling
127128

128129
function 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
183187
end
184188

185189
local function format_muse_float(value)
@@ -220,17 +224,21 @@ local function set_point_element(style_element, name, x, y)
220224
return element
221225
end
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
234242
end
235243

236244
function muse_font_efx(font_info)
@@ -263,7 +271,7 @@ end
263271

264272
function 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))
269277
end
@@ -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

Comments
 (0)