mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-25 20:52:44 +01:00
Fix for DCiname and italic - thx Marco :)
This commit is contained in:
parent
f0688308b8
commit
65f47f4517
@ -83,10 +83,10 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
string languageEnglishName;
|
string languageEnglishName;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string languageShortName = LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle);
|
var languageShortName = LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle);
|
||||||
var ci = CultureInfo.CreateSpecificCulture(languageShortName);
|
var ci = CultureInfo.CreateSpecificCulture(languageShortName);
|
||||||
languageEnglishName = ci.EnglishName;
|
languageEnglishName = ci.EnglishName;
|
||||||
int indexOfStartP = languageEnglishName.IndexOf('(');
|
var indexOfStartP = languageEnglishName.IndexOf('(');
|
||||||
if (indexOfStartP > 1)
|
if (indexOfStartP > 1)
|
||||||
{
|
{
|
||||||
languageEnglishName = languageEnglishName.Remove(indexOfStartP).Trim();
|
languageEnglishName = languageEnglishName.Remove(indexOfStartP).Trim();
|
||||||
@ -97,25 +97,25 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
languageEnglishName = "English";
|
languageEnglishName = "English";
|
||||||
}
|
}
|
||||||
|
|
||||||
string hex = Guid.NewGuid().ToString().RemoveChar('-');
|
var hex = Guid.NewGuid().ToString().RemoveChar('-');
|
||||||
hex = hex.Insert(8, "-").Insert(13, "-").Insert(18, "-").Insert(23, "-");
|
hex = hex.Insert(8, "-").Insert(13, "-").Insert(18, "-").Insert(23, "-");
|
||||||
|
|
||||||
string xmlStructure = "<DCSubtitle Version=\"1.0\">" + Environment.NewLine +
|
var xmlStructure = "<DCSubtitle Version=\"1.0\">" + Environment.NewLine +
|
||||||
" <SubtitleID>" + hex.ToLowerInvariant() + "</SubtitleID>" + Environment.NewLine +
|
" <SubtitleID>" + hex.ToLowerInvariant() + "</SubtitleID>" + Environment.NewLine +
|
||||||
" <MovieTitle></MovieTitle>" + Environment.NewLine +
|
" <MovieTitle></MovieTitle>" + Environment.NewLine +
|
||||||
" <ReelNumber>1</ReelNumber>" + Environment.NewLine +
|
" <ReelNumber>1</ReelNumber>" + Environment.NewLine +
|
||||||
" <Language>" + languageEnglishName + "</Language>" + Environment.NewLine +
|
" <Language>" + languageEnglishName + "</Language>" + Environment.NewLine +
|
||||||
" <LoadFont URI=\"" + Configuration.Settings.SubtitleSettings.DCinemaFontFile + "\" Id=\"Font1\"/>" + Environment.NewLine +
|
" <LoadFont URI=\"" + Configuration.Settings.SubtitleSettings.DCinemaFontFile + "\" Id=\"Font1\"/>" + Environment.NewLine +
|
||||||
" <Font Id=\"Font1\" Color=\"FFFFFFFF\" Effect=\"border\" EffectColor=\"FF000000\" Italic=\"no\" Underlined=\"no\" Script=\"normal\" Size=\"42\">" + Environment.NewLine +
|
" <Font Id=\"Font1\" Color=\"FFFFFFFF\" Effect=\"border\" EffectColor=\"FF000000\" Italic=\"no\" Underlined=\"no\" Script=\"normal\" Size=\"42\">" + Environment.NewLine +
|
||||||
" </Font>" + Environment.NewLine +
|
" </Font>" + Environment.NewLine +
|
||||||
"</DCSubtitle>";
|
"</DCSubtitle>";
|
||||||
|
|
||||||
var xml = new XmlDocument();
|
var xml = new XmlDocument();
|
||||||
xml.LoadXml(xmlStructure);
|
xml.LoadXml(xmlStructure);
|
||||||
xml.PreserveWhitespace = true;
|
xml.PreserveWhitespace = true;
|
||||||
|
|
||||||
var ss = Configuration.Settings.SubtitleSettings;
|
var ss = Configuration.Settings.SubtitleSettings;
|
||||||
string loadedFontId = "Font1";
|
var loadedFontId = "Font1";
|
||||||
if (!string.IsNullOrEmpty(ss.CurrentDCinemaFontId))
|
if (!string.IsNullOrEmpty(ss.CurrentDCinemaFontId))
|
||||||
{
|
{
|
||||||
loadedFontId = ss.CurrentDCinemaFontId;
|
loadedFontId = ss.CurrentDCinemaFontId;
|
||||||
@ -137,7 +137,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
xml.DocumentElement.SelectSingleNode("Language").InnerText = ss.CurrentDCinemaLanguage;
|
xml.DocumentElement.SelectSingleNode("Language").InnerText = ss.CurrentDCinemaLanguage;
|
||||||
xml.DocumentElement.SelectSingleNode("LoadFont").Attributes["URI"].InnerText = ss.CurrentDCinemaFontUri;
|
xml.DocumentElement.SelectSingleNode("LoadFont").Attributes["URI"].InnerText = ss.CurrentDCinemaFontUri;
|
||||||
xml.DocumentElement.SelectSingleNode("LoadFont").Attributes["Id"].InnerText = loadedFontId;
|
xml.DocumentElement.SelectSingleNode("LoadFont").Attributes["Id"].InnerText = loadedFontId;
|
||||||
int fontSize = ss.CurrentDCinemaFontSize;
|
var fontSize = ss.CurrentDCinemaFontSize;
|
||||||
xml.DocumentElement.SelectSingleNode("Font").Attributes["Id"].InnerText = loadedFontId;
|
xml.DocumentElement.SelectSingleNode("Font").Attributes["Id"].InnerText = loadedFontId;
|
||||||
xml.DocumentElement.SelectSingleNode("Font").Attributes["Color"].InnerText = "FF" + Utilities.ColorToHex(ss.CurrentDCinemaFontColor).TrimStart('#').ToUpperInvariant();
|
xml.DocumentElement.SelectSingleNode("Font").Attributes["Color"].InnerText = "FF" + Utilities.ColorToHex(ss.CurrentDCinemaFontColor).TrimStart('#').ToUpperInvariant();
|
||||||
xml.DocumentElement.SelectSingleNode("Font").Attributes["Effect"].InnerText = ss.CurrentDCinemaFontEffect;
|
xml.DocumentElement.SelectSingleNode("Font").Attributes["Effect"].InnerText = ss.CurrentDCinemaFontEffect;
|
||||||
@ -145,8 +145,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
xml.DocumentElement.SelectSingleNode("Font").Attributes["Size"].InnerText = ss.CurrentDCinemaFontSize.ToString();
|
xml.DocumentElement.SelectSingleNode("Font").Attributes["Size"].InnerText = ss.CurrentDCinemaFontSize.ToString();
|
||||||
|
|
||||||
var mainListFont = xml.DocumentElement.SelectSingleNode("Font");
|
var mainListFont = xml.DocumentElement.SelectSingleNode("Font");
|
||||||
int no = 0;
|
var no = 0;
|
||||||
foreach (Paragraph p in subtitle.Paragraphs)
|
foreach (var p in subtitle.Paragraphs)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(p.Text))
|
if (!string.IsNullOrEmpty(p.Text))
|
||||||
{
|
{
|
||||||
@ -184,11 +184,11 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
bool alignVCenter = p.Text.StartsWith("{\\a9}", StringComparison.Ordinal) || p.Text.StartsWith("{\\a10}", StringComparison.Ordinal) || p.Text.StartsWith("{\\a11}", StringComparison.Ordinal) || // sub station alpha
|
bool alignVCenter = p.Text.StartsWith("{\\a9}", StringComparison.Ordinal) || p.Text.StartsWith("{\\a10}", StringComparison.Ordinal) || p.Text.StartsWith("{\\a11}", StringComparison.Ordinal) || // sub station alpha
|
||||||
p.Text.StartsWith("{\\an4}", StringComparison.Ordinal) || p.Text.StartsWith("{\\an5}", StringComparison.Ordinal) || p.Text.StartsWith("{\\an6}", StringComparison.Ordinal); // advanced sub station alpha
|
p.Text.StartsWith("{\\an4}", StringComparison.Ordinal) || p.Text.StartsWith("{\\an5}", StringComparison.Ordinal) || p.Text.StartsWith("{\\an6}", StringComparison.Ordinal); // advanced sub station alpha
|
||||||
|
|
||||||
string text = Utilities.RemoveSsaTags(p.Text);
|
var text = Utilities.RemoveSsaTags(p.Text);
|
||||||
|
|
||||||
var lines = text.SplitToLines();
|
var lines = text.SplitToLines();
|
||||||
int vPos;
|
int vPos;
|
||||||
int vPosFactor = (int)Math.Round(fontSize / 7.4);
|
var vPosFactor = (int)Math.Round(fontSize / 7.4);
|
||||||
if (alignVTop)
|
if (alignVTop)
|
||||||
{
|
{
|
||||||
vPos = Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
vPos = Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
||||||
@ -202,10 +202,10 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
vPos = (lines.Count * vPosFactor) - vPosFactor + Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
vPos = (lines.Count * vPosFactor) - vPosFactor + Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isItalic = false;
|
var isItalic = false;
|
||||||
int fontNo = 0;
|
var fontNo = 0;
|
||||||
var fontColors = new Stack<string>();
|
var fontColors = new Stack<string>();
|
||||||
foreach (string line in lines)
|
foreach (var line in lines)
|
||||||
{
|
{
|
||||||
var textNode = xml.CreateElement("Text");
|
var textNode = xml.CreateElement("Text");
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
direction.InnerText = "horizontal";
|
direction.InnerText = "horizontal";
|
||||||
textNode.Attributes.Append(direction);
|
textNode.Attributes.Append(direction);
|
||||||
|
|
||||||
int i = 0;
|
var i = 0;
|
||||||
var txt = new StringBuilder();
|
var txt = new StringBuilder();
|
||||||
var html = new StringBuilder();
|
var html = new StringBuilder();
|
||||||
XmlNode nodeTemp = xml.CreateElement("temp");
|
XmlNode nodeTemp = xml.CreateElement("temp");
|
||||||
@ -308,14 +308,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
}
|
}
|
||||||
else if (line.Substring(i).StartsWith("<font color=", StringComparison.Ordinal) && line.Substring(i + 3).Contains('>'))
|
else if (line.Substring(i).StartsWith("<font color=", StringComparison.Ordinal) && line.Substring(i + 3).Contains('>'))
|
||||||
{
|
{
|
||||||
int endOfFont = line.IndexOf('>', i);
|
var endOfFont = line.IndexOf('>', i);
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
nodeTemp.InnerText = txt.ToString();
|
nodeTemp.InnerText = txt.ToString();
|
||||||
html.Append(nodeTemp.InnerXml);
|
html.Append(nodeTemp.InnerXml);
|
||||||
txt.Clear();
|
txt.Clear();
|
||||||
}
|
}
|
||||||
string c = GetDCinemaColorString(line.Substring(i + 12, endOfFont - (i + 12)));
|
var c = GetDCinemaColorString(line.Substring(i + 12, endOfFont - (i + 12)));
|
||||||
fontColors.Push(c);
|
fontColors.Push(c);
|
||||||
fontNo++;
|
fontNo++;
|
||||||
i = endOfFont;
|
i = endOfFont;
|
||||||
@ -464,7 +464,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
no++;
|
no++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string s = ToUtf8XmlString(xml).Replace("encoding=\"utf-8\"", "encoding=\"UTF-8\"");
|
|
||||||
|
var s = ToUtf8XmlString(xml).Replace("encoding=\"utf-8\"", "encoding=\"UTF-8\"");
|
||||||
while (s.Contains("</Font> ") || s.Contains(" <Font ") || s.Contains(Environment.NewLine + "<Font ") || s.Contains("</Font>" + Environment.NewLine))
|
while (s.Contains("</Font> ") || s.Contains(" <Font ") || s.Contains(Environment.NewLine + "<Font ") || s.Contains("</Font>" + Environment.NewLine))
|
||||||
{
|
{
|
||||||
while (s.Contains(" Font"))
|
while (s.Contains(" Font"))
|
||||||
@ -577,7 +578,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
|
|
||||||
if (node.Attributes?["Color"] != null)
|
if (node.Attributes?["Color"] != null)
|
||||||
{
|
{
|
||||||
ss.CurrentDCinemaFontColor = System.Drawing.ColorTranslator.FromHtml("#" + node.Attributes["Color"].InnerText);
|
ss.CurrentDCinemaFontColor = ColorTranslator.FromHtml("#" + node.Attributes["Color"].InnerText);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.Attributes?["Effect"] != null)
|
if (node.Attributes?["Effect"] != null)
|
||||||
@ -822,13 +823,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
}
|
}
|
||||||
|
|
||||||
var hex = s.TrimStart('#');
|
var hex = s.TrimStart('#');
|
||||||
for (int i = s.Length - 1; i >= 0; i--)
|
for (var i = s.Length - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (!CharUtils.IsHexadecimal(s[i]))
|
if (!CharUtils.IsHexadecimal(s[i]))
|
||||||
{
|
{
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return "#" + hex;
|
return "#" + hex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,7 +838,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
var parts = s.Split(':', '.', ',');
|
var parts = s.Split(':', '.', ',');
|
||||||
|
|
||||||
int milliseconds = int.Parse(parts[3]) * 4; // 000 to 249
|
var milliseconds = int.Parse(parts[3]) * 4; // 000 to 249
|
||||||
if (s.Contains('.'))
|
if (s.Contains('.'))
|
||||||
{
|
{
|
||||||
milliseconds = int.Parse(parts[3].PadRight(3, '0'));
|
milliseconds = int.Parse(parts[3].PadRight(3, '0'));
|
||||||
@ -854,6 +856,5 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
return $"{time.Hours:00}:{time.Minutes:00}:{time.Seconds:00}:{time.Milliseconds / 4:000}";
|
return $"{time.Hours:00}:{time.Minutes:00}:{time.Seconds:00}:{time.Milliseconds / 4:000}";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,18 +231,18 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
vPos = lines.Count * vPosFactor - vPosFactor + Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
vPos = lines.Count * vPosFactor - vPosFactor + Configuration.Settings.SubtitleSettings.DCinemaBottomMargin; // Bottom margin is normally 8
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isItalic = false;
|
var isItalic = false;
|
||||||
int fontNo = 0;
|
var fontNo = 0;
|
||||||
Stack<string> fontColors = new Stack<string>();
|
var fontColors = new Stack<string>();
|
||||||
foreach (string line in lines)
|
foreach (var line in lines)
|
||||||
{
|
{
|
||||||
XmlNode textNode = xml.CreateElement("dcst:Text", "dcst");
|
var textNode = xml.CreateElement("dcst:Text", "dcst");
|
||||||
|
|
||||||
XmlAttribute vPosition = xml.CreateAttribute("Vposition");
|
var vPosition = xml.CreateAttribute("Vposition");
|
||||||
vPosition.InnerText = vPos.ToString();
|
vPosition.InnerText = vPos.ToString();
|
||||||
textNode.Attributes.Append(vPosition);
|
textNode.Attributes.Append(vPosition);
|
||||||
|
|
||||||
XmlAttribute vAlign = xml.CreateAttribute("Valign");
|
var vAlign = xml.CreateAttribute("Valign");
|
||||||
if (alignVTop)
|
if (alignVTop)
|
||||||
{
|
{
|
||||||
vAlign.InnerText = "top";
|
vAlign.InnerText = "top";
|
||||||
@ -258,7 +258,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
|
|
||||||
textNode.Attributes.Append(vAlign); textNode.Attributes.Append(vAlign);
|
textNode.Attributes.Append(vAlign); textNode.Attributes.Append(vAlign);
|
||||||
|
|
||||||
XmlAttribute hAlign = xml.CreateAttribute("Halign");
|
var hAlign = xml.CreateAttribute("Halign");
|
||||||
if (alignLeft)
|
if (alignLeft)
|
||||||
{
|
{
|
||||||
hAlign.InnerText = "left";
|
hAlign.InnerText = "left";
|
||||||
@ -274,14 +274,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
|
|
||||||
textNode.Attributes.Append(hAlign);
|
textNode.Attributes.Append(hAlign);
|
||||||
|
|
||||||
XmlAttribute direction = xml.CreateAttribute("Direction");
|
var direction = xml.CreateAttribute("Direction");
|
||||||
direction.InnerText = "ltr";
|
direction.InnerText = "ltr";
|
||||||
textNode.Attributes.Append(direction);
|
textNode.Attributes.Append(direction);
|
||||||
|
|
||||||
int i = 0;
|
var i = 0;
|
||||||
var txt = new StringBuilder();
|
var txt = new StringBuilder();
|
||||||
var html = new StringBuilder();
|
var html = new StringBuilder();
|
||||||
XmlNode nodeTemp = xml.CreateElement("temp");
|
var nodeTemp = xml.CreateElement("temp");
|
||||||
while (i < line.Length)
|
while (i < line.Length)
|
||||||
{
|
{
|
||||||
if (!isItalic && line.Substring(i).StartsWith("<i>"))
|
if (!isItalic && line.Substring(i).StartsWith("<i>"))
|
||||||
@ -299,15 +299,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
XmlNode fontNode = xml.CreateElement("dcst:Font", "dcst");
|
var fontNode = xml.CreateElement("dcst:Font", "dcst");
|
||||||
|
var italic = xml.CreateAttribute("Italic");
|
||||||
XmlAttribute italic = xml.CreateAttribute("Italic");
|
|
||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
|
|
||||||
if (line.Length > i + 5 && line.Substring(i + 4).StartsWith("</font>"))
|
if (line.Length > i + 5 && line.Substring(i + 4).StartsWith("</font>"))
|
||||||
{
|
{
|
||||||
XmlAttribute fontColor = xml.CreateAttribute("Color");
|
var fontColor = xml.CreateAttribute("Color");
|
||||||
fontColor.InnerText = fontColors.Pop();
|
fontColor.InnerText = fontColors.Pop();
|
||||||
fontNode.Attributes.Append(fontColor);
|
fontNode.Attributes.Append(fontColor);
|
||||||
fontNo--;
|
fontNo--;
|
||||||
@ -323,7 +322,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
}
|
}
|
||||||
else if (line.Substring(i).StartsWith("<font color=") && line.Substring(i + 3).Contains('>'))
|
else if (line.Substring(i).StartsWith("<font color=") && line.Substring(i + 3).Contains('>'))
|
||||||
{
|
{
|
||||||
int endOfFont = line.IndexOf('>', i);
|
var endOfFont = line.IndexOf('>', i);
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
nodeTemp.InnerText = txt.ToString();
|
nodeTemp.InnerText = txt.ToString();
|
||||||
@ -339,15 +338,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
XmlNode fontNode = xml.CreateElement("dcst:Font", "dcst");
|
var fontNode = xml.CreateElement("dcst:Font", "dcst");
|
||||||
|
var fontColor = xml.CreateAttribute("Color");
|
||||||
XmlAttribute fontColor = xml.CreateAttribute("Color");
|
|
||||||
fontColor.InnerText = fontColors.Pop();
|
fontColor.InnerText = fontColors.Pop();
|
||||||
fontNode.Attributes.Append(fontColor);
|
fontNode.Attributes.Append(fontColor);
|
||||||
|
|
||||||
if (line.Length > i + 9 && line.Substring(i + 7).StartsWith("</i>"))
|
if (line.Length > i + 9 && line.Substring(i + 7).StartsWith("</i>"))
|
||||||
{
|
{
|
||||||
XmlAttribute italic = xml.CreateAttribute("Italic");
|
var italic = xml.CreateAttribute("Italic");
|
||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
isItalic = false;
|
isItalic = false;
|
||||||
@ -372,15 +370,14 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
XmlNode fontNode = xml.CreateElement("dcst:Font", "dcst");
|
var fontNode = xml.CreateElement("dcst:Font", "dcst");
|
||||||
|
var fontColor = xml.CreateAttribute("Color");
|
||||||
XmlAttribute fontColor = xml.CreateAttribute("Color");
|
|
||||||
fontColor.InnerText = fontColors.Peek();
|
fontColor.InnerText = fontColors.Peek();
|
||||||
fontNode.Attributes.Append(fontColor);
|
fontNode.Attributes.Append(fontColor);
|
||||||
|
|
||||||
if (isItalic)
|
if (isItalic)
|
||||||
{
|
{
|
||||||
XmlAttribute italic = xml.CreateAttribute("Italic");
|
var italic = xml.CreateAttribute("Italic");
|
||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
}
|
}
|
||||||
@ -390,18 +387,18 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
}
|
}
|
||||||
else if (html.Length > 0 && html.ToString().StartsWith("<dcst:Font "))
|
else if (html.Length > 0 && html.ToString().StartsWith("<dcst:Font "))
|
||||||
{
|
{
|
||||||
XmlDocument temp = new XmlDocument();
|
var temp = new XmlDocument();
|
||||||
temp.LoadXml("<root>" + html.ToString().Replace("dcst:Font", "Font") + "</root>");
|
temp.LoadXml("<root>" + html.ToString().Replace("dcst:Font", "Font") + "</root>");
|
||||||
XmlNode fontNode = xml.CreateElement("dcst:Font");
|
var fontNode = xml.CreateElement("dcst:Font");
|
||||||
fontNode.InnerXml = temp.DocumentElement.SelectSingleNode("Font").InnerXml;
|
fontNode.InnerXml = temp.DocumentElement.SelectSingleNode("Font").InnerXml;
|
||||||
foreach (XmlAttribute a in temp.DocumentElement.SelectSingleNode("Font").Attributes)
|
foreach (XmlAttribute a in temp.DocumentElement.SelectSingleNode("Font").Attributes)
|
||||||
{
|
{
|
||||||
XmlAttribute newA = xml.CreateAttribute(a.Name);
|
var newA = xml.CreateAttribute(a.Name);
|
||||||
newA.InnerText = a.InnerText;
|
newA.InnerText = a.InnerText;
|
||||||
fontNode.Attributes.Append(newA);
|
fontNode.Attributes.Append(newA);
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlAttribute fontColor = xml.CreateAttribute("Color");
|
var fontColor = xml.CreateAttribute("Color");
|
||||||
fontColor.InnerText = fontColors.Peek();
|
fontColor.InnerText = fontColors.Peek();
|
||||||
fontNode.Attributes.Append(fontColor);
|
fontNode.Attributes.Append(fontColor);
|
||||||
|
|
||||||
@ -413,13 +410,11 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
{
|
{
|
||||||
if (txt.Length > 0)
|
if (txt.Length > 0)
|
||||||
{
|
{
|
||||||
XmlNode fontNode = xml.CreateElement("dcst:Font", "dcst");
|
var fontNode = xml.CreateElement("dcst:Font", "dcst");
|
||||||
|
var italic = xml.CreateAttribute("Italic");
|
||||||
XmlAttribute italic = xml.CreateAttribute("Italic");
|
|
||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
|
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(txt.ToString());
|
||||||
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(line);
|
|
||||||
html.Append(fontNode.OuterXml);
|
html.Append(fontNode.OuterXml);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -431,6 +426,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
html.Append(nodeTemp.InnerXml);
|
html.Append(nodeTemp.InnerXml);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
textNode.InnerXml = html.ToString();
|
textNode.InnerXml = html.ToString();
|
||||||
if (html.Length == 0)
|
if (html.Length == 0)
|
||||||
{
|
{
|
||||||
|
@ -420,7 +420,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
|
|
||||||
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(line);
|
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(txt.ToString());
|
||||||
html.Append(fontNode.OuterXml);
|
html.Append(fontNode.OuterXml);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -420,7 +420,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
italic.InnerText = "yes";
|
italic.InnerText = "yes";
|
||||||
fontNode.Attributes.Append(italic);
|
fontNode.Attributes.Append(italic);
|
||||||
|
|
||||||
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(line);
|
fontNode.InnerText = HtmlUtil.RemoveHtmlTags(txt.ToString());
|
||||||
html.Append(fontNode.OuterXml);
|
html.Append(fontNode.OuterXml);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user