문제

일본어 캐릭터를 표시 해야하는 JavaScript Memorization 게임을 진행하고 있습니다. 아시아 언어 또는 일본에 대한 지원을 감지하는 크로스 브라우저 방법이 있습니까?

Window.navigator.language는 브라우저의 언어로 설정되지만 일본어를 브라우저 언어 (?)로 설정하지 않는 사람들을 놓치게됩니다.

도움이 되었습니까?

해결책

아시아 언어 또는 일본에 대한 지원을 감지하는 크로스 브라우저 방법이 있습니까?

당신은 단지“일본 글꼴이 설치되어 있습니까?”를 의미합니까? 현대 OSS가 구성 할 수있는“아시아 언어 지원”의 유일한 측면은 Shift-Jis와 같은 문자 인코딩이 알려진지 여부와 관련이 있기 때문입니다 (일명 코드 932 Windows). 그러나 훨씬 더 깨끗하고 모든 곳에서 지원되는 UTF-8을 사용할 수 있기 때문에 일반적으로 그 필요는 없습니다.

일반적으로 특정 문자 범위에 대한 글꼴이 설치되어 있는지 여부를 직접 알 수는 없지만 로터리 방법이 있습니다. 예를 들어 렌더링 된 온 페이지 텍스트를 측정하는 것과 같습니다.

var half= document.createElement('span');
var full= document.createElement('span');
half.appendChild(document.createTextNode('\uFF71'));
full.appendChild(document.createTextNode('\u30A2'));
document.body.insertBefore(half, document.body.firstChild);
document.body.insertBefore(full, document.body.firstChild);
var havejapanesefont= half.offsetWidth!=full.offsetWidth;
document.body.removeChild(half);
document.body.removeChild(full);

이것은 일시적으로 카타 카나 'a'의 반 폭과 전체 너비 변형을 포함하는 요소를 만듭니다. 일본어 글꼴을 사용할 수있는 경우 너비가 다를 것으로 예상됩니다. 그러한 글꼴이 존재하지 않으면, 폭이 같은 비슷한 '렌더 어울리지 않는 문자'글리프로 렌더링 될 가능성이 높습니다.

다른 팁

서버를 확인할 수 있습니다 Accept-Charset 헤더, 일본어 문자가 포함되어 있지 않은 경우 경고 페이지로 리디렉션하십시오. 불행히도 이 스레드 javaScript에서는 헤더를 사용할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top