2016-12-21 70 views
5

我有像ضضضضضضض這樣的詞的複合詞的阿拉伯文內容。我想得到給定單詞的第一個字母的寬度(這與獨立字母的寬度不同,即ض)。阿拉伯語內容的複合詞中的單獨字母的寬度

我用getBoundingClientRect()方法並試圖獲得的寬度,但它給一個獨立的字符,而不是化合物之一的寬度比返回value通過getBoundingClientRect方法

在上述字中,寬度thiner getBoundingClientRect()給出的ض(第一個字母)是16.109375,但是這個字符是複合的,即可見的,它被截斷,如你所見。它小於給定的值。

我試圖通過減去前面兩個字符給出的getBoundingClientRect()的寬度和第一個字符的寬度來得到第一個字母的精確(可見)寬度,第一個字符的寬度是12px,這是正確的。

有沒有比這更好的方法,這樣我就可以在任何字中獲得每個字符的確切可見寬度?

+1

我對阿拉伯語不太熟悉,但根據javascript,'ض'是單個字符。 ''ض'。charCodeAt(0)'返回1590.這意味着你不能把它分成小塊。字符是字符串中的原子單位。也沒有辦法確定'M'的前半部分或任何ASCII字符的寬度。如果你試圖做到這一點,我猜你的運氣不好。 – dotcs

+0

@dotcs:爲了更好的理解,我編輯了描述。我想現在我解釋得更好了,如果可以的話,你可以檢查和幫助 –

+2

@dotcs在阿拉伯語中,給定字母的字形將根據周圍的字母而改變。他問的是如何在自然語境中找到字母的實際寬度,這與獨立字母的寬度不同。 – PMV

回答

8

你應該知道你看到的unicode不是存儲的unicode。在你的榜樣ضضضضضضض所有字母都存儲爲標準DHAD ض\u0636而是表現爲:

  1. ﺿ\ufebf(開始)
  2. \ufec0(中)
  3. \ufebe(完)
  4. \ufebd (獨立)

所以要得到真實長度,你應該在這些表示unicode上應用你的長度函數。