首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将当前的平台字体传递到SKTypeface?

将当前的平台字体传递到SKTypeface?
EN

Stack Overflow用户
提问于 2018-01-01 22:04:46
回答 1查看 2K关注 0票数 9

当试图呈现中文(或其他符号)文本时。SkiSharp将呈现方框而不是正确的中文字符。显然,Skia默认使用的字体不支持这些字符。因此,我们必须使用支持这些字符的字体来分配我们自己的SKTypeface。

我最初的策略是简单地包含必要的字体来呈现这些字符,这些字体工作得很好。但是,当使用自己的字体支持多种不同的符号语言时,应用程序的大小急剧增加(大约每种字体15 mb )。

所以多想想这个..。默认平台字体似乎支持,这些符号字符的任何都很好。我的意思是,在默认情况下使用的字体会完美地呈现按钮、标签和标题。

所以我现在的想法是,,为什么我不能直接把它传递到SKTypeface中呢?

问题是,我不知道如何获得任何掉落或默认字体是为了创建一个新的SKTypeface。

我的问题

如何从显示这些按钮、标签和标题的相同字体中创建一个SKTypeface?

注意:如果你需要我的帮助来帮助你理解问题或解决问题,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-07 20:15:26

您应该能够使用SKFontManager.MatchCharacter或其重载之一,以便:

使用系统回退找到给定字符的字体。

下面是一个基于SkiaSharp WindowsSample示例的TextSample的示例

代码语言:javascript
运行
复制
public class TextSample : SampleBase
{
    // ...
    protected override void OnDrawSample(SKCanvas canvas, int width, int height)
    {
        canvas.DrawColor(SKColors.White);
        const string text = "象形字";
        var x = width / 2f;
        // in my case the line below returns typeface with FamilyName `Yu Gothic UI`
        var typeface = SKFontManager.Default.MatchCharacter(text[0]);
        using (var paint = new SKPaint())
        {
            paint.TextSize = 64.0f;
            paint.IsAntialias = true;
            paint.Color = (SKColor)0xFF4281A4;
            paint.IsStroke = false;
            paint.Typeface = typeface; // use typeface for the first one
            paint.TextAlign = SKTextAlign.Center;

            canvas.DrawText(text, x, 64.0f, paint);
        }

        using (var paint = new SKPaint())
        {
            // no typeface here
            paint.TextSize = 64.0f;
            paint.IsAntialias = true;
            paint.Color = (SKColor)0xFF9CAFB7;
            paint.IsStroke = true;
            paint.StrokeWidth = 3;
            paint.TextAlign = SKTextAlign.Center;

            canvas.DrawText(text, x, 144.0f, paint);
        }
    }
}

下面是输出

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48053615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档