0

我的设置:Flutter v1.17.4、Mac OS X 10.15.4、locale en-US、Dart v2.8.4

在泰语中,元音可以出现在辅音的上方和下方。在我的泰语学习应用程序中,我想为辅音设置与其相关元音不同的样式。

使用 Flutter 的 RichText 和 TextSpan,我几乎实现了这一点。但是如下图所示,有一个问题。元音认为它缺少相关的辅音。结果,元音呈现一个虚线圆圈,它期望辅音出现。辅音在前面的 TextSpan 中。

如何让 Flutter 渲染这个泰语文本,使用不同样式的元音和辅音,并且没有红色虚线圆圈?

在下图中创建字符的代码。

  RichText thaiConsonantAndVowelAbove(){
    return RichText(
        text: TextSpan(
            children: <TextSpan>[
              TextSpan(text: "ง&quot;, style: TextStyle(color: Colors.white, fontSize: 100)),
              TextSpan(text: "ู&quot;, style: TextStyle(color: Colors.red, fontSize: 100))
            ]
        )
    );
  }

  @override
  Widget build(BuildContext context) {
    return Row(children: <Widget>[Expanded(child: thaiConsonantAndVowelAbove(), flex: 1)]);
  }

带有不需要的虚线圆圈的泰语元音

4

1 回答 1

0

感谢dev001帮助解决问题。我不知道泰语字符的一些低级样式需要泰语字体。泰语和非泰语字体在大多数情况下都能正确显示泰语字符。但是,似乎只有泰语字体才能正确渲染由多个 Flutter TextSpan 组成的泰语字符串,并且当该字符串在辅音和元音(或音标)之间拆分时,它必须出现在与辅音。

TLDR:当您想要为泰语文本的每个部分设置样式时,请使用泰语字体。

如果 dev001 提交他们的评论作为答案,我会将其标记为正确。

Google 慷慨地免费提供了许多泰语字体: https ://fonts.google.com/?subset=thai

于 2020-07-15T09:01:01.680 回答