Olzhas Suleimen
Committed by David PHAM-VAN

Add an option to disable bidirectional support

... ... @@ -6,6 +6,7 @@
- Add support for existing reference objects
- Update barcode golden pdf
- Add support for hyphenation [ilja]
- Add an option to disable bidirectional support [Olzhas-Suleimen]
## 3.10.7
... ...
... ... @@ -22,6 +22,7 @@ import 'dart:typed_data';
import 'package:meta/meta.dart';
import '../options.dart';
import 'bidi_utils.dart' as bidi;
import 'font_metrics.dart';
... ... @@ -323,7 +324,7 @@ class TtfParser {
/// Having both the unicode and the isolated form code
/// point to the same glyph index because some fonts
/// do not have a glyph for the isolated form.\
if (bidi.basicToIsolatedMappings.containsKey(c)) {
if (useBidi && bidi.basicToIsolatedMappings.containsKey(c)) {
charToGlyphIndexMap[bidi.basicToIsolatedMappings[c]!] = glyphIndex;
}
}
... ...
... ... @@ -28,6 +28,7 @@ import '../format/name.dart';
import '../format/num.dart';
import '../format/stream.dart';
import '../format/string.dart';
import '../options.dart';
import 'font.dart';
import 'font_descriptor.dart';
import 'object.dart';
... ... @@ -78,7 +79,7 @@ class PdfTtfFont extends PdfFont {
return PdfFontMetrics.zero;
}
if (bidi.isArabicDiacriticValue(charCode)) {
if (useBidi && bidi.isArabicDiacriticValue(charCode)) {
final metric = font.glyphInfoMap[g] ?? PdfFontMetrics.zero;
return metric.copyWith(advanceWidth: 0);
}
... ...
/// Whether to use the Bidi algorithm to detect RTL text.
const bool useBidi = bool.fromEnvironment('use_bidi', defaultValue: true);
... ...
... ... @@ -20,6 +20,7 @@ import 'package:meta/meta.dart';
import '../../pdf.dart';
import '../pdf/font/bidi_utils.dart' as bidi;
import '../pdf/options.dart';
import 'annotations.dart';
import 'basic.dart';
import 'document.dart';
... ... @@ -928,7 +929,7 @@ class RichText extends Widget with SpanningWidget {
final space =
font.stringMetrics(' ') * (style.fontSize! * textScaleFactor);
final spanLines = (_textDirection == TextDirection.rtl
final spanLines = (useBidi && _textDirection == TextDirection.rtl
? bidi.logicalToVisual(span.text!)
: span.text)!
.split('\n');
... ...