The character used for Underline is not available in font asset
(资料图片仅供参考)
在使用TextMeshPro的时候,你可能遇到过这个警告,出现的很频繁。如果你在网络上搜索,大部分都是告诉你,这个不影响运行,可以在TMP的设置中关掉警告。
但是,关闭警告也就意味着我们可能会忽略掉真正需要注意的警告。而且,出现此警告的字体也无法使用下划线样式和删除线样式。
在本篇文章,我们从根本上修复这个警告。
首先,遇到这个警告大致可以分为两种情况。
第一种,创建静态字体资源之后,使用时出现警告,但是创建动态字体资源之后使用时无警告。
第二种,无论是创建静态字体资源还是动态字体资源,均有此警告。
究其原因,就如警告字面意思,缺少了下划线,TextMeshPro在为字符添加下划线样式和删除线样式时,需要用到下划线字符和省略号字符。
先说第一种情况,在国内大家创建静态字体时,通常是在网上下载常用3500汉字或者6000汉字之类的,使用这些汉字来创建,这样创建出来的图集不包含符号,所以就爆出了警告。
创建动态字体不出现问题说明此字体文件中有相应的符号,所以可以动态创建,不影响使用。
针对此类情况,只需在字符集加上对应符号即可。
再说第二种情况,创建动态字体也会出现此警告说明该字体文件内没有包含下划线和省略号,这种情况下会麻烦一些。
这个情况是很容易出现的,比如你想使用Unity制作APP,想使用Segoe Fluent Icons字体或者Segoe MDL2 Assets等字体来用作图标字体。那么,基本上都会遇到这个问题,因为这类图标字体中没有下划线和省略号。
针对这种情况,我们需要直接在字体文件中添加下划线和省略号。
这里以Segoe Fluent Icons字体为例,我们打开FontCreator软件,选择File->Open,打开字体的ttf文件。
然后点击添加字符。
在添加字符界面,可以直接通过Find by Character查找下划线和省略号,或者直接在Code-point中填入$2026和$5F。
在DisplayFont中选择一个有此字符的字体,我这里选择的是小米字体,手机厂商的字体字和符号还是挺全的。
在添加好这两个字符后,重新导出字体为ttf,然后放到Unity进行TMP字体资源生成即可。
这样就不会触发警告并且可以正常使用下划线样式和删除线样式了。