flutter中文乱码(Flutter 上字体的另类玩法:FontFeature)

:暂无数据 2026-06-27 16:40:01 :0

flutter中文乱码(Flutter 上字体的另类玩法:FontFeature)

大家好,flutter中文乱码相信很多的网友都不是很明白,包括Flutter 上字体的另类玩法:FontFeature也是一样,不过没有关系,接下来就来为大家分享关于flutter中文乱码和Flutter 上字体的另类玩法:FontFeature的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

Flutter 上字体的另类玩法:FontFeature

在以前的 《Flutter 上默认的文本和字体知识点》 和 《带你深入理解 Flutter 中的字体“冷”知识》 中,已经介绍了很多 Flutter 上关于字体有趣的知识点,而本篇讲继续介绍 Flutter 上关于 Text 的一个属性: FontFeature , 事实上相较于 Flutter ,本篇内容可能和前端或者设计关系更密切 。

什么是 FontFeature ? 简单来说就是影响字体形状的一个属性 ,在前端的对应领域里应该是 font-feature-settings ,它有别于 FontFamily ,是用于指定字体内字的形状的一个参数。

我们知道 Flutter 默认在 Android 上使用的是 Roboto 字体,而在 iOS 上使用的是 SF 字体,但是其实 Roboto 字体也是分很多类型的,比如你去查阅手机的 system/fonts 目录,就会发现很多带有 Roboto 字样的字体库存在。

所以 Roboto 之类的字体库是一个很大的字体集,不同的 font-weight 其实对应着不同的 ttf ,例如默认情况下的 Roboto 是不支持 font-weight 为 600 的配置 :

所以如下图所示,如果我们设置了 w400 - w700 的 weight ,可以很明显看到中间的 500 和 600 其实是一样的粗细,所以在 设置 weight 或者设计 UI 时,就需要考虑不同平台上的 weight 是否支持想要的效果 。

回归到 FontFeature 上,那 Roboto 自己默认支持多少种 features 呢? 答案是 26 种,它们的编码如下所示,运行后效果也如下图所示,从日常使用上看,这 26 种 Feature 基本满足开发的大部分需求。

而 iOS 上的 SF pro 默认支持 39 种 Features , 它们的编码如下所示,运行后效果也如下图所示,可以看到 SF pro 支持的 Features 更多。

所以可以看到,并不是所有字体支持的 Features 都是一样的,比如 iOS 上支持 sups 上标显示和 subs 下标显示,但是 Android 上的 Roboto 并不支持,甚至很多第三方字体其实并不支持 Features 。

有趣的是,在 Flutter Web 有一个渲染文本时会变模糊的问题 #58159 ,这个问题目前官方还没有修复,但是你可以通过给 Text 设置任意 FontFeatures 来解决这个问题。

最后,如果对 FontFeature 还感兴趣的朋友,可以通过一下资料深入了解,如果你还有什么关于字体上的问题,欢迎留言讨论。

基于网友的问题再补充一下拓展知识,毕竟这方面内容也不多 。

事实上在 dart 里就可以看到对应 FontWeight 约定俗称用的是字体集里的什么字体:

所以如果对于默认字体有疑问,可以在你的手机字体找找是否有对应的字体, 比如虽然我们说 roboto 没有 600 ,但是如果是 roboto mono 字体集是有 600 的 fontweight***隐藏网址***

另外注意这是 Flutter 而不是原生,具体实现调用是在 Engine 的 paragraph_skia.cc 和 paragraph_builder_skia.cc 下对应的 setFontFamilies 相关逻辑,当然默认字体库指定在 typography.dart 下就看到,例如 ’Roboto’ 、 ’.SF UI Display’ 、 ’.SF UI Text’ 、 ’.AppleSystemUIFont’ 、 ’Segoe UI’ :

另外如果你在 Mac 的 Web 上使用 Flutter Web,可以看到指定的是 .AppleSystemUIFont ,而对于 .AppleSystemUIFont 它其实不算是一种字体,而是苹果上字体的一种集合别称:

还有,如果你去看 Flutter 默认自带的 cupertino/context_menu_action.dart ,就可以看到一个有趣的情况:

