|
124 | 124 | using OpenXmlPowerTools.HtmlToWml; |
125 | 125 | using OpenXmlPowerTools.HtmlToWml.CSS; |
126 | 126 | using System.Text.RegularExpressions; |
127 | | -using System.Windows.Forms; |
128 | 127 |
|
129 | 128 | namespace OpenXmlPowerTools.HtmlToWml |
130 | 129 | { |
@@ -1230,65 +1229,7 @@ private static XElement FontMerge(XElement higherPriorityFont, XElement lowerPri |
1230 | 1229 | runText = sb.ToString(); |
1231 | 1230 | } |
1232 | 1231 |
|
1233 | | - try |
1234 | | - { |
1235 | | - using (Font f = new Font(ff, (float)sz / 2f, fs)) |
1236 | | - { |
1237 | | - const TextFormatFlags tff = TextFormatFlags.NoPadding; |
1238 | | - var proposedSize = new Size(int.MaxValue, int.MaxValue); |
1239 | | - var sf = TextRenderer.MeasureText(runText, f, proposedSize, tff); |
1240 | | - // sf returns size in pixels |
1241 | | - return sf.Width / multiplier; |
1242 | | - } |
1243 | | - } |
1244 | | - catch (ArgumentException) |
1245 | | - { |
1246 | | - try |
1247 | | - { |
1248 | | - const FontStyle fs2 = FontStyle.Regular; |
1249 | | - using (Font f = new Font(ff, (float)sz / 2f, fs2)) |
1250 | | - { |
1251 | | - const TextFormatFlags tff = TextFormatFlags.NoPadding; |
1252 | | - var proposedSize = new Size(int.MaxValue, int.MaxValue); |
1253 | | - var sf = TextRenderer.MeasureText(runText, f, proposedSize, tff); |
1254 | | - return sf.Width / multiplier; |
1255 | | - } |
1256 | | - } |
1257 | | - catch (ArgumentException) |
1258 | | - { |
1259 | | - const FontStyle fs2 = FontStyle.Bold; |
1260 | | - try |
1261 | | - { |
1262 | | - using (var f = new Font(ff, (float)sz / 2f, fs2)) |
1263 | | - { |
1264 | | - const TextFormatFlags tff = TextFormatFlags.NoPadding; |
1265 | | - var proposedSize = new Size(int.MaxValue, int.MaxValue); |
1266 | | - var sf = TextRenderer.MeasureText(runText, f, proposedSize, tff); |
1267 | | - // sf returns size in pixels |
1268 | | - return sf.Width / multiplier; |
1269 | | - } |
1270 | | - } |
1271 | | - catch (ArgumentException) |
1272 | | - { |
1273 | | - // if both regular and bold fail, then get metrics for Times New Roman |
1274 | | - // use the original FontStyle (in fs) |
1275 | | - var ff2 = new FontFamily("Times New Roman"); |
1276 | | - using (var f = new Font(ff2, (float)sz / 2f, fs)) |
1277 | | - { |
1278 | | - const TextFormatFlags tff = TextFormatFlags.NoPadding; |
1279 | | - var proposedSize = new Size(int.MaxValue, int.MaxValue); |
1280 | | - var sf = TextRenderer.MeasureText(runText, f, proposedSize, tff); |
1281 | | - // sf returns size in pixels |
1282 | | - return sf.Width / multiplier; |
1283 | | - } |
1284 | | - } |
1285 | | - } |
1286 | | - } |
1287 | | - catch (OverflowException) |
1288 | | - { |
1289 | | - // This happened on Azure but interestingly enough not while testing locally. |
1290 | | - return 0; |
1291 | | - } |
| 1232 | + return MetricsGetter.GetTextWidth(ff, fs, sz, runText) / multiplier; |
1292 | 1233 | } |
1293 | 1234 |
|
1294 | 1235 | // The algorithm for this method comes from the implementer notes in [MS-OI29500].pdf |
|
0 commit comments