Как предотвратить, чтобы механизм макета текста OS X автоматически «переворачивал» строки текстом справа налево? - PullRequest
1 голос
/ 24 марта 2009

Как сделать так, чтобы элементы управления 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 в списке в списке под Системные настройки> Международный> Язык .

1 Ответ

2 голосов
/ 24 марта 2009

Вы пробовали:

[nstextviewobj setBaseWritingDirection:NSWritingDirectionLeftToRight];

Этот метод входит в родительский класс NSText.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...