如何强迫阿拉伯字符分开?

时间:2019-03-27 21:44:15

标签: python fonts python-imaging-library arabic

我正在尝试使用枕头在图像上键入一组阿拉伯字符,且没有空格。我目前遇到的问题是,某些阿拉伯字符彼此相邻时会分开出现(例如{public class SoTest { public static void main(String[] args) throws Exception { ObjectMapper om = new ObjectMapper().registerModule(new ParameterNamesModule()) .registerModule(new JavaTimeModule()); String s = "{\"callStartTime\" : \"2019-03-27T13:00:00Z\" }"; MyType mt = om.readValue(s, MyType.class); System.out.println(mt.getCallStartTime()); } } class MyType { @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssX", lenient = OptBoolean.FALSE) private ZonedDateTime callStartTime; public ZonedDateTime getCallStartTime() { return callStartTime; } public void setCallStartTime(ZonedDateTime date) { this.callStartTime = date; } } 和‍ س为‍ ل我试图以某种方式强制我的字体设置始终分隔所有字符而不注入任何其他字符,我该怎么办?

这是我的代码的片段:

سل

1 个答案:

答案 0 :(得分:2)

使用支持阿拉伯语的 some 字体可以实现您正在描述的可能,特别是那些在Arabic Presentation Forms-B块中对位置敏感形式进行编码的字体Unicode。您需要将输入的文本字符代码映射到正确的位置变体中。因此,对于您所描述的示例字符 seen lam ,U + 0633 س‎和U + 0644 ل‎,您需要的初始形式为U + 0633(即U + FEB3 ﺳ‎‎)和U + 0644的最终形式(即U + FEDE )将它们放在一起(由规则的空格分隔):{{1} }。

https://en.wikipedia.org/wiki/Arabic_script_in_Unicode#Contextual_forms处有一个有用的图表,显示了位置形式。

但是,重要要了解:

  • 并非所有包含阿拉伯语的字体都具有表示形式的编码(许多字体没有)

  • 并非所有的阿拉伯语代码在Presentation Forms范围内都具有相同的功能(大多数基本代码都有),但是对于其他没有Presentation Forms的语言,还有一些扩展的阿拉伯字符。

  • 您有责任根据单词/组上下文将输入的文本(在U + 06xx范围内)处理为正确的表示形式(U + FExx范围)代码,这可能会很棘手。该作业通常属于OpenType Layout引擎,但它也执行联接。因此,您基本上是在颠覆这种逻辑。