mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-26 05:02:36 +01:00
Fix #1194 - problems with italic and bold tags in image export - thx marb99/aaaxx :)
This commit is contained in:
parent
a81c299689
commit
a0da9d1cab
@ -2098,17 +2098,38 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
//baseLinePadding = (int)Math.Round(baselineOffsetPixels);
|
//baseLinePadding = (int)Math.Round(baselineOffsetPixels);
|
||||||
|
|
||||||
var lefts = new List<float>();
|
var lefts = new List<float>();
|
||||||
if (text.Contains("<font", StringComparison.OrdinalIgnoreCase) || text.Contains("<i>", StringComparison.OrdinalIgnoreCase))
|
if (text.Contains("<font", StringComparison.OrdinalIgnoreCase) || text.Contains("<i>", StringComparison.OrdinalIgnoreCase) || text.Contains("<b>", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
bool tempItalicOn = false;
|
||||||
|
bool tempBoldOn = false;
|
||||||
foreach (string line in text.SplitToLines())
|
foreach (string line in text.SplitToLines())
|
||||||
{
|
{
|
||||||
var lineNoHtml = HtmlUtil.RemoveOpenCloseTags(line, HtmlUtil.TagItalic, HtmlUtil.TagFont);
|
var tempLine = HtmlUtil.RemoveOpenCloseTags(line, HtmlUtil.TagFont);
|
||||||
|
|
||||||
|
if (tempItalicOn)
|
||||||
|
tempLine = "<i>" + tempLine;
|
||||||
|
|
||||||
|
if (tempBoldOn)
|
||||||
|
tempLine = "<b>" + tempLine;
|
||||||
|
|
||||||
|
if (tempLine.Contains("<i>") && !tempLine.Contains("</i>"))
|
||||||
|
tempItalicOn = true;
|
||||||
|
|
||||||
|
if (tempLine.Contains("<b>") && !tempLine.Contains("</b>"))
|
||||||
|
tempBoldOn = true;
|
||||||
|
|
||||||
if (parameter.AlignLeft)
|
if (parameter.AlignLeft)
|
||||||
lefts.Add(5);
|
lefts.Add(5);
|
||||||
else if (parameter.AlignRight)
|
else if (parameter.AlignRight)
|
||||||
lefts.Add(bmp.Width - CalcWidthViaDraw(lineNoHtml, parameter) - 15); // calculate via drawing+crop
|
lefts.Add(bmp.Width - CalcWidthViaDraw(tempLine, parameter) - 15); // calculate via drawing+crop
|
||||||
else
|
else
|
||||||
lefts.Add((float)((bmp.Width - CalcWidthViaDraw(lineNoHtml, parameter) + 5.0) / 2.0)); // calculate via drawing+crop
|
lefts.Add((float)((bmp.Width - CalcWidthViaDraw(tempLine, parameter) + 5.0) / 2.0)); // calculate via drawing+crop
|
||||||
|
|
||||||
|
if (line.Contains("</i>"))
|
||||||
|
tempItalicOn = false;
|
||||||
|
|
||||||
|
if (line.Contains("</b>"))
|
||||||
|
tempBoldOn = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2268,7 +2289,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
if (sb.Length > 0)
|
if (sb.Length > 0)
|
||||||
{
|
{
|
||||||
lastText.Append(sb);
|
lastText.Append(sb);
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold || parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
}
|
}
|
||||||
if (path.PointCount > 0)
|
if (path.PointCount > 0)
|
||||||
{
|
{
|
||||||
@ -2352,7 +2373,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
|
|
||||||
lastText.Append(sb);
|
lastText.Append(sb);
|
||||||
|
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold || parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
}
|
}
|
||||||
if (path.PointCount > 0)
|
if (path.PointCount > 0)
|
||||||
{
|
{
|
||||||
@ -2383,7 +2404,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
if (sb.Length > 0)
|
if (sb.Length > 0)
|
||||||
{
|
{
|
||||||
lastText.Append(sb);
|
lastText.Append(sb);
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold || parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
}
|
}
|
||||||
isItalic = true;
|
isItalic = true;
|
||||||
i += 2;
|
i += 2;
|
||||||
@ -2398,7 +2419,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
sb.Append(t);
|
sb.Append(t);
|
||||||
}
|
}
|
||||||
lastText.Append(sb);
|
lastText.Append(sb);
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold || parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
isItalic = false;
|
isItalic = false;
|
||||||
i += 3;
|
i += 3;
|
||||||
}
|
}
|
||||||
@ -2452,7 +2473,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sb.Length > 0)
|
if (sb.Length > 0)
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold || parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
|
|
||||||
DrawShadowAndPath(parameter, g, path);
|
DrawShadowAndPath(parameter, g, path);
|
||||||
g.FillPath(new SolidBrush(c), path);
|
g.FillPath(new SolidBrush(c), path);
|
||||||
|
Loading…
Reference in New Issue
Block a user