如何在Xamarin.Forms中阻止(c)被自动转换为版权符号©
问题原因
该问题由两个条件共同触发:
- 你使用的Manrope-Bold字体内置了
(c)连续字符序列到版权符号©的连字替换规则 - Xamarin.Forms/.NET MAUI的Label控件默认开启OpenType字体连字支持,会自动应用字体内置的替换规则
可用解决方案
方案1:单独关闭对应Label的连字特性
在出现问题的Label标签中添加FontFeatures属性禁用标准连字即可,修改后的代码如下:
<ContentPage> <Label Text="This is Testing for copyright (c)" FontFeatures="liga=0"/> </ContentPage>
liga=0是通用的OpenType字体特性参数,只会关闭当前Label的标准连字功能,不会影响其他文字样式和其他控件的显示效果。
方案2:打断连字匹配序列
如果不想关闭连字功能,可以在(和c之间插入零宽空格,让字体的连字规则无法匹配到连续的(c)字符,写法如下:
<ContentPage> <Label Text="This is Testing for copyright (​c)"/> </ContentPage>
零宽空格为不可见特殊字符,不会额外占用显示宽度,也不会打乱原有排版布局。
方案3:全局禁用Manrope字体的连字特性
如果整个应用都不需要用到Manrope字体的连字功能,可以在注册自定义字体时统一添加禁用连字的配置,无需逐个Label单独设置。
内容的提问来源于stack exchange,提问作者Pavan V Parekh
相关产品推荐
相关产品推荐

