gpt4 book ai didi

objective-c - 如何防止 OS X 文本布局引擎自动使用从右到左的文本 "flipping"行?

转载 作者:行者123 更新时间:2023-12-03 17:08:43 25 4
gpt4 key购买 nike

如何让 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(假定)使用操作系统 native 字符串布局 API 造成的。例如,在使用 NSTextView 显示此类字符串时,有什么方法可以防止发生这种“翻转”?我在 Apple 的文档中找不到任何答案。

我正在运行英文版 Mac OS 10.5.6,在系统偏好设置 > 国际 > 语言下的列表中,英语为第一语言。

最佳答案

你尝试过吗:

[nstextviewobj setBaseWritingDirection:NSWritingDirectionLeftToRight];

此方法位于 NSText 父类中。

关于objective-c - 如何防止 OS X 文本布局引擎自动使用从右到左的文本 "flipping"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com