1. 产品
  2.   Font
  3.   .NET
  4.   字体
 
  

免费 C# .NET 库,用于加载、读取和绘制字体

开源 C# .NET 库,用于加载、读取和绘制各种字体,如 TrueType、CFF、Woff、Woff2 等。

在以编程方式处理字体时,软件开发人员通常需要强大的工具和库来应对各种与字体相关的操作。一个在开发者中广受欢迎的强大开源库是 SixLabors Fonts 库。Fonts 是一个非常有用的开源 C# .NET 库,提供了一整套在 C# 应用程序中处理各种字体类型的功能。该库由 Six Labors 团队开发,旨在简化字体处理任务,使开发者能够更轻松地以编程方式使用字体。无论用户需要加载、渲染、测量或操作字体,Fonts 库都提供了简洁直观的 API 来完成这些操作。

开源 Fonts 库提供了多种字体操作和自定义功能,使软件开发者能够在其应用程序中创建独特且视觉上吸引人的文本元素。库中包含多项重要特性,例如从各种来源(路径、流或嵌入资源)加载字体、高质量的字形渲染能力、精确的文本布局和对齐、Unicode 文本处理、将字体组织到集合中等。

Fonts 库基于 .NET Standard 构建,使其兼容多个平台和框架,包括 .NET Core、.NET Framework、Xamarin 和 Mono。该库提供了简洁直观的 API,适用于各个技能水平的开发者。无论您是在构建桌面应用、Web 服务还是移动应用,Fonts 库都为您的字体管理需求提供了坚实的基础。快来尝试一下,使用开源 Fonts 库在您的应用中释放创意字体的世界吧。

Previous Next

开始使用字体

推荐的安装 Fonts 方法是使用 NuGet。请使用以下命令进行顺畅的安装。

通过 NuGet 安装字体

 PM > Install-Package SixLabors.Fonts –PreRelease

您也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。

在 C# 应用中加载并读取字体详情

开源的 Fonts 库允许软件开发者在 C# 应用程序中加载各种类型的字体并显示其完整信息。该库支持从多种来源加载字体,包括文件路径、流、嵌入资源等。这种灵活性使开发者能够无缝地将字体加载集成到其应用程序中。库支持使用 TrueType 字体、带有 CFF1 大纲的 OpenType 字体、Woff、Woff2 等。以下示例展示了如何使用 C# 命令读取关于 TTF 字体的描述。

如何使用 C# API 读取字体描述?

FontDescription description = null;

using(var fs = File.OpenRead("Font.ttf")){
    description = FontDescription.Load(fs); // once it has loaded the data the stream is no longer required and can be disposed of
}

string name = description.FontName(CultureInfo.InvariantCulture);

通过 C# 支持字体集合

开源库 Fonts 允许软件开发者将字体组织成集合,便于管理和在不同字体族和样式之间切换。只需几行代码,开发者即可创建自定义字体集合。该库还提供了对高级 OpenType 功能——字形替换(GSUB)和字形定位(GPOS)的支持。下面的示例展示了开发者如何在 C# 应用程序中使用字体集合。

如何通过 C# 代码使用 sFont 集合?

using SixLabors.Fonts;

FontCollection collection = new();
collection.Add("path/to/font.ttf");
collection.Add("path/to/font2.ttf");
collection.Add("path/to/emojiFont.ttf");
collection.AddCollection("path/to/font.ttc");

if(collection.TryFind("Font Name", out FontFamily family))
if(collection.TryFind("Emoji Font Name", out FontFamily emojiFamily))
{
    // family will not be null here
    Font font = family.CreateFont(12, FontStyle.Italic);

    // TextOptions provides comprehensive customization options support
    TextOptions options = new(font)
    {
        // Will be used if a particular code point doesn't exist in the font passed into the constructor. (e.g. emoji)
        FallbackFontFamilies  = new [] { emojiFamily }
    };

    FontRectangle rect = TextMeasurer.Measure("Text to measure", options);
}
 中国人