Selaa lähdekoodia

修正字符串测量

懒得勤快 2 vuotta sitten
vanhempi
sitoutus
c63f8e7600

+ 1 - 1
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -3,7 +3,7 @@
         <TargetFrameworks>netstandard2.0;netstandard2.1;net461;net5;net6;net7</TargetFrameworks>
         <TargetFrameworks>netstandard2.0;netstandard2.1;net461;net5;net6;net7</TargetFrameworks>
         <LangVersion>latest</LangVersion>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>2.5.8</Version>
+        <Version>2.5.8.1</Version>
         <Authors>懒得勤快</Authors>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
         <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
         <Copyright>懒得勤快,长空X</Copyright>
         <Copyright>懒得勤快,长空X</Copyright>

+ 32 - 2
Masuit.Tools.Abstractions/Strings/ValidateCode.cs

@@ -56,7 +56,13 @@ namespace Masuit.Tools.Strings
         /// <exception cref="Exception">The operation failed.</exception>
         /// <exception cref="Exception">The operation failed.</exception>
         public static byte[] CreateValidateGraphic(this HttpContext context, string validateCode, int fontSize = 28)
         public static byte[] CreateValidateGraphic(this HttpContext context, string validateCode, int fontSize = 28)
         {
         {
-            var font = SystemFonts.Families.Where(f => new[] { "Consolas", "KaiTi", "NSimSun", "SimSun", "SimHei", "Microsoft YaHei UI", "Arial" }.Contains(f.Name)).OrderByRandom().FirstOrDefault().CreateFont(fontSize);
+            var fontFamily = SystemFonts.Families.Where(f => new[] { "Consolas", "DejaVu Sans", "KaiTi", "NSimSun", "SimSun", "SimHei", "Microsoft YaHei UI", "Arial" }.Contains(f.Name)).OrderByRandom().FirstOrDefault();
+            if (fontFamily == default)
+            {
+                fontFamily = SystemFonts.Families.OrderByRandom().FirstOrDefault();
+            }
+
+            var font = fontFamily.CreateFont(fontSize);
             var measure = TextMeasurer.Measure(validateCode, new TextOptions(font));
             var measure = TextMeasurer.Measure(validateCode, new TextOptions(font));
             var width = (int)Math.Ceiling(measure.Width * 1.5);
             var width = (int)Math.Ceiling(measure.Width * 1.5);
             var height = (int)Math.Ceiling(measure.Height + 5);
             var height = (int)Math.Ceiling(measure.Height + 5);
@@ -114,7 +120,31 @@ namespace Masuit.Tools.Strings
         /// <returns></returns>
         /// <returns></returns>
         public static float StringWidth(this string s, int fontSize = 1)
         public static float StringWidth(this string s, int fontSize = 1)
         {
         {
-            return TextMeasurer.Measure(s, new TextOptions(SystemFonts.Families.FirstOrDefault(f => f.Name == "Microsoft YaHei UI").CreateFont(fontSize))).Width;
+            var fontFamily = SystemFonts.Families.FirstOrDefault(f => f.Name == "Microsoft YaHei UI");
+            if (fontFamily == default)
+            {
+                fontFamily = SystemFonts.Families.FirstOrDefault();
+            }
+
+            return TextMeasurer.Measure(s, new TextOptions(fontFamily.CreateFont(fontSize))).Width;
+        }
+
+        /// <summary>
+        /// 字符串宽度
+        /// </summary>
+        /// <param name="s"></param>
+        /// <param name="fontName">字体名字,如:Microsoft YaHei UI</param>
+        /// <param name="fontSize"></param>
+        /// <returns></returns>
+        public static float StringWidth(this string s, string fontName, int fontSize = 1)
+        {
+            var fontFamily = SystemFonts.Families.FirstOrDefault(f => f.Name == fontName);
+            if (fontFamily == default)
+            {
+                throw new ArgumentException($"字体 {fontName} 不存在,请尝试其它字体!");
+            }
+
+            return TextMeasurer.Measure(s, new TextOptions(fontFamily.CreateFont(fontSize))).Width;
         }
         }
     }
     }
 }
 }

+ 1 - 1
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -17,7 +17,7 @@
         <Product>Masuit.Tools.AspNetCore</Product>
         <Product>Masuit.Tools.AspNetCore</Product>
         <PackageId>Masuit.Tools.AspNetCore</PackageId>
         <PackageId>Masuit.Tools.AspNetCore</PackageId>
         <LangVersion>latest</LangVersion>
         <LangVersion>latest</LangVersion>
-        <Version>1.1.8</Version>
+        <Version>1.1.8.1</Version>
         <RepositoryType></RepositoryType>
         <RepositoryType></RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <FileVersion>$(Version)</FileVersion>
         <FileVersion>$(Version)</FileVersion>

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -6,6 +6,7 @@
 官网教程:https://ldqk.org/55
 官网教程:https://ldqk.org/55
 github:https://github.com/ldqk/Masuit.Tools
 github:https://github.com/ldqk/Masuit.Tools
         </Description>
         </Description>
