fix #285434 : Certain 2.x frame texts imported with no style
This commit is contained in:
parent
a36499a65d
commit
78d9a2978c
7 changed files with 839 additions and 78 deletions
|
@ -1523,40 +1523,63 @@ bool readNoteProperties206(Note* note, XmlReader& e)
|
|||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// ReadStyleName206
|
||||
// For 2.x files, the style tag could be in a different
|
||||
// position with respect to 3.x files. Since seek
|
||||
// position is not reliable for readline in QIODevices (for
|
||||
// example because of non-single-byte characters in at least
|
||||
// one of the fields; some two-byte characters are counted as
|
||||
// two single-byte characters and thus the reading could
|
||||
// start at the wrong position)
|
||||
//---------------------------------------------------------
|
||||
|
||||
static QString ReadStyleName206(XmlReader& e)
|
||||
{
|
||||
QString s;
|
||||
QIODevice* device = e.getDevice();
|
||||
if (!device || device->isSequential())
|
||||
return s;
|
||||
if (!device->isOpen())
|
||||
device->open(QIODevice::ReadOnly);
|
||||
const auto pos = device->pos();
|
||||
const auto pos1 = e.characterOffset();
|
||||
const QString tagName = e.name().toString();
|
||||
device->seek(0);
|
||||
XmlReader streamReader(device);
|
||||
QString xmltag;
|
||||
QString name;
|
||||
for (;;) {
|
||||
streamReader.readNextStartElement();
|
||||
name = streamReader.name().toString();
|
||||
if ((name == tagName) && (streamReader.characterOffset() == pos1)) {
|
||||
xmltag = streamReader.readXml();
|
||||
if (xmltag.contains("<style>")) {
|
||||
QRegExp re("<style>([^<]+)</style>");
|
||||
if (re.indexIn(xmltag) > -1)
|
||||
s = re.cap(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (streamReader.atEnd())
|
||||
break;
|
||||
}
|
||||
device->seek(pos);
|
||||
return s;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// readTextPropertyStyle206
|
||||
// This reads only the 'style' tag, so that it can be read
|
||||
// before setting anything else.
|
||||
//---------------------------------------------------------
|
||||
|
||||
static bool readTextPropertyStyle206(XmlReader& e, TextBase* t, Element* be, QStringRef elementName)
|
||||
static bool readTextPropertyStyle206(XmlReader& e, TextBase* t, Element* be)
|
||||
{
|
||||
QString s;
|
||||
if (e.readAheadAvailable()) {
|
||||
e.performReadAhead([&s, &elementName](QIODevice& dev) {
|
||||
const QString closeTag = QString("</").append(elementName.toString()).append(">");
|
||||
QByteArray arrLine = dev.readLine();
|
||||
while (!arrLine.isEmpty()) {
|
||||
QString line(arrLine);
|
||||
if (line.contains("<style>")) {
|
||||
QRegExp re("<style>([^<]+)</style>");
|
||||
if (re.indexIn(line) > -1)
|
||||
s = re.cap(1);
|
||||
return;
|
||||
}
|
||||
else if (line.contains(closeTag)) {
|
||||
return;
|
||||
}
|
||||
|
||||
arrLine = dev.readLine();
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
return false;
|
||||
QString s = ReadStyleName206(e);
|
||||
|
||||
if (s.isEmpty())
|
||||
return true;
|
||||
return false;
|
||||
|
||||
if (!be->isTuplet()) { // Hack
|
||||
if (excessTextStyles206.find(s) != excessTextStyles206.end()) {
|
||||
|
@ -1665,7 +1688,7 @@ static bool readTextProperties206(XmlReader& e, TextBase* t)
|
|||
|
||||
static void readText206(XmlReader& e, TextBase* t, Element* be)
|
||||
{
|
||||
readTextPropertyStyle206(e, t, be, e.name());
|
||||
readTextPropertyStyle206(e, t, be);
|
||||
while (e.readNextStartElement()) {
|
||||
if (!readTextProperties206(e, t))
|
||||
e.unknown();
|
||||
|
@ -1678,7 +1701,7 @@ static void readText206(XmlReader& e, TextBase* t, Element* be)
|
|||
|
||||
static void readTempoText(TempoText* t, XmlReader& e)
|
||||
{
|
||||
readTextPropertyStyle206(e, t, t, e.name());
|
||||
readTextPropertyStyle206(e, t, t);
|
||||
while (e.readNextStartElement()) {
|
||||
const QStringRef& tag(e.name());
|
||||
if (tag == "tempo")
|
||||
|
@ -1703,7 +1726,7 @@ static void readTempoText(TempoText* t, XmlReader& e)
|
|||
|
||||
static void readMarker(Marker* m, XmlReader& e)
|
||||
{
|
||||
readTextPropertyStyle206(e, m, m, e.name());
|
||||
readTextPropertyStyle206(e, m, m);
|
||||
Marker::Type mt = Marker::Type::SEGNO;
|
||||
|
||||
while (e.readNextStartElement()) {
|
||||
|
@ -1725,7 +1748,7 @@ static void readMarker(Marker* m, XmlReader& e)
|
|||
|
||||
static void readDynamic(Dynamic* d, XmlReader& e)
|
||||
{
|
||||
readTextPropertyStyle206(e, d, d, e.name());
|
||||
readTextPropertyStyle206(e, d, d);
|
||||
while (e.readNextStartElement()) {
|
||||
const QStringRef& tag = e.name();
|
||||
if (tag == "subtype")
|
||||
|
@ -3130,25 +3153,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e)
|
|||
// MuseScore 3 has different types for system text and
|
||||
// staff text while MuseScore 2 didn't.
|
||||
// We need to decide first which one we should create.
|
||||
QString styleName;
|
||||
if (e.readAheadAvailable()) {
|
||||
e.performReadAhead([&styleName, tag](QIODevice& dev) {
|
||||
const QString closeTag = QString("</").append(tag).append(">");
|
||||
QByteArray arrLine = dev.readLine();
|
||||
while (!arrLine.isEmpty()) {
|
||||
QString line(arrLine);
|
||||
if (line.contains("<style>")) {
|
||||
QRegExp re("<style>([A-z0-9]+)</style>");
|
||||
if (re.indexIn(line) > -1)
|
||||
styleName = re.cap(1);
|
||||
return;
|
||||
}
|
||||
if (line.contains(closeTag))
|
||||
return;
|
||||
arrLine = dev.readLine();
|
||||
}
|
||||
});
|
||||
}
|
||||
QString styleName = ReadStyleName206(e);
|
||||
StaffTextBase* t;
|
||||
if (styleName == "System" || styleName == "Tempo"
|
||||
|| styleName == "Marker" || styleName == "Jump"
|
||||
|
|
|
@ -848,8 +848,8 @@ Score::FileError MasterScore::loadCompressedMsc(QIODevice* io, bool ignoreVersio
|
|||
}
|
||||
}
|
||||
XmlReader e(dbuf);
|
||||
QBuffer readAheadBuf(&dbuf);
|
||||
e.setReadAheadDevice(&readAheadBuf);
|
||||
QBuffer readBuf(&dbuf);
|
||||
e.setDevice(&readBuf);
|
||||
e.setDocName(masterScore()->fileInfo()->completeBaseName());
|
||||
|
||||
FileError retval = read1(e, ignoreVersionError);
|
||||
|
@ -907,7 +907,7 @@ Score::FileError MasterScore::loadMsc(QString name, QIODevice* io, bool ignoreVe
|
|||
return loadCompressedMsc(io, ignoreVersionError);
|
||||
else {
|
||||
XmlReader r(io);
|
||||
r.setReadAheadDevice(io);
|
||||
r.setDevice(io);
|
||||
return read1(r, ignoreVersionError);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,8 +70,8 @@ class XmlReader : public QXmlStreamReader {
|
|||
QString docName; // used for error reporting
|
||||
|
||||
// For readahead possibility.
|
||||
// If needed, must be explicitly set by setReadAheadDevice.
|
||||
QIODevice* _readAheadDevice = nullptr;
|
||||
// If needed, must be explicitly set by setDevice.
|
||||
QIODevice* _readDevice = nullptr;
|
||||
|
||||
// Score read context (for read optimizations):
|
||||
Fraction _tick { Fraction(0, 1) };
|
||||
|
@ -205,10 +205,9 @@ class XmlReader : public QXmlStreamReader {
|
|||
Tid addUserTextStyle(const QString& name);
|
||||
Tid lookupUserTextStyle(const QString& name);
|
||||
|
||||
// Ownership on read ahead device is NOT transferred to XmlReader.
|
||||
void setReadAheadDevice(QIODevice* dev) { if (!dev->isSequential()) _readAheadDevice = dev; }
|
||||
bool readAheadAvailable() const { return bool(_readAheadDevice); }
|
||||
void performReadAhead(std::function<void(QIODevice&)> readAheadRoutine);
|
||||
// Ownership on read device is NOT transferred to XmlReader.
|
||||
void setDevice(QIODevice* dev) { if (!dev->isSequential()) _readDevice = dev; }
|
||||
QIODevice* getDevice() { return _readDevice; }
|
||||
|
||||
QList<std::pair<Element*, QPointF>>& fixOffsets() { return _fixOffsets; }
|
||||
};
|
||||
|
|
|
@ -547,27 +547,6 @@ Tid XmlReader::lookupUserTextStyle(const QString& name)
|
|||
return Tid::TEXT_STYLES; // not found
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// performReadAhead
|
||||
// If f is called, the device will be non-sequential and
|
||||
// open. Reading position equals to the current value of
|
||||
// characterOffset(), but it is possible to seek for any
|
||||
// other position inside f.
|
||||
//---------------------------------------------------------
|
||||
|
||||
void XmlReader::performReadAhead(std::function<void(QIODevice&)> f)
|
||||
{
|
||||
if (!_readAheadDevice || _readAheadDevice->isSequential())
|
||||
return;
|
||||
if (!_readAheadDevice->isOpen())
|
||||
_readAheadDevice->open(QIODevice::ReadOnly);
|
||||
|
||||
const auto pos = _readAheadDevice->pos();
|
||||
_readAheadDevice->seek(characterOffset());
|
||||
f(*_readAheadDevice);
|
||||
_readAheadDevice->seek(pos);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// addConnectorInfo
|
||||
//---------------------------------------------------------
|
||||
|
|
241
mtest/libmscore/compat206/frame_text2-ref.mscx
Normal file
241
mtest/libmscore/compat206/frame_text2-ref.mscx
Normal file
|
@ -0,0 +1,241 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<museScore version="3.01">
|
||||
<Score>
|
||||
<LayerTag id="0" tag="default"></LayerTag>
|
||||
<currentLayer>0</currentLayer>
|
||||
<Division>480</Division>
|
||||
<Style>
|
||||
<pageWidth>8.27007</pageWidth>
|
||||
<pageHeight>11.6901</pageHeight>
|
||||
<pagePrintableWidth>7.08897</pagePrintableWidth>
|
||||
<pageEvenLeftMargin>0.590551</pageEvenLeftMargin>
|
||||
<pageOddLeftMargin>0.590551</pageOddLeftMargin>
|
||||
<pageEvenTopMargin>0.393701</pageEvenTopMargin>
|
||||
<pageEvenBottomMargin>0.590551</pageEvenBottomMargin>
|
||||
<pageOddTopMargin>0.393701</pageOddTopMargin>
|
||||
<pageOddBottomMargin>0.590551</pageOddBottomMargin>
|
||||
<staffUpperBorder>12</staffUpperBorder>
|
||||
<staffLowerBorder>3</staffLowerBorder>
|
||||
<akkoladeDistance>8.5</akkoladeDistance>
|
||||
<minSystemDistance>9</minSystemDistance>
|
||||
<maxSystemDistance>9</maxSystemDistance>
|
||||
<lyricsDashForce>0</lyricsDashForce>
|
||||
<lyricsOddFramePadding>0</lyricsOddFramePadding>
|
||||
<lyricsOddFrameWidth>0</lyricsOddFrameWidth>
|
||||
<lyricsEvenFramePadding>0</lyricsEvenFramePadding>
|
||||
<lyricsEvenFrameWidth>0</lyricsEvenFrameWidth>
|
||||
<frameSystemDistance>3</frameSystemDistance>
|
||||
<doubleBarDistance>0.46</doubleBarDistance>
|
||||
<endBarDistance>0.65</endBarDistance>
|
||||
<clefLeftMargin>0.64</clefLeftMargin>
|
||||
<clefKeyRightMargin>1.75</clefKeyRightMargin>
|
||||
<barNoteDistance>1.2</barNoteDistance>
|
||||
<hairpinFramePadding>0</hairpinFramePadding>
|
||||
<hairpinFrameWidth>0</hairpinFrameWidth>
|
||||
<pedalFramePadding>0</pedalFramePadding>
|
||||
<pedalFrameWidth>0</pedalFrameWidth>
|
||||
<harmonyFretDist>0.5</harmonyFretDist>
|
||||
<chordSymbolAFramePadding>0</chordSymbolAFramePadding>
|
||||
<chordSymbolAFrameWidth>0</chordSymbolAFrameWidth>
|
||||
<showHeader>1</showHeader>
|
||||
<headerFirstPage>1</headerFirstPage>
|
||||
<evenHeaderL>$p</evenHeaderL>
|
||||
<oddHeaderR>$p</oddHeaderR>
|
||||
<footerOddEven>0</footerOddEven>
|
||||
<evenFooterL></evenFooterL>
|
||||
<evenFooterC>$C</evenFooterC>
|
||||
<oddFooterC>$C</oddFooterC>
|
||||
<oddFooterR></oddFooterR>
|
||||
<voltaFontSize>10</voltaFontSize>
|
||||
<voltaFramePadding>0</voltaFramePadding>
|
||||
<voltaFrameWidth>0</voltaFrameWidth>
|
||||
<ottavaHookAbove>0.5</ottavaHookAbove>
|
||||
<ottavaHookBelow>-0.5</ottavaHookBelow>
|
||||
<ottavaFontSize>10</ottavaFontSize>
|
||||
<ottavaFontStyle>2</ottavaFontStyle>
|
||||
<ottavaFramePadding>0</ottavaFramePadding>
|
||||
<ottavaFrameWidth>0</ottavaFrameWidth>
|
||||
<keySigNaturals>1</keySigNaturals>
|
||||
<tupletVHeadDistance>0</tupletVHeadDistance>
|
||||
<tupletVStemDistance>0</tupletVStemDistance>
|
||||
<tupletFontSize>9</tupletFontSize>
|
||||
<tupletFramePadding>0</tupletFramePadding>
|
||||
<tupletFrameWidth>0</tupletFrameWidth>
|
||||
<textLineFramePadding>0</textLineFramePadding>
|
||||
<textLineFrameWidth>0</textLineFrameWidth>
|
||||
<defaultFontSpatiumDependent>0</defaultFontSpatiumDependent>
|
||||
<defaultAlign>left,baseline</defaultAlign>
|
||||
<defaultFramePadding>0</defaultFramePadding>
|
||||
<defaultFrameWidth>0</defaultFrameWidth>
|
||||
<defaultFrameRound>25</defaultFrameRound>
|
||||
<titleFontStyle>1</titleFontStyle>
|
||||
<titleFramePadding>0</titleFramePadding>
|
||||
<titleFrameWidth>0</titleFrameWidth>
|
||||
<titleFrameRound>25</titleFrameRound>
|
||||
<subTitleFontSize>13</subTitleFontSize>
|
||||
<subTitleFramePadding>0</subTitleFramePadding>
|
||||
<subTitleFrameWidth>0</subTitleFrameWidth>
|
||||
<subTitleFrameRound>25</subTitleFrameRound>
|
||||
<composerFontSize>13</composerFontSize>
|
||||
<composerFontStyle>1</composerFontStyle>
|
||||
<composerFramePadding>0</composerFramePadding>
|
||||
<composerFrameWidth>0</composerFrameWidth>
|
||||
<composerFrameRound>25</composerFrameRound>
|
||||
<lyricistFontSize>13</lyricistFontSize>
|
||||
<lyricistFramePadding>0</lyricistFramePadding>
|
||||
<lyricistFrameWidth>0</lyricistFrameWidth>
|
||||
<lyricistFrameRound>25</lyricistFrameRound>
|
||||
<fingeringFramePadding>0</fingeringFramePadding>
|
||||
<fingeringFrameWidth>0</fingeringFrameWidth>
|
||||
<fingeringFrameRound>25</fingeringFrameRound>
|
||||
<lhGuitarFingeringFramePadding>0</lhGuitarFingeringFramePadding>
|
||||
<lhGuitarFingeringFrameWidth>0</lhGuitarFingeringFrameWidth>
|
||||
<lhGuitarFingeringFrameRound>25</lhGuitarFingeringFrameRound>
|
||||
<rhGuitarFingeringFontSize>10</rhGuitarFingeringFontSize>
|
||||
<rhGuitarFingeringFontStyle>3</rhGuitarFingeringFontStyle>
|
||||
<rhGuitarFingeringFramePadding>0</rhGuitarFingeringFramePadding>
|
||||
<rhGuitarFingeringFrameWidth>0</rhGuitarFingeringFrameWidth>
|
||||
<rhGuitarFingeringFrameRound>25</rhGuitarFingeringFrameRound>
|
||||
<longInstrumentFontSize>11</longInstrumentFontSize>
|
||||
<longInstrumentFramePadding>0</longInstrumentFramePadding>
|
||||
<longInstrumentFrameWidth>0</longInstrumentFrameWidth>
|
||||
<shortInstrumentFontSize>11</shortInstrumentFontSize>
|
||||
<shortInstrumentFramePadding>0</shortInstrumentFramePadding>
|
||||
<shortInstrumentFrameWidth>0</shortInstrumentFrameWidth>
|
||||
<partInstrumentFramePadding>0</partInstrumentFramePadding>
|
||||
<partInstrumentFrameWidth>0</partInstrumentFrameWidth>
|
||||
<partInstrumentFrameRound>25</partInstrumentFrameRound>
|
||||
<dynamicsFontStyle>0</dynamicsFontStyle>
|
||||
<dynamicsFramePadding>0</dynamicsFramePadding>
|
||||
<dynamicsFrameWidth>0</dynamicsFrameWidth>
|
||||
<expressionFontSize>12</expressionFontSize>
|
||||
<expressionFramePadding>0</expressionFramePadding>
|
||||
<expressionFrameWidth>0</expressionFrameWidth>
|
||||
<tempoFontSize>10</tempoFontSize>
|
||||
<tempoFontStyle>0</tempoFontStyle>
|
||||
<tempoFramePadding>0</tempoFramePadding>
|
||||
<tempoFrameWidth>0</tempoFrameWidth>
|
||||
<tempoFrameRound>25</tempoFrameRound>
|
||||
<metronomeFramePadding>0</metronomeFramePadding>
|
||||
<metronomeFrameWidth>0</metronomeFrameWidth>
|
||||
<measureNumberAlign>center,bottom</measureNumberAlign>
|
||||
<measureNumberFramePadding>0</measureNumberFramePadding>
|
||||
<measureNumberFrameWidth>0</measureNumberFrameWidth>
|
||||
<translatorAlign>center,top</translatorAlign>
|
||||
<translatorFramePadding>0</translatorFramePadding>
|
||||
<translatorFrameWidth>0</translatorFrameWidth>
|
||||
<systemAlign>left,top</systemAlign>
|
||||
<systemFramePadding>0</systemFramePadding>
|
||||
<systemFrameWidth>0</systemFrameWidth>
|
||||
<systemFrameRound>25</systemFrameRound>
|
||||
<staffAlign>left,top</staffAlign>
|
||||
<staffPosAbove x="0" y="-4"/>
|
||||
<staffFramePadding>0</staffFramePadding>
|
||||
<staffFrameWidth>0</staffFrameWidth>
|
||||
<staffFrameRound>25</staffFrameRound>
|
||||
<rehearsalMarkFontSize>10</rehearsalMarkFontSize>
|
||||
<rehearsalMarkFramePadding>0.1</rehearsalMarkFramePadding>
|
||||
<repeatLeftFramePadding>0</repeatLeftFramePadding>
|
||||
<repeatLeftFrameWidth>0</repeatLeftFrameWidth>
|
||||
<repeatLeftFrameRound>25</repeatLeftFrameRound>
|
||||
<repeatRightFontSize>10</repeatRightFontSize>
|
||||
<repeatRightFramePadding>0</repeatRightFramePadding>
|
||||
<repeatRightFrameWidth>0</repeatRightFrameWidth>
|
||||
<repeatRightFrameRound>25</repeatRightFrameRound>
|
||||
<frameFontSize>11</frameFontSize>
|
||||
<frameFontSpatiumDependent>1</frameFontSpatiumDependent>
|
||||
<frameFramePadding>0</frameFramePadding>
|
||||
<frameFrameWidth>0</frameFrameWidth>
|
||||
<textLineFontSize>9</textLineFontSize>
|
||||
<textLineTextAlign>right,center</textLineTextAlign>
|
||||
<glissandoAlign>center,baseline</glissandoAlign>
|
||||
<glissandoFramePadding>0</glissandoFramePadding>
|
||||
<glissandoFrameWidth>0</glissandoFrameWidth>
|
||||
<bendAlign>center,center</bendAlign>
|
||||
<bendFramePadding>0</bendFramePadding>
|
||||
<bendFrameWidth>0</bendFrameWidth>
|
||||
<headerFontSize>11</headerFontSize>
|
||||
<headerAlign>center,top</headerAlign>
|
||||
<headerFramePadding>0</headerFramePadding>
|
||||
<headerFrameWidth>0</headerFrameWidth>
|
||||
<footerFontSize>11</footerFontSize>
|
||||
<footerAlign>center,bottom</footerAlign>
|
||||
<footerFramePadding>0</footerFramePadding>
|
||||
<footerFrameWidth>0</footerFrameWidth>
|
||||
<instrumentChangeAlign>left,bottom</instrumentChangeAlign>
|
||||
<instrumentChangeFramePadding>0</instrumentChangeFramePadding>
|
||||
<instrumentChangeFrameWidth>0</instrumentChangeFrameWidth>
|
||||
<user1Name>Position text</user1Name>
|
||||
<user1FontSize>9</user1FontSize>
|
||||
<user1FramePadding>0</user1FramePadding>
|
||||
<user1FrameWidth>0</user1FrameWidth>
|
||||
<user2Name>Expression</user2Name>
|
||||
<user2FontStyle>2</user2FontStyle>
|
||||
<user2FramePadding>0</user2FramePadding>
|
||||
<user2FrameWidth>0</user2FrameWidth>
|
||||
<Spatium>1.94</Spatium>
|
||||
</Style>
|
||||
<showInvisible>1</showInvisible>
|
||||
<showUnprintable>1</showUnprintable>
|
||||
<showFrames>0</showFrames>
|
||||
<showMargins>0</showMargins>
|
||||
<metaTag name="arranger"></metaTag>
|
||||
<metaTag name="composer">Trad air: Tout le long de la rivière</metaTag>
|
||||
<metaTag name="copyright"></metaTag>
|
||||
<metaTag name="lyricist"> P. J. de Béranger</metaTag>
|
||||
<metaTag name="movementNumber"></metaTag>
|
||||
<metaTag name="movementTitle">L'Académie et le Caveau</metaTag>
|
||||
<metaTag name="originalFormat">xml</metaTag>
|
||||
<metaTag name="poet"></metaTag>
|
||||
<metaTag name="source"></metaTag>
|
||||
<metaTag name="translator"></metaTag>
|
||||
<metaTag name="workNumber"></metaTag>
|
||||
<metaTag name="workTitle"></metaTag>
|
||||
<Part>
|
||||
<Staff id="1">
|
||||
<StaffType group="pitched">
|
||||
</StaffType>
|
||||
</Staff>
|
||||
<trackName>Tenor</trackName>
|
||||
<Instrument>
|
||||
<longName>Tenor</longName>
|
||||
<trackName>Choir Aahs</trackName>
|
||||
<Channel>
|
||||
<program value="0"/>
|
||||
<controller ctrl="7" value="101"/>
|
||||
<controller ctrl="10" value="63"/>
|
||||
</Channel>
|
||||
</Instrument>
|
||||
</Part>
|
||||
<Staff id="1">
|
||||
<VBox>
|
||||
<height>25.5926</height>
|
||||
<bottomGap>0</bottomGap>
|
||||
<topMargin>3</topMargin>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<text>îèéààéà</text>
|
||||
</Text>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<offset x="55" y="0.5"/>
|
||||
<text>éééàè</text>
|
||||
</Text>
|
||||
</VBox>
|
||||
<VBox>
|
||||
<height>47.762</height>
|
||||
<topGap>10</topGap>
|
||||
<bottomGap>0</bottomGap>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<text>êêàééééç*éô</text>
|
||||
</Text>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<offset x="55" y="0.5"/>
|
||||
<text>àéùééé</text>
|
||||
</Text>
|
||||
</VBox>
|
||||
</Staff>
|
||||
</Score>
|
||||
</museScore>
|
536
mtest/libmscore/compat206/frame_text2.mscx
Normal file
536
mtest/libmscore/compat206/frame_text2.mscx
Normal file
|
@ -0,0 +1,536 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<museScore version="2.06">
|
||||
<programVersion>2.3.2</programVersion>
|
||||
<programRevision>4592407</programRevision>
|
||||
<Score>
|
||||
<LayerTag id="0" tag="default"></LayerTag>
|
||||
<currentLayer>0</currentLayer>
|
||||
<Synthesizer>
|
||||
</Synthesizer>
|
||||
<Division>480</Division>
|
||||
<Style>
|
||||
<staffUpperBorder>12</staffUpperBorder>
|
||||
<staffLowerBorder>3</staffLowerBorder>
|
||||
<akkoladeDistance>8.5</akkoladeDistance>
|
||||
<minSystemDistance>9</minSystemDistance>
|
||||
<maxSystemDistance>9</maxSystemDistance>
|
||||
<frameSystemDistance>3</frameSystemDistance>
|
||||
<showHeader>1</showHeader>
|
||||
<headerFirstPage>1</headerFirstPage>
|
||||
<evenHeaderL>$p</evenHeaderL>
|
||||
<oddHeaderR>$p</oddHeaderR>
|
||||
<footerOddEven>0</footerOddEven>
|
||||
<evenFooterL></evenFooterL>
|
||||
<evenFooterC>$C</evenFooterC>
|
||||
<oddFooterC>$C</oddFooterC>
|
||||
<oddFooterR></oddFooterR>
|
||||
<ottavaHook>0.5</ottavaHook>
|
||||
<keySigNaturals>1</keySigNaturals>
|
||||
<tupletVHeadDistance>0</tupletVHeadDistance>
|
||||
<tupletVStemDistance>0</tupletVStemDistance>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>top</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Title</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>24</size>
|
||||
<bold>1</bold>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>10</yoffset>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Subtitle</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>13</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>bottom</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Composer</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>13</size>
|
||||
<bold>1</bold>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>bottom</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Lyricist</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>13</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>6</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Lyrics Odd Lines</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>6</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Lyrics Even Lines</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Fingering</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>8</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>center</valign>
|
||||
<xoffset>-0.5</xoffset>
|
||||
<yoffset>0</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>LH Guitar Fingering</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>8</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>RH Guitar Fingering</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<bold>1</bold>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Instrument Name (Long)</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Instrument Name (Short)</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Instrument Name (Part)</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>18</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>8</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Dynamics</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-2</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Technique</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-4</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Tempo</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Metronome</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<bold>1</bold>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>bottom</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-2</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Measure Number</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>8</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>6</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Translator</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Tuplet</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>9</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-4</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>System</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-4</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Staff</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Chord Symbol</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-3</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Rehearsal Mark</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<bold>1</bold>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<frameWidthS>0.2</frameWidthS>
|
||||
<paddingWidthS>0.1</paddingWidthS>
|
||||
<frameRound>20</frameRound>
|
||||
<frameColor r="0" g="0" b="0" a="255"/>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-2</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Repeat Text Left</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>20</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-2</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Repeat Text Right</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-2</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Repeat Text</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
<systemFlag>1</systemFlag>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0.5</xoffset>
|
||||
<yoffset>1.9</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Volta</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<bold>1</bold>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Frame</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>right</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Text Line</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>9</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>baseline</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Glissando</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>8</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Ottava</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>0.15</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Pedal</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>baseline</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Hairpin</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>center</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Bend</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>8</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>top</valign>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Header</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>center</halign>
|
||||
<valign>bottom</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>5</yoffset>
|
||||
<offsetType>absolute</offsetType>
|
||||
<name>Footer</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>11</size>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>bottom</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-3</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Instrument Change</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>12</size>
|
||||
<bold>1</bold>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-4</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Position text</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>9</size>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<TextStyle>
|
||||
<halign>left</halign>
|
||||
<valign>top</valign>
|
||||
<xoffset>0</xoffset>
|
||||
<yoffset>-4</yoffset>
|
||||
<offsetType>spatium</offsetType>
|
||||
<name>Expression</name>
|
||||
<family>FreeSerif</family>
|
||||
<size>10</size>
|
||||
<italic>1</italic>
|
||||
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
|
||||
</TextStyle>
|
||||
<page-layout>
|
||||
<page-height>1683.38</page-height>
|
||||
<page-width>1190.89</page-width>
|
||||
<page-margins type="even">
|
||||
<left-margin>85.0394</left-margin>
|
||||
<right-margin>85.0394</right-margin>
|
||||
<top-margin>56.6929</top-margin>
|
||||
<bottom-margin>85.0394</bottom-margin>
|
||||
</page-margins>
|
||||
<page-margins type="odd">
|
||||
<left-margin>85.0394</left-margin>
|
||||
<right-margin>85.0394</right-margin>
|
||||
<top-margin>56.6929</top-margin>
|
||||
<bottom-margin>85.0394</bottom-margin>
|
||||
</page-margins>
|
||||
</page-layout>
|
||||
<Spatium>1.94</Spatium>
|
||||
</Style>
|
||||
<showInvisible>1</showInvisible>
|
||||
<showUnprintable>1</showUnprintable>
|
||||
<showFrames>0</showFrames>
|
||||
<showMargins>0</showMargins>
|
||||
<metaTag name="arranger"></metaTag>
|
||||
<metaTag name="composer">Trad air: Tout le long de la rivière</metaTag>
|
||||
<metaTag name="copyright"></metaTag>
|
||||
<metaTag name="creationDate">2016-04-04</metaTag>
|
||||
<metaTag name="lyricist"> P. J. de Béranger</metaTag>
|
||||
<metaTag name="movementNumber"></metaTag>
|
||||
<metaTag name="movementTitle">L'Académie et le Caveau</metaTag>
|
||||
<metaTag name="originalFormat">xml</metaTag>
|
||||
<metaTag name="platform">Microsoft Windows</metaTag>
|
||||
<metaTag name="poet"></metaTag>
|
||||
<metaTag name="source"></metaTag>
|
||||
<metaTag name="translator"></metaTag>
|
||||
<metaTag name="workNumber"></metaTag>
|
||||
<metaTag name="workTitle"></metaTag>
|
||||
<PageList>
|
||||
<Page>
|
||||
<System>
|
||||
</System>
|
||||
<System>
|
||||
</System>
|
||||
</Page>
|
||||
</PageList>
|
||||
<Part>
|
||||
<Staff id="1">
|
||||
<StaffType group="pitched">
|
||||
</StaffType>
|
||||
</Staff>
|
||||
<trackName>Tenor</trackName>
|
||||
<Instrument>
|
||||
<longName>Tenor</longName>
|
||||
<trackName>Choir Aahs</trackName>
|
||||
<Channel>
|
||||
<program value="0"/>
|
||||
<controller ctrl="7" value="101"/>
|
||||
<controller ctrl="10" value="63"/>
|
||||
<synti>Zerberus</synti>
|
||||
</Channel>
|
||||
</Instrument>
|
||||
</Part>
|
||||
<Staff id="1">
|
||||
<VBox>
|
||||
<height>25.5926</height>
|
||||
<topMargin>3</topMargin>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<text>îèéààéà</text>
|
||||
</Text>
|
||||
<Text>
|
||||
<pos x="55" y="0"/>
|
||||
<style>Frame</style>
|
||||
<text>éééàè</text>
|
||||
</Text>
|
||||
</VBox>
|
||||
<VBox>
|
||||
<height>47.762</height>
|
||||
<topGap>10</topGap>
|
||||
<Text>
|
||||
<style>Frame</style>
|
||||
<text>êêàééééç*éô</text>
|
||||
</Text>
|
||||
<Text>
|
||||
<pos x="55" y="0"/>
|
||||
<style>Frame</style>
|
||||
<text>àéùééé</text>
|
||||
</Text>
|
||||
</VBox>
|
||||
</Staff>
|
||||
</Score>
|
||||
</museScore>
|
|
@ -45,6 +45,7 @@ class TestCompat206 : public QObject, public MTest
|
|||
void lidEmptyText() { compat("lidemptytext"); }
|
||||
void intrumentNameAlign() {compat("intrumentNameAlign"); }
|
||||
void fermata() { compat("fermata"); }
|
||||
void frame_utf8() { compat("frame_text2"); }
|
||||
};
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue