在uwp中添加和使用第三方字体过程和wpf基本差不多,这里简述一下过程,只是为了引出在uwp中使用roboto字体的问题。
(完整的代码可以在这里下载 https://download.youkuaiyun.com/download/mochounv/12869684 , 其中包含uwp和wpf两个示例工程)
第一步,添加字体资源
如从 https://fonts.google.com/ 或者 https://www.fontsquirrel.com/ 等网站。
(我这里使用的是ttf,其它一些格式如otf 也是可以的),将字体文件加入工程文件中,如下。
记住编译动作为Content(而wpf中为resource), 且不需要复制到输出目录。
第二步,在xaml添加使用该字体的声明。
格式为 "[FontFilePath]#[FontName]" 如这里的path 为Fonts/Roboto-Regular.ttf
双击打开前面下载的字体ttf文件,可以看到FontName如下
所以使用该字体的完整声明如下:
使用方法如下:
同时添加一个使用字体默认字体来作比较,结果如下:
第一行应用了RobotoRegular字体。
在这里有个问题,此时如果再添加Roboto-Medium.ttf,查看Font Name 如下:
所以按规则路径声明为
使用:
可是结果确是这样的:
可见RobotoMedium并没有使用上去。
将声明改为这样
发现一切正常了
而在wpf并没有这个问题。
最开始怀疑是Font Name带有空格,导致解析失败,可是在这个例子里
https://blog.mzikmund.com/2017/01/using-custom-fonts-in-cs-uwp-apps/, Font Name带空格似乎也是没有问题。
所以对于roboto字体的使用中,在uwp中路径好像只能是这样 [FontFilePath]#roboto
至于原因还是不明白。