+        <Version>2.5.8.1</Version>
         <Copyright>Copyright © 懒得勤快</Copyright>
         <Copyright>Copyright © 懒得勤快</Copyright>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
         <PackageTags>Masuit.Tools,工具库,Utility,Crypt,Extensions</PackageTags>
         <PackageTags>Masuit.Tools,工具库,Utility,Crypt,Extensions</PackageTags>
@@ -20,7 +21,6 @@ github:https://github.com/ldqk/Masuit.Tools
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType></RepositoryType>
         <RepositoryType></RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.5.8</Version>
         <FileVersion>$(Version)</FileVersion>
         <FileVersion>$(Version)</FileVersion>
         <Company>masuit.org</Company>
         <Company>masuit.org</Company>
         <AssemblyVersion>$(Version)</AssemblyVersion>
         <AssemblyVersion>$(Version)</AssemblyVersion>

+ 18 - 2
Masuit.Tools.Excel/ExcelExtension.cs

@@ -326,7 +326,15 @@ public static class ExcelExtension
 									else
 									else
 									{
 									{
 										// 根据单元格内容长度来自适应调整列宽
 										// 根据单元格内容长度来自适应调整列宽
-										var width = TextMeasurer.Measure(table.Rows[i][j].ToString(), new TextOptions(SystemFonts.Families.FirstOrDefault(f => f.Name == "Microsoft YaHei UI").CreateFont(1))).Width;
+										var fontFamily = SystemFonts.Families.FirstOrDefault(f => f.Name == sheet.Cells[i + startRow + 1, j + startColumn].Style.Font.Name);
+										int measureSize = 1;
+										if (fontFamily == default)
+										{
+											fontFamily = SystemFonts.Families.FirstOrDefault();
+											measureSize++;
+										}
+
+										var width = TextMeasurer.Measure(table.Rows[i][j].ToString(), new TextOptions(fontFamily.CreateFont(measureSize))).Width;
 										sheet.Column(j + startColumn).Width = Math.Min(110, Math.Max(width, sheet.Column(j + startColumn).Width));
 										sheet.Column(j + startColumn).Width = Math.Min(110, Math.Max(width, sheet.Column(j + startColumn).Width));
 									}
 									}
 
 
@@ -517,7 +525,15 @@ public static class ExcelExtension
 									else
 									else
 									{
 									{
 										// 根据单元格内容长度来自适应调整列宽
 										// 根据单元格内容长度来自适应调整列宽
-										var width = TextMeasurer.Measure(properties[j].GetValue(item).ToString(), new TextOptions(SystemFonts.Families.FirstOrDefault(f => f.Name == "Microsoft YaHei UI").CreateFont(1))).Width;
+										var fontFamily = SystemFonts.Families.FirstOrDefault(f => f.Name == sheet.Cells[current + startRow + 1, j + startColumn].Style.Font.Name);
+										int measureSize = 1;
+										if (fontFamily == default)
+										{
+											fontFamily = SystemFonts.Families.FirstOrDefault();
+											measureSize++;
+										}
+
+										var width = TextMeasurer.Measure(properties[j].GetValue(item).ToString(), new TextOptions(fontFamily.CreateFont(measureSize))).Width;
 										sheet.Column(j + startColumn).Width = Math.Min(110, Math.Max(width, sheet.Column(j + startColumn).Width));
 										sheet.Column(j + startColumn).Width = Math.Min(110, Math.Max(width, sheet.Column(j + startColumn).Width));
 									}
 									}
 
 

+ 1 - 1
Masuit.Tools.Excel/Masuit.Tools.Excel.csproj

@@ -3,7 +3,7 @@
         <TargetFramework>netstandard2.0</TargetFramework>
         <TargetFramework>netstandard2.0</TargetFramework>
         <LangVersion>latest</LangVersion>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>1.2.4.1</Version>
+        <Version>1.2.4.2</Version>
         <Authors>懒得勤快</Authors>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools.Excel导出库,支持一些简单数据的导出,支持图片列</Description>
         <Description>Masuit.Tools.Excel导出库,支持一些简单数据的导出,支持图片列</Description>
         <Copyright>懒得勤快</Copyright>
         <Copyright>懒得勤快</Copyright>

+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -2,7 +2,7 @@
 <package>
 <package>
   <metadata>
   <metadata>
     <id>Masuit.Tools.Net45</id>
     <id>Masuit.Tools.Net45</id>
-    <version>2.5.7.7</version>
+    <version>2.5.8.1</version>
     <title>Masuit.Tools</title>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>
     <owners>masuit.com</owners>

+ 1 - 1
Masuit.Tools/package.nuspec

@@ -2,7 +2,7 @@
 <package>
 <package>
   <metadata>
   <metadata>
     <id>Masuit.Tools.Net</id>
     <id>Masuit.Tools.Net</id>
-    <version>2.5.7.7</version>
+    <version>2.5.8.1</version>
     <title>Masuit.Tools</title>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>
     <owners>masuit.com</owners>