mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-28 06:52:35 +01:00
Some font support for export images
This commit is contained in:
parent
065bb35296
commit
e18d704205
@ -1806,6 +1806,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
|
||||
|
||||
Font font = SetFont(parameter, parameter.SubtitleFontSize);
|
||||
Stack<Font> fontStack = new Stack<Font>();
|
||||
while (i < text.Length)
|
||||
{
|
||||
if (text.Substring(i).StartsWith("<font ", StringComparison.OrdinalIgnoreCase))
|
||||
@ -1876,6 +1877,40 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fontContent.Contains(" face=") || fontContent.Contains(" size="))
|
||||
{
|
||||
float fontSize = parameter.SubtitleFontSize;
|
||||
string fontFace = parameter.SubtitleFontName;
|
||||
|
||||
string[] arr = fontContent.Substring(fontContent.IndexOf(" face=", StringComparison.Ordinal) + 6).Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (arr.Length > 0)
|
||||
{
|
||||
fontFace = arr[0].Trim('\'').Trim('"').Trim('\'');
|
||||
}
|
||||
|
||||
arr = fontContent.Substring(fontContent.IndexOf(" size=", StringComparison.Ordinal) + 6).Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (arr.Length > 0)
|
||||
{
|
||||
string temp = arr[0].Trim('\'').Trim('"').Trim('\'');
|
||||
float f;
|
||||
if (float.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out f))
|
||||
{
|
||||
fontSize = f;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
fontStack.Push(font); // save old cfont
|
||||
var p = new MakeBitmapParameter() { SubtitleFontName = fontFace, SubtitleFontSize = fontSize };
|
||||
font = SetFont(p, p.SubtitleFontSize);
|
||||
}
|
||||
catch
|
||||
{
|
||||
font = fontStack.Pop();
|
||||
}
|
||||
|
||||
}
|
||||
i += endIndex;
|
||||
}
|
||||
}
|
||||
@ -1926,6 +1961,10 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
if (left >= 3)
|
||||
left -= 2.5f;
|
||||
}
|
||||
if (fontStack.Count > 0)
|
||||
{
|
||||
font = fontStack.Pop();
|
||||
}
|
||||
i += 6;
|
||||
}
|
||||
else if (text.Substring(i).StartsWith("<i>", StringComparison.OrdinalIgnoreCase))
|
||||
@ -2366,6 +2405,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
int newLinePathPoint = -1;
|
||||
Color c = parameter.SubtitleColor;
|
||||
var colorStack = new Stack<Color>();
|
||||
var fontStack = new Stack<Font>();
|
||||
var lastText = new StringBuilder();
|
||||
int numberOfCharsOnCurrentLine = 0;
|
||||
for (var i = 0; i < text.Length; i++)
|
||||
@ -2438,6 +2478,42 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fontContent.Contains(" face=") || fontContent.Contains(" size="))
|
||||
{
|
||||
float fontSize = parameter.SubtitleFontSize;
|
||||
string fontFace = parameter.SubtitleFontName;
|
||||
|
||||
string[] arr = fontContent.Substring(fontContent.IndexOf(" face=", StringComparison.Ordinal) + 6).Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (arr.Length > 0)
|
||||
{
|
||||
fontFace = arr[0].Trim('\'').Trim('"').Trim('\'');
|
||||
}
|
||||
|
||||
arr = fontContent.Substring(fontContent.IndexOf(" size=", StringComparison.Ordinal) + 6).Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (arr.Length > 0)
|
||||
{
|
||||
string temp = arr[0].Trim('\'').Trim('"').Trim('\'');
|
||||
float f;
|
||||
if (float.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out f))
|
||||
{
|
||||
fontSize = f;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
fontStack.Push(font); // save old cfont
|
||||
var p = new MakeBitmapParameter() { SubtitleFontName = fontFace, SubtitleFontSize = fontSize };
|
||||
font = SetFont(p, p.SubtitleFontSize);
|
||||
}
|
||||
catch
|
||||
{
|
||||
font = fontStack.Pop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
i += endIndex;
|
||||
}
|
||||
}
|
||||
@ -2488,6 +2564,10 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
if (left >= 3)
|
||||
left -= 2.5f;
|
||||
}
|
||||
if (fontStack.Count > 0)
|
||||
{
|
||||
font = fontStack.Pop();
|
||||
}
|
||||
i += 6;
|
||||
}
|
||||
else if (text.Substring(i).StartsWith("<i>", StringComparison.OrdinalIgnoreCase))
|
||||
|
Loading…
Reference in New Issue
Block a user