When there is a bold and underline command remove the space between the two commands.
Logic to consider underline and bold command between a hard space a word when determining if replace words should be done.
This commit is contained in:
parent
8af0edb375
commit
10c11b9f36
@ -1778,14 +1778,12 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private string DoReplaceWords2(string Text)
|
||||
{
|
||||
if(!ProcessReplaceWords) return Text;
|
||||
if (!ProcessReplaceWords) return Text;
|
||||
if (_MyItemInfo.MyContent.Type < 20000) return Text; // for now only replace in steps.
|
||||
FoundMatches myMatches = new FoundMatches(Text,_MyItemInfo.FormatStepData.Font,_MyItemInfo);
|
||||
FoundMatches myMatches = new FoundMatches(Text, _MyItemInfo.FormatStepData.Font, _MyItemInfo);
|
||||
// Exclude Link Text from Replace Word process
|
||||
myMatches.AddLink(regFindLink, _MyFormat.PlantFormat.FormatData.SectData.ReplaceWordsInROs, _MyItemInfo.MyProcedure.MyDocVersion);
|
||||
ReplaceStrList rsl = _MyFormat.PlantFormat.FormatData.SectData.ReplaceStrList;
|
||||
|
||||
// The only way to get an 'empty' list is to have one 'dummy' replacestr, i.e. that has ReplaceWord as an empty string. If the
|
||||
// ReplaceStrData xml node is empty, it does the inheritance and gets the 'base' format's list.
|
||||
if (rsl.Count==1 && (rsl[0].ReplaceWord == null || rsl[0].ReplaceWord == "")) return Text;
|
||||
// Loop through text looking for words to be replaced
|
||||
@ -1845,6 +1843,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
//ProfileTimer.Pop(profileDepth);
|
||||
//int profileDepth5 = ProfileTimer.Push(">>>> DoReplaceWords2.ReplaceMatches");
|
||||
|
||||
Text = myMatches.ReplaceMatches();
|
||||
//ProfileTimer.Pop(profileDepth5);
|
||||
Text = Text.Replace(@"\xA0", @"\u160?"); //replace hard space
|
||||
@ -2150,10 +2149,11 @@ namespace Volian.Controls.Library
|
||||
if (text.StartsWith(@"{\rtf"))
|
||||
{
|
||||
// make sure that it is not preceded by \u160? \'a0 or \~
|
||||
if(Regex.IsMatch(begin,@"(\\(u160\?|'a0|~)(\\f[0-9]* ?)*(\\fs[0-9]* ?)*)$"))
|
||||
// bug fix B2015-197 - need to consider underline and bold commands between a hard space and a word
|
||||
if (Regex.IsMatch(begin, @"(\\(u160\?|'a0|~)(\\ulnone ?|\\b0 ?|\\ul ?|\\b ?)*(\\f[0-9]* ?)*(\\fs[0-9]* ?)*)$"))
|
||||
return false;
|
||||
// make sure that it is not followed by \u160? \'a0 or \~
|
||||
if (Regex.IsMatch(end, @"^((\\f[0-9]* ?)*(\\fs[0-9]* ?)*\\(u160\?|'a0|~))"))
|
||||
if (Regex.IsMatch(end, @"^((\\f[0-9]* ?)*(\\fs[0-9]* ?)*(\\ulnone ?|\\b0 ?|\\ul ?|\\b ?)*\\(u160\?|'a0|~))"))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
|
@ -664,14 +664,16 @@ namespace Volian.Print.Library
|
||||
_StatRTB.Width = (int)w;
|
||||
_StatRTB.Font = MyFlexGrid.Font;
|
||||
if (str.StartsWith(@"{\rtf"))
|
||||
// The 'Replace(@" \ulnone", @"\u160?\ulnone")' was added so that data in VEWCN SUR_WTC
|
||||
// tables would print. There were a number of tables, for example in STN NB-106/8.1.6,
|
||||
{
|
||||
// The 'Replace(@" \ulnone", @"\u160?\ulnone")' was added so that data in VEWCNSUR_MTC
|
||||
// tables would print. There were a number of tables, for example in STN NB-115/8.1.6,
|
||||
// that had a series of spaces underlined and these spaces were not underlined in the
|
||||
// generated pdf. It seems that there is a problem somewhere in the rtb -> itextsharp
|
||||
// level. This fixed the immediate problem. If there is 'b0' (bold off) after the
|
||||
// space before the 'ulnone' the following won't work. Also, this change was not
|
||||
// made in the non-table code. If the problem occurs there, it should be added.
|
||||
_StatRTB.Rtf = str.Replace(@"\~", @"\u160?").Replace(@" \ulnone", @"\u160?\ulnone");
|
||||
_StatRTB.Rtf = Regex.Replace(str.Replace(@"\~", @"\u160?"), @"(?<!\\[a-z0-9]+) \\ulnone", @"\u160?\ulnone");
|
||||
}
|
||||
else
|
||||
_StatRTB.Text = str;
|
||||
_StatRTB.SelectAll();
|
||||
|
Loading…
x
Reference in New Issue
Block a user