2016-12-21 3 views
5

나는 ضضضضضضض과 같은 단어의 합성어 인 아랍어 내용을 가지고 있습니다. 주어진 단어의 첫 글자의 폭을 얻고 싶습니다. (독립된 글자의 폭과 같지 않습니다. 즉, ض).아랍어 내용의 합성어에있는 분리 문자의 너비

나는 getBoundingClientRect() 방법을 사용 폭을 얻을려고했는데, 그것은 반환 value 위의 한마디 방법

getBoundingClientRect에 의해, 폭보다 thiner의 독립적 인 캐릭터가 아닌 화합물 하나의 폭을주고있다 getBoundingClientRect()에 의해 주어진 ض (첫 번째 글자)의 문자는 16.109375이지만 문자는 복합적입니다 (예 : 시각적으로 잘린 것처럼 잘립니다). 주어진 값보다 작습니다.

처음 두 문자 중 너비가 getBoundingClientRect() 인 올바른 너비와 첫 번째 문자의 너비를 뺀 다음 첫 번째 문자의 너비를 확인했습니다. 올바른 문자는 12px입니다.

모든 단어에서 이와 같은 모든 문자의 정확한 너비를 확인할 수 있도록 이보다 더 좋은 방법이 있습니까?

+1

저는 아랍어에 익숙하지 않지만 'ض'은 자바 스크립트에 따른 단일 문자입니다. ''charCodeAt (0)'은 1590을 반환합니다. 이것은 더 작은 조각으로 나눌 수 없다는 것을 의미합니다. Chars는 문자열의 원자 단위입니다. 'M'또는 임의의 ASCII 문자의 전반부의 폭을 결정할 방법이 없습니다. 네가 그걸하려고하면 네가 운이 없다고 생각해. – dotcs

+0

@ dotcs : 더 나은 이해를 위해 설명을 편집했습니다. 지금 내가 더 잘 설명했다고 생각하면 할 수 있으면 확인하고 도울 수 있습니다. –

+2

@dotcs 아랍어로는 주어진 글자의 글립 문자가 주변 문자에 따라 바뀝니다. 그는 자연스러운 맥락에서 문자의 실제 너비를 찾는 방법을 묻습니다. 이것은 같은 글자의 너비와는 다른 것입니다. – PMV

답변

8

당신이 본 유니 코드는 유니 코드가 저장되어 있지 않다는 것을 알아야합니다. 귀하의 예를 ضضضضضضض의 모든 문자는 표준 Dhad ض\u0636로 저장되지만로 표시됩니다 :

  1. ﺿ\ufebf (시작)
  2. \ufec0 (가운데)
  3. \ufebe (끝)
  4. \ufebd (독립)

실제 길이를 얻으려면 길이 유니 코드를 유니 코드로 표현해야합니다.

관련 문제