Skip to content

Commit 72a4765

Browse files
committed
Tuplet numbers from musical symbols font
1 parent 21ccaca commit 72a4765

File tree

6 files changed

+28
-6
lines changed

6 files changed

+28
-6
lines changed

src/engraving/dom/textbase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@ mu::draw::Font TextFragment::font(const TextBase* t) const
872872
draw::Font::Type fontType = draw::Font::Type::Unknown;
873873
if (format.fontFamily() == "ScoreText") {
874874
if (t->isDynamic() || t->textStyleType() == TextStyleType::OTTAVA || t->textStyleType() == TextStyleType::HARP_PEDAL_DIAGRAM
875-
|| t->isStringTunings()) {
875+
|| t->textStyleType() == TextStyleType::TUPLET || t->isStringTunings()) {
876876
std::string fontName = engravingFonts()->fontByName(t->style().styleSt(Sid::MusicalSymbolFont).toStdString())->family();
877877
family = String::fromStdString(fontName);
878878
fontType = draw::Font::Type::MusicSymbol;

src/engraving/rendering/dev/tupletlayout.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ void TupletLayout::layout(Tuplet* item, LayoutContext& ctx)
5454
//
5555
// create tuplet number if necessary
5656
//
57+
const MStyle& style = ctx.conf().style();
5758
double _spatium = item->spatium();
5859
if (item->numberType() != TupletNumberType::NO_TEXT) {
5960
if (item->number() == nullptr) {
@@ -71,10 +72,21 @@ void TupletLayout::layout(Tuplet* item, LayoutContext& ctx)
7172
item->number()->setPropertyFlags(Pid::FONT_SIZE, item->propertyFlags(Pid::FONT_SIZE));
7273
item->number()->setPropertyFlags(Pid::FONT_STYLE, item->propertyFlags(Pid::FONT_STYLE));
7374
item->number()->setPropertyFlags(Pid::ALIGN, item->propertyFlags(Pid::ALIGN));
74-
if (item->numberType() == TupletNumberType::SHOW_NUMBER) {
75-
item->number()->setXmlText(String(u"%1").arg(item->ratio().numerator()));
75+
76+
String numberString = (item->numberType() == TupletNumberType::SHOW_NUMBER)
77+
? String(u"%1").arg(item->ratio().numerator())
78+
: String(u"%1:%2").arg(item->ratio().numerator(), item->ratio().denominator());
79+
if (style.styleB(Sid::tupletUseSymbols)) {
80+
String smuflNum = String(u"");
81+
for (size_t i = 0; i < numberString.size(); ++i) {
82+
smuflNum.append(u"<sym>tuplet");
83+
smuflNum.append(numberString.at(i).unicode());
84+
smuflNum.append(u"</sym>");
85+
}
86+
smuflNum.replace(String(u":"), String(u"Colon"));
87+
item->number()->setXmlText(smuflNum);
7688
} else {
77-
item->number()->setXmlText(String(u"%1:%2").arg(item->ratio().numerator(), item->ratio().denominator()));
89+
item->number()->setXmlText(numberString);
7890
}
7991

8092
item->setIsSmall(true);
@@ -84,7 +96,7 @@ void TupletLayout::layout(Tuplet* item, LayoutContext& ctx)
8496
break;
8597
}
8698
}
87-
item->number()->mutldata()->setMag(item->isSmall() ? ctx.conf().styleD(Sid::smallNoteMag) : 1.0);
99+
item->number()->mutldata()->setMag(item->isSmall() ? style.styleD(Sid::smallNoteMag) : 1.0);
88100
} else {
89101
if (item->number()) {
90102
if (item->number()->selected()) {
@@ -150,7 +162,6 @@ void TupletLayout::layout(Tuplet* item, LayoutContext& ctx)
150162
//
151163
// calculate bracket start and end point p1 p2
152164
//
153-
const MStyle& style = ctx.conf().style();
154165
double maxSlope = style.styleD(Sid::tupletMaxSlope);
155166
bool outOfStaff = style.styleB(Sid::tupletOufOfStaff);
156167
double vHeadDistance = style.styleMM(Sid::tupletVHeadDistance) * item->mag();

src/engraving/style/styledef.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ const std::array<StyleDef::StyleValue, size_t(Sid::STYLES)> StyleDef::styleValue
623623
{ Sid::tupletFontStyle, "tupletFontStyle", int(FontStyle::Italic) },
624624
{ Sid::tupletColor, "tupletColor", PropertyValue::fromValue(Color::BLACK) },
625625
{ Sid::tupletAlign, "tupletAlign", Align(AlignH::HCENTER, AlignV::VCENTER) },
626+
{ Sid::tupletUseSymbols, "tupletUseSymbols", false },
626627
{ Sid::tupletBracketHookHeight, "tupletBracketHookHeight", Spatium(0.75) },
627628
{ Sid::tupletOffset, "tupletOffset", PointF() },
628629
{ Sid::tupletFrameType, "tupletFrameType", int(FrameType::NO_FRAME) },

src/engraving/style/styledef.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ enum class Sid {
634634
tupletFontStyle,
635635
tupletColor,
636636
tupletAlign,
637+
tupletUseSymbols,
637638
tupletBracketHookHeight,
638639
tupletOffset,
639640
tupletFrameType,

src/notation/view/widgets/editstyle.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@ EditStyle::EditStyle(QWidget* parent)
472472
{ StyleId::tupletBracketType, false, tupletBracketType, resetTupletBracketType },
473473
{ StyleId::tupletMaxSlope, false, tupletMaxSlope, resetTupletMaxSlope },
474474
{ StyleId::tupletOufOfStaff, false, tupletOutOfStaff, 0 },
475+
{ StyleId::tupletUseSymbols, false, tupletUseSymbols, 0 },
475476

476477
{ StyleId::repeatBarTips, false, showRepeatBarTips, resetShowRepeatBarTips },
477478
{ StyleId::startBarlineSingle, false, showStartBarlineSingle, resetShowStartBarlineSingle },

src/notation/view/widgets/editstyle.ui

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6577,6 +6577,13 @@ By default, they will be placed such as that their right end are at the same lev
65776577
</item>
65786578
</widget>
65796579
</item>
6580+
<item row="3" column="0" colspan="3">
6581+
<widget class="QCheckBox" name="tupletUseSymbols">
6582+
<property name="text">
6583+
<string>Load number from musical symbols font</string>
6584+
</property>
6585+
</widget>
6586+
</item>
65806587
</layout>
65816588
</widget>
65826589
</item>
@@ -14280,6 +14287,7 @@ By default, they will be placed such as that their right end are at the same lev
1428014287
<tabstop>resetTupletNumberType</tabstop>
1428114288
<tabstop>tupletBracketType</tabstop>
1428214289
<tabstop>resetTupletBracketType</tabstop>
14290+
<tabstop>tupletUseSymbols</tabstop>
1428314291
<tabstop>tupletBracketWidth</tabstop>
1428414292
<tabstop>resetTupletBracketWidth</tabstop>
1428514293
<tabstop>tupletBracketHookHeight</tabstop>

0 commit comments

Comments
 (0)