Skip to content

[Impeller] Incorrect Arabic Text Rendering #119805

@michaelsoliman1

Description

@michaelsoliman1

Steps to Reproduce

  1. Execute flutter run on the code sample
  2. Open the dialog to see that arabic text is not rendered properly
  3. Toggle commented style lines to see that arabic text is not rendered properly

Expected results:
image

Actual results:
image

Also the font weight is not correctly applied for ar text

related issues:
#119489
#117428

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(arStrings[0]),
        ),
        body: Builder(builder: (context) {
          return InkWell(
              onTap: () {
                showDialog(
                  context: context,
                  builder: (context) {
                    return AlertDialog(
                      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
                      title: Center(child: Text(arStrings[1])),
                      actionsAlignment: MainAxisAlignment.center,
                      actionsPadding: const EdgeInsets.all(15),
                      titleTextStyle:
                          Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.bold),
                      content: Text(arStrings[2]),
                      contentTextStyle: Theme.of(context).textTheme.titleMedium,
                    );
                  },
                );
              },
              child: Container(
                padding: const EdgeInsets.all(20),
                child: Center(
                  child: Column(
                    children: [
                      Text(
                        "English Text",
                        // style: const TextStyle(fontWeight: FontWeight.w600),
                        style: Theme.of(context)
                            .textTheme //
                            .titleLarge //
                            ?.copyWith(fontWeight: FontWeight.w900),
                      ),
                      const SizedBox(height: 20),
                      Text(
                        arStrings[1],
                        // toggling this line breaks all text!
                        // style: const TextStyle(fontWeight: FontWeight.w600),
                        // toggling this line fixes it!
                        // but neglects the font weight
                        // style: Theme.of(context)
                        //     .textTheme //
                        //     .titleLarge //
                        //     ?.copyWith(fontWeight: FontWeight.w900),
                      ),
                      const SizedBox(height: 20),
                      Text(
                        arStrings[2],
                        // toggling this line breaks it!
                        // style: const TextStyle(fontWeight: FontWeight.w600),
                        // toggling this line fixes it!
                        // style: Theme.of(context).textTheme.titleMedium,
                      ),
                    ],
                  ),
                ),
              ));
        }),
      ),
    );
  }
}

final arStrings = [
  "الرئيسية",
  "تسجيل الخروج ",
  "هل أنت متأكد أنك تريد تسجيل الخروج",
];
Flutter Doctor
[✓] Flutter (Channel master, 3.8.0-1.0.pre.32, on macOS 12.6 21G115 darwin-arm64, locale en-EG)
    • Flutter version 3.8.0-1.0.pre.32 on channel master at /Users/michael/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f9daa9aac4 (6 hours ago), 2023-02-01 22:59:24 -0500
    • Engine revision 679c4b42e2
    • Dart version 3.0.0 (build 3.0.0-192.0.dev)
    • DevTools version 2.21.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/michael/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.74.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.58.0

[✓] Connected device (4 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554                        • android-arm64  • Android 13 (API 33) (emulator)
    • iPhone 14 Pro (mobile)      • DF465456-B470-4FBE-84DF-3B4653EC517F • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator)
    • macOS (desktop)             • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm64
    • Chrome (web)                • chrome                               • web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Metadata

Metadata

Assignees

Labels

P0Critical issues such as a build break or regressionc: renderingUI glitches reported at the engine/skia or impeller rendering levele: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.found in release: 3.7Found to occur in 3.7found in release: 3.8Found to occur in 3.8has reproducible stepsThe issue has been confirmed reproducible and is ready to work on

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions