diff --git a/PROMS/LBWordLibrary/LBComObject.cs b/PROMS/LBWordLibrary/LBComObject.cs index 7b29c048..b770f42c 100644 --- a/PROMS/LBWordLibrary/LBComObject.cs +++ b/PROMS/LBWordLibrary/LBComObject.cs @@ -536,6 +536,11 @@ namespace LBWordLibrary get { return (GetProperty("Size") as float? ?? 0); } set { SetProperty("Size", value); } } + public String Name + { + get { return (GetProperty("Name").ToString()); } + set { SetProperty("Name", value); } + } } public enum LBWdInformation { diff --git a/PROMS/LBWordLibrary/LBObjectExtension.cs b/PROMS/LBWordLibrary/LBObjectExtension.cs index 0718c1f3..f5e0fc2b 100644 --- a/PROMS/LBWordLibrary/LBObjectExtension.cs +++ b/PROMS/LBWordLibrary/LBObjectExtension.cs @@ -285,6 +285,14 @@ namespace LBWordLibrary return ReplaceSymbolCharacters(GetRangeText(myRange)); } } + private static string[] SymbolFontName = { "VolianDraw", "WingDings" }; + private static bool IsSymbolFont(string fontName) + { + foreach (string symbolFont in SymbolFontName) + if (symbolFont.ToUpper() == fontName.ToUpper()) + return false; + return true; + } /// /// Checks to see if the document contains symbol characters /// @@ -296,8 +304,24 @@ namespace LBWordLibrary LBRange myRange = Range(); myRange = myRange.GoTo(LBWdGoToItem.wdGoToPercent, LBWdGoToDirection.wdGoToLast, 100); myRange.Start = 0; + int end = myRange.End; string myText = GetRangeText(myRange); - return _RegFindSymbol.IsMatch(myText); + //return _RegFindSymbol.IsMatch(myText); + MatchCollection problems = _RegFindSymbol.Matches(myText); + int offset = 0; + foreach (Match problem in problems) + { + myRange.Start = problem.Index + offset; + myRange.End = problem.Index + problem.Length + offset; + int newOffset = FindRangeOffset(myRange, problem, offset, end); + if (IsSymbolFont(myRange.Font.Name)) + { + Console.WriteLine("Font '{0}' has Symbols", myRange.Font.Name); + return true; + } + offset = newOffset; + } + return false; } } Regex _RegFindSymbol = new Regex("[\\uF000-\\uF0FF]+"); @@ -383,6 +407,8 @@ namespace LBWordLibrary { try { + if (IsSymbolFont(myRange.Font.Name)) + return; string before = GetRangeText(myRange); string updated = ReplaceSymbolCharacters(before); myRange.Text = updated;