You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Skia中获取衬线字体?能否向SKTypeface.FromFamilyName请求衬线字体而非指定具体字体名?

Skia中衬线字体的获取方案

1. 获取衬线字体的方法

你可以通过两种方式获取衬线字体:

  • 枚举系统字体并筛选:利用SKFontManager枚举所有可用字体,结合字体属性筛选出衬线类型的字体。示例代码:
    var fontManager = SKFontManager.Default;
    foreach (var familyName in fontManager.FamilyNames)
    {
        var typeface = SKTypeface.FromFamilyName(familyName);
        if (typeface != null)
        {
            // 通过匹配通用Serif族验证是否为衬线字体
            var defaultSerif = SKTypeface.FromFamilyName("Serif");
            if (typeface.FamilyName == defaultSerif.FamilyName)
            {
                Console.WriteLine($"找到衬线字体:{familyName}");
            }
        }
    }
    
  • 直接匹配系统默认衬线字体:更高效的方式是使用通用字体族名称直接请求。

2. 不指定具体名称请求衬线字体

完全可以!Skia支持使用通用字体族名称请求对应类型的字体,无需指定具体字体名。你只需给SKTypeface.FromFamilyName传入"Serif"这个通用族名,Skia会自动选择系统默认的衬线字体。示例代码:

// 获取系统默认衬线字体
var serifTypeface = SKTypeface.FromFamilyName("Serif", SKFontStyle.Normal);
if (serifTypeface != null)
{
    Console.WriteLine($"系统默认衬线字体:{serifTypeface.FamilyName}");
}

这种方式跨平台兼容,在不同系统上会自动适配对应默认衬线字体(比如Windows的Times New Roman、macOS的Times、Linux的Liberation Serif等)。

另外,Skia还支持其他通用族名:"Sans-serif"(无衬线)、"Monospace"(等宽)、"Cursive"(手写体)、"Fantasy"(装饰体)。


内容的提问来源于stack exchange,提问作者ikegami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:21:01