首页 文章

在skiasharp中加载字体

提问于
浏览
1

如何在Xamarin表单的skiasharp中使用自定义字体 .

我试过了

paint.Typeface = SKTypeface.FromFamilyName("CoText_Bd");

paint.Typeface = SKTypeface.FromFile("CoText_Bd");

但两者都没有成功 . 我是否需要使用依赖服务访问字体的路径?

2 回答

  • 3

    如果你想要多平台多平台解决方案,将所有SkiaSharp / PaintCode绘图代码放入.NET标准库,包括作为嵌入资源的字体(不要忘记将Build动作设置为嵌入式资源!) . 然后你可以使用这个方法获取SKTypeface对象(Library ClassLibrary1,Folder Font):

    public static SKTypeface GetTypeface(string fullFontName)
        {
            SKTypeface result;
    
            var assembly = Assembly.GetExecutingAssembly();
            var stream = assembly.GetManifestResourceStream("ClassLibrary1.Font." + fullFontName);
            if (stream == null)
                return null;
    
            result = SKTypeface.FromStream(stream);
            return result;
        }
    

    记得在不再需要时使用SKObjects .

    为了优化性能,最好在Dictionary中缓存SKTypeface对象以优化速度 .

    当您将所有绘图代码放入.NET标准库时,您可以轻松地在Windows桌面WPF项目中进行测试/开发,当所有内容编译速度非常快且准备就绪时,可以在移动应用程序中使用它 .

  • 1

    我们应该在info.plist中为iOS添加UIAppFonts

    <key>UIAppFonts</key>
    <array>
        <string>CoText_Bd.otf</string>
    </array>
    

    对于Android试试

    CoText_Bd.otf#CoText_Bd
    

相关问题