Olzhas Suleimen
Committed by David PHAM-VAN

Add an option to disable bidirectional support

@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 - Add support for existing reference objects 6 - Add support for existing reference objects
7 - Update barcode golden pdf 7 - Update barcode golden pdf
8 - Add support for hyphenation [ilja] 8 - Add support for hyphenation [ilja]
  9 +- Add an option to disable bidirectional support [Olzhas-Suleimen]
9 10
10 ## 3.10.7 11 ## 3.10.7
11 12
@@ -22,6 +22,7 @@ import 'dart:typed_data'; @@ -22,6 +22,7 @@ import 'dart:typed_data';
22 22
23 import 'package:meta/meta.dart'; 23 import 'package:meta/meta.dart';
24 24
  25 +import '../options.dart';
25 import 'bidi_utils.dart' as bidi; 26 import 'bidi_utils.dart' as bidi;
26 import 'font_metrics.dart'; 27 import 'font_metrics.dart';
27 28
@@ -323,7 +324,7 @@ class TtfParser { @@ -323,7 +324,7 @@ class TtfParser {
323 /// Having both the unicode and the isolated form code 324 /// Having both the unicode and the isolated form code
324 /// point to the same glyph index because some fonts 325 /// point to the same glyph index because some fonts
325 /// do not have a glyph for the isolated form.\ 326 /// do not have a glyph for the isolated form.\
326 - if (bidi.basicToIsolatedMappings.containsKey(c)) { 327 + if (useBidi && bidi.basicToIsolatedMappings.containsKey(c)) {
327 charToGlyphIndexMap[bidi.basicToIsolatedMappings[c]!] = glyphIndex; 328 charToGlyphIndexMap[bidi.basicToIsolatedMappings[c]!] = glyphIndex;
328 } 329 }
329 } 330 }
@@ -28,6 +28,7 @@ import '../format/name.dart'; @@ -28,6 +28,7 @@ import '../format/name.dart';
28 import '../format/num.dart'; 28 import '../format/num.dart';
29 import '../format/stream.dart'; 29 import '../format/stream.dart';
30 import '../format/string.dart'; 30 import '../format/string.dart';
  31 +import '../options.dart';
31 import 'font.dart'; 32 import 'font.dart';
32 import 'font_descriptor.dart'; 33 import 'font_descriptor.dart';
33 import 'object.dart'; 34 import 'object.dart';
@@ -78,7 +79,7 @@ class PdfTtfFont extends PdfFont { @@ -78,7 +79,7 @@ class PdfTtfFont extends PdfFont {
78 return PdfFontMetrics.zero; 79 return PdfFontMetrics.zero;
79 } 80 }
80 81
81 - if (bidi.isArabicDiacriticValue(charCode)) { 82 + if (useBidi && bidi.isArabicDiacriticValue(charCode)) {
82 final metric = font.glyphInfoMap[g] ?? PdfFontMetrics.zero; 83 final metric = font.glyphInfoMap[g] ?? PdfFontMetrics.zero;
83 return metric.copyWith(advanceWidth: 0); 84 return metric.copyWith(advanceWidth: 0);
84 } 85 }
  1 +/// Whether to use the Bidi algorithm to detect RTL text.
  2 +const bool useBidi = bool.fromEnvironment('use_bidi', defaultValue: true);
@@ -20,6 +20,7 @@ import 'package:meta/meta.dart'; @@ -20,6 +20,7 @@ import 'package:meta/meta.dart';
20 20
21 import '../../pdf.dart'; 21 import '../../pdf.dart';
22 import '../pdf/font/bidi_utils.dart' as bidi; 22 import '../pdf/font/bidi_utils.dart' as bidi;
  23 +import '../pdf/options.dart';
23 import 'annotations.dart'; 24 import 'annotations.dart';
24 import 'basic.dart'; 25 import 'basic.dart';
25 import 'document.dart'; 26 import 'document.dart';
@@ -928,7 +929,7 @@ class RichText extends Widget with SpanningWidget { @@ -928,7 +929,7 @@ class RichText extends Widget with SpanningWidget {
928 final space = 929 final space =
929 font.stringMetrics(' ') * (style.fontSize! * textScaleFactor); 930 font.stringMetrics(' ') * (style.fontSize! * textScaleFactor);
930 931
931 - final spanLines = (_textDirection == TextDirection.rtl 932 + final spanLines = (useBidi && _textDirection == TextDirection.rtl
932 ? bidi.logicalToVisual(span.text!) 933 ? bidi.logicalToVisual(span.text!)
933 : span.text)! 934 : span.text)!
934 .split('\n'); 935 .split('\n');