当然,前面我们说了那么多,主要是针对英文的情况下,而在中文下还是有差异的 ,之前的文章也介绍过:

例如,在苹果上的简体中文其实会是 PingFang SC 字体,对应还有 PingFang TC 和 PingFang HK 的繁体集,而关于这个问题在 Flutter 上之前还出现过比较有意思的 bug :

当然后续的 #16709 修复了这个问题 ,而在以前的文章我也讲过,当时我遇到了 “Flutter 在 iOS 系统上,系统语言是韩文时,在和中文一起出现会导致字体显示异常" 的问题 :

解决方法也很简单,就是给 fontFamilyFallback 配置上 就可以了,这是因为韩文在苹果手机上使用的应该是 Apple SD Gothic Neo 这样的超集字体库,【广】这个字符在这个字体集上是不存在的,所以就变成了中文的【广】;

所以可以看到,字体相关是一个平时很少会深入接触的东西,但是一旦涉及多语言和绘制,就很容易碰到问题的领域 。

Flutter:Row中文字太长导致溢出

Text("long text...") 中文字过长会换行显示。

但如果放置在Row()中 Row(children:) 文字就不会换行显示,还可能会报错某一侧长度溢出了多少像素。

这时给Text组件包裹一层Expanded就可以换行显示。
Row(children:)

或者用Flexible 也可以。
Row(children:)

Expanded/Flexible 会限制Row的宽度不要那么长。

Android开发:调起手机浏览器

一、调起手机默认浏览器
这里以调起 百度网页 为例。

二、指定相应的浏览器访问

调起浏览器前需要判断该App是否已经安装在手机上,否则会使程序崩溃哦~可参考 Android开发:检测手机上是否安装该App

三、如果你从事Flutter开发,你应该还需要 iOS开发:调起Safari浏览器打开Url(对中文等特殊字符进行处理) 的知识

Flutter Text组件 文字的对齐、数字和字母对齐中文

对齐的效果

Text的高度 是根据 height 乘于 fontSize 进行计算的、这里指定heiht即可、不指定的会出现 无法对齐的情况,如下:

同样字体下,这种就是无法对齐的情况

flutter 多语言配置--中文

上一篇讲到如果解决ios长按输入框报错的问题,但是最终没有达到我们的要求,因为我们想实现中文的提示,那么本篇文章讲讲如何来实现多语言配置;

1.首先在pubspec.yaml的dependencies下加入这个

flutter_localizations:

  sdk: flutter

如图:

2.然后在MaterialApp设置一下localizationsDelegates如图:

3.写一个类继承一下CupertinoLocalizations,在项目中 我这个类名叫ChineseCupertinoLocalizations(没错,就是localizationsDelegates中的第三个),如图:

上次提到报错的原因就是因为cutButtonLabel,copyButtonLabel,pasteButtonLabel,selectAllButtonLabel 这几个按钮没有实现,所以继承CupertinoLocalizations一定要为这几个按钮赋值,这里是那种语言,那么,赋值就对应那种语言,同时要注意locale.languageCode也要填写,如果你是中文,那么locale.languageCode ==’zh’;

4.在ios工程中,在项目的info设置语言环境

添加 Localization native development region---》china

添加一个Localizations 为array类型的,并且设置值为 Chinese (simplified)
效果图:( 注意:请把手机环境调试成中文的语言环境 )

Android 

ios 效果图
我公司用flutter做了一个《柚品生活》的app,感兴趣的朋友可以去看看,Android和ios都已经上架了

最后附上GitHub项目地址 GitHub - hxxsocket/flutter_lg_demo: flutter多语言配置之中文

flutter中webview显示html字符串乱码

解决办法: data:text/html;charset=utf-8;base64,${base64Encode(const Utf8Encoder().convert(_html))}
主要是添加 charset=utf-8

调用方法

Flutter TextField 长按出现的 ”复制/粘贴“文字改为中文

文字默认是英文,需要设置 Flutter 国际化来处理

在 pubspec.yaml 中集成 flutter_localizations

然后在 main.dart --- MaterialApp 中设置本地化代理和支持的语言类型

我最开始的时候没加,在iOS上长按会报错,需要加上这一行

如果 pubspec.yaml 集成插件因为版本问题报错,自己又不知道使用哪个版本,可以使用any集成,它会自己寻找合适的版本

关于flutter中文乱码和Flutter 上字体的另类玩法:FontFeature的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

flutter中文乱码(Flutter 上字体的另类玩法:FontFeature)

本文编辑:admin

更多文章:


网关是什么怎么设置(网关到底是什么,不同的网络如何正确设置网关)

网关是什么怎么设置(网关到底是什么,不同的网络如何正确设置网关)

各位老铁们,大家好,今天由我来为大家分享网关是什么怎么设置,以及网关到底是什么,不同的网络如何正确设置网关的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 08:30

me是国内域名吗(me域名的概况)

me是国内域名吗(me域名的概况)

本篇文章给大家谈谈me是国内域名吗,以及me域名的概况对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 07:50

亚洲和欧洲的分界线简图(画出亚欧,亚非,南北美,亚洲北美洲和南美南极的分界线和名称.图片)

亚洲和欧洲的分界线简图(画出亚欧,亚非,南北美,亚洲北美洲和南美南极的分界线和名称.图片)

大家好,如果您还对亚洲和欧洲的分界线简图不太了解,没有关系,今天就由本站为大家分享亚洲和欧洲的分界线简图的知识,包括画出亚欧,亚非,南北美,亚洲北美洲和南美南极的分界线和名称.图片的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开

2026年10月11日 05:50

国内无需备案vps(服务器是否需要备案)

国内无需备案vps(服务器是否需要备案)

大家好,今天小编来为大家解答以下的问题,关于国内无需备案vps,服务器是否需要备案这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 02:20

小鸟到处乱飞改为比喻句(小鸟在天上飞来飞去怎么改成比喻句)

小鸟到处乱飞改为比喻句(小鸟在天上飞来飞去怎么改成比喻句)

今天给各位分享小鸟在天上飞来飞去怎么改成比喻句的知识,其中也会对小鸟在天上飞来飞去怎么改成比喻句进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 01:30

学生包月接送(私家车包月接送学生怎么发朋友圈呢)

学生包月接送(私家车包月接送学生怎么发朋友圈呢)

各位老铁们好,相信很多人对学生包月接送都不是特别的了解,因此呢,今天就来为大家分享下关于学生包月接送以及私家车包月接送学生怎么发朋友圈呢的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 01:10

虚拟空间免root大全(gameguardian修改器免root安卓APK下载地址)

虚拟空间免root大全(gameguardian修改器免root安卓APK下载地址)

大家好,关于虚拟空间免root大全很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于gameguardian修改器免root安卓APK下载地址的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下

2026年10月11日 00:10

一个月临时宽带(通辽有临时办一个月的网吗)

一个月临时宽带(通辽有临时办一个月的网吗)

本篇文章给大家谈谈一个月临时宽带,以及通辽有临时办一个月的网吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月10日 23:40

外科医用口罩无菌和非无菌的区别(非无菌口罩和无菌口罩区别)

外科医用口罩无菌和非无菌的区别(非无菌口罩和无菌口罩区别)

今天给各位分享非无菌口罩和无菌口罩区别的知识,其中也会对非无菌口罩和无菌口罩区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月10日 23:00

腾讯qq macos正式版(qq资料封面自定义不见了)

腾讯qq macos正式版(qq资料封面自定义不见了)

本篇文章给大家谈谈腾讯qq macos正式版,以及qq资料封面自定义不见了对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月10日 20:40

最近更新

thinkpade470c加内存条(thinkpad e470c内存条是什么牌子如果要添加4g内存什么牌子比较好)
2026-10-11 09:00:03 浏览:0
frontpage的主要功能(frontpage是什么)
2026-10-11 08:40:18 浏览:0
ideapad15alc7能玩什么游戏(联想ideapad15可以玩刺客信条启示录吗)
2026-10-11 08:10:05 浏览:0
me是国内域名吗(me域名的概况)
2026-10-11 07:50:35 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表