Как сделать так, чтобы элементы управления Apple Cocoa GUI не автоматически «переворачивали» строки, содержащие текст справа налево (например, арабский)?
Вот мой контрольный пример, в котором я планирую оставить звездочки (**
) в начале строк, когда они напечатаны на экране:
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *autoReleasePool = [[NSAutoreleasePool alloc] init];
NSString *str1 = @"** english first then arabic تجر\n";
NSString *str2 = @"** تجر arabic first then english\n";
[str1 writeToFile:@"/dev/stdout" atomically:NO encoding:NSUTF8StringEncoding error:NULL];
[str2 writeToFile:@"/dev/stdout" atomically:NO encoding:NSUTF8StringEncoding error:NULL];
[autoReleasePool release];
return 0;
}
Когда я запускаю это в Terminal.app, я получаю:
$ gcc -framework Foundation test.m
$ ./a.out
** english first then arabic تجر
arabic first then english تجر **
В iTerm линии не «переворачиваются»:
$ gcc -framework Foundation test.m
$ ./a.out
** english first then arabic تجر
** تجر arabic first then english
Основываясь на некотором беглом рассмотрении кода iTerm, похоже, что это происходит из-за «ручной» посимвольной обработки вывода iTerm и использования Terminal.app (предполагается) использования OS-native API для разметки строк. Есть ли способ предотвратить возникновение этого «flippage» при использовании, например, NSTextView
для отображения строк такого типа? Я не смог найти ответы в документации Apple.
Я использую английскую Mac OS 10.5.6 с языком №1 в списке в списке под Системные настройки> Международный> Язык .