You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.4开发Android应用时Nirmala UI天城文字体显示异常问题

Delphi 10.4 Android天城文(尼泊尔语)显示异常解决方案

针对你遇到的TEdit、TLabel、TMemo控件中天城文显示拆分的问题,可按以下步骤排查解决:

  1. 优先使用Android系统自带天城文字体
    天城文需要字体支持连字(Ligatures)和字形组合渲染,Nirmala UI在Android端可能存在适配问题。直接将控件字体设置为系统自带的Noto Sans Devanagari,无需额外部署字体:

    Label1.Font.Name := 'Noto Sans Devanagari';
    Edit1.Font.Name := 'Noto Sans Devanagari';
    Memo1.Font.Name := 'Noto Sans Devanagari';
    
  2. 强制启用控件的高级字形渲染
    Delphi Android控件默认可能未开启复杂字形渲染,需通过代码启用连字和抗锯齿:

    uses
      Androidapi.JNI.Widget, Androidapi.JNI.GraphicsContentViewText;
    
    // 为TLabel启用连字
    Label1.TextSettings.Font.Features := [TFontFeature.Create('liga', 1), TFontFeature.Create('dlig', 1)];
    
    // 为TEdit启用高级渲染
    if Edit1.Handle <> 0 then
    begin
      var JEdit := TJEditText.Wrap(Edit1.Handle);
      var Paint := JEdit.getPaint;
      Paint.setFlags(Paint.getFlags or TJPaint.JavaClass.ANTI_ALIAS_FLAG);
      Paint.setSubpixelText(True);
    end;
    
    // 为TMemo设置高质量换行策略
    if Memo1.Handle <> 0 then
    begin
      var JTextView := TJTextView.Wrap(Memo1.Handle);
      JTextView.setBreakStrategy(TJTextView.JavaClass.BREAK_STRATEGY_HIGH_QUALITY);
    end;
    
  3. 确保使用组合式Unicode编码文本
    异常显示的“भ ास ा”是因为文本被拆分为基础字符+独立元音变音,需使用组合式Unicode编码的字符串。直接在代码中赋值组合后的文本:

    Label1.Text := 'भासा';
    
  4. 验证自定义字体的加载逻辑
    若坚持使用Nirmala UI,需确认字体文件部署路径正确且加载方式无误:

    • 在Project Manager的Deployment中添加字体文件,设置Remote Path为assets\fonts\
    • 代码中从assets目录加载字体:
      uses
        System.IOUtils, System.Types;
      
      var
        FontPath: string;
      begin
        FontPath := TPath.Combine(TPath.GetAssetsPath, 'fonts\Nirmala.ttf');
        if TFile.Exists(FontPath) then
        begin
          Label1.Font.LoadFromFile(FontPath);
          // 同步启用连字
          Label1.TextSettings.Font.Features := [TFontFeature.Create('liga', 1)];
        end;
      end;
      

内容的提问来源于stack exchange,提问作者suren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:10:27