2016-09-29 34 views
1

所以我打印这个阿拉伯文字(“第一方,第二方”): لطرفالأولالطرفالثانى印刷阿拉伯字符加上小的视觉差异,并插入其他的Unicode字符

有时打印这样的:لطرفالأولالطرفالثانى

转换为unicode的 '原始的' 文本读取: \ u0644 \ u0637 \ u0631 \ u0641 \ u0627 \ u0644 \ u0623 \ u0648 \ u0644 \ u0627 \ u0644 \ u0637 \ u0631 \ u0641 \ u0627 \ u0644 \ u062b \ u0627 \ u0646 \ u0646

打印作业中的数据r EADS: \ ufedf \ u0637 \ u0631 \ u0641 \ u0627 \ ufef7 \ u0648 \ u0644 \ u0627 \ ufedf \ u0637 \ u0631 \ u0641 \ u0627 \ ufedf \ ufe9b \ ufe8e \ ufee7 \ ufef0

那么,为什么会出现这种情况?我可以搜索打印作业数据,并根据某些字词采取行动,但似乎无法回避为什么阿拉伯语言的打印数据发生变化。

也有小的差异视觉可检测: Visually detectable differences 谢谢大家!

+0

只是我的猜测,但你的打印机/打印机驱动程序会自动将它,因为它是无法打印原文。这与编程无关,除非您使用一些代码将此文本发送到您的打印机,并且在这种情况下请提供代码。 –

回答

1

阿拉伯语的字体设置与罗马字体不同,特别是它处理连字和对齐的方式。把它放在上下文中,可以考虑英语,它有几个连字符排版组合,如ff,fi和ffi,它们通常在输出中呈现为单个字符。

下面是三个字符ffi,呈现为单个结扎字符(\ uFB03)。

Three characters ffi rendered as a single character ligature.

这里是对一般的连笔字的文章。

https://en.wikipedia.org/wiki/Typographic_ligature

为理由,罗马脚本通常插入空格或连字符(以及字距)。使用阿拉伯语,人们认为使用“kashidas”来拉伸笔画的宽度会更加令人愉快,这些额外字符会导致拉伸的出现。

通常,排版文本中使用的Unicode字符数可能比原始文本多或少。

这里有几个阿拉伯语的参考文献,如果你有兴趣。

https://www.tug.org/tugboat/tb27-2/tb87benatia.pdf

https://design.tutsplus.com/tutorials/creative-arabic-calligraphy-kashida-tajim-and-tashkil--cms-23240

+0

嗨乔尔,感谢这篇文章和非常有趣的参考。这非常感谢。 – DanielFrins

+0

你好Joel,看到你已经有了一些这方面的经验,你是否也有经验将它放入正则表达式? – DanielFrins

+0

不确定你想要reg表达式为你做什么。听起来像这可能是一个单独的问题。另外,我是否回答了上述问题?如果是这样,接受答案(不同于upvoting)。如果不是,请澄清你的问题还有什么需要回答。 Thx –