2011-09-21 4 views
24

PREAMBLE : API 17 (Android 4.2) 이후로, TextView.setTextLocale()은 TextViews 및 파생 클래스에 대해이 문제를 명시 적으로 해결합니다. 일본어 로켈 (Locale.JAPAN)을 할당하면 Unihan 문자가 일본어로 표시됩니다.안드로이드에서 중국어처럼 보이는 일본어 문자


WebViews 및 TextViews에 일본어 텍스트를 표시하는 Android 응용 프로그램이 있습니다. 관습에 따라 중국과 일본에서는 다르게 보이지만 동일한 유니 코드 코드 포인트를 공유하는 한자가 있습니다. 일반적으로 브라우저는 lang 태그를 사용하여 올바른 글리프를 선택합니다. Android에서는 기본적으로 모두 중국어 모양을 사용하며 일본어 모양을 원합니다.

이 문제는 this article에서 잘 설명됩니다. 이 기사는 또한 Android (최대 2.2)에서 볼 때 "언어 별 문자의 예"의 문자가 모두 동일하게 보이고 중국인 인 경우 문제를 완벽하게 보여줍니다.

lang="ja" 속성을 사용하면 도움이되지 않습니다. 전체 시스템 로케일을 일본어로 전환해도 도움이되지 않습니다.

일본에서 판매되는 Android 휴대 전화에 대해 궁금합니다. 직설적 인 캐릭터, 지금은 중국어로 그 스타일을 봐도 될까? 나는 추측하고있다.

그렇다면 Android의 공식 지역화 된 이미지가 있습니까? 에뮬레이터에서 실행할 수 있습니까? DroidSansFallback 글꼴이 여전히 CJK 사용 글꼴입니까? 그리고 만약 그렇다면, 미국 바닐라 안드로이드와 같은 것입니까?

저는 일본 글립이 글꼴 (Unicode 개인 영역 또는 다른 어떤 것)의 깊은 곳곳에 숨어 있기를 바래합니다. 그렇다면, 나는 그들을 활용할 수 있습니다 ...

편집 : 위치 DroidSansJapanese.ttf,/시스템/글꼴로 복사하여 에뮬레이터에 설치, 다시 시작. Unihan 기사의 모양에 아무런 차이가 없습니다. 일본어 텍스트 입력 (더 잘 알아야하는)의 힌트 영역조차도 중국어처럼 표시됩니다.

DroidSansJapanese.ttf의 서체 이름은 어떻게 알 수 있습니까? 나는 여전히 Droid Sans이라는 느낌을 가지고 있습니다. DroidSansFallback 내장 글꼴과 같습니다. 그러나 그들이 동일한 서체를 포함한다면, 우선 무엇을 우선시해야 하는가? 시스템 로케일은 생각할 수 있지만 외관상으로는 아닙니다. 안드로이드의 글꼴은 복사 만하면 설치됩니다. 맞습니까?

+1

참고 이러한 문자는 소식에서 중국 스타일로 보입니다. :) –

+0

당신이 올린 그 성격은 중국어 단어입니다 ... 일본어 단어의 일부도 역시 중국어 단어를 가지고있을 것입니다 – xDragonZ

+0

저는 일본에 있는데 나는 그것에 문제가 없습니다. 우리 (회사)는 미국의 (?) 버전의 은하를 가지고 있으며 일본 문자를 표시하는 데 문제가 없습니다. < "; 문자셋 = UTF-8 텍스트/HTML"META HTTP-당량 = "Content-Type을"내용 => : 나에게 webviews에 문제를 가져올 것 한 것은 UTF-8 META 태그를 설정하지 않습니다 문제가있는 페이지의 링크 또는 샘플을 게시 할 수 있습니까? 어떤 장치에 문제가 있습니까? 더 자세한 정보를 제공하면 답변을 드릴 수 있습니다. 여기 당신은 단지 안드로이드가 내가 생각하지 않는 일본을 보여줄 수 없다고 말하고 있습니다. – DallaRosa

답변

4

일본어가 모두 지원되는 글꼴이 있습니다. 나는 몇몇 사람들이 DroidSansJapanese.tff와 TakaoPGothic에 대해 이야기하는 것을 들었다.

4

약간 답답한 해결책을 찾았습니다.

DroidSansJapanese.ttf 글꼴이 존재하며 다운로드 할 수 있습니다 (예 : here). 나는 1MB의 압축 된 자산 제한을 피하기 위해 DroidSansJapanese.mp3으로 이름을 변경하고 assets/web 아래에 두었습니다.

@font-face 
{ 
font-family: "DroidJP"; 
src:url('DroidSansJapanese.mp3') 
} 

가 그럼 난 모든 관련 CSS 스타일의 font-family에 'DroidJP'을 추가 : 나는 다음 CSS 문을 발표했다. HTML을로드하는 방법은 assets/web 폴더가 이미 링크 된 콘텐츠를로드하기위한 기준으로 지정되어 있습니다.

주의 깊게 살펴보면, 일본어가 TextView 인 여러 곳을 앱에서 발견했습니다.사람들을 위해,이 같은 서체를로드 한 :

Typeface s_JFont = 
    Typeface.createFromAsset(Ctxt.getAssets(), "web/DroidSansJapanese.mp3"); 

및 모든 관련 텍스트 뷰에 setTypeface()했다. 이제 PROFIT!

내 APK가 약 1MB 확장되었습니다. 대체 양식이 있는데, 자산에 글꼴을 압축 된 형태로 저장하면 APK 크기가 약 500KB 정도 줄어들지 만 첫 번째 실행에서는 폰 메모리로 확장해야하므로 걱정할 필요가 없습니다. 데이터 폴더 경로 및 Android 1.5와의 호환성을 잃을 수 있습니다.

일부 신용은 herehere입니다. 안드로이드 2.1에서 작동하지 않습니다 (WebViews가 아니라 TextViews) - known bug입니다.

이제 기본 글꼴에 이미 일본어 모양이 포함되어있는 장치를 어떻게 식별합니까?

편집 : mp3 해킹. 먼저 청크 분할 솔루션을 구현했지만 자산에 글꼴을 사용하기로 결정했습니다. 당신이

  • 은 안드로이드 1.5와 호환되지 않는 데이터 디렉토리에 압축 자산 글꼴 및 비 압축을 모두 저장 끝 -

    • 더 많은 휴대 전화 메모리를 소모 : - 작은 APK 크기 - 다음과 같은 단점 청크 된 접근 방식은 하나 개의 상승 여력이있다 텍스트 뷰 측 - Typeface.createFromFile()는 API 레벨에 도입 된 방법 복잡 HTML 생성 4
    • -에서 @ 글꼴 얼굴 선언와 CSS 데이터 경로는 가변
    • 때문에, parametrised 될 필요는 제 앱 느려 시작 - 청크를 결합하는 데 시간을 보냅니다.

    글꼴을 압축 된 자산으로 저장하는 것은 옵션이 아닙니다. 글꼴이 WebView에 표시되지 않고 LogCat에서 "UNCOMPRESS_DATA_MAX를 초과했습니다"라는 메시지가 명확하게 표시됩니다.

  • +0

    .mp3 해킹을 이해할 수 없습니다. 이론적으로 안드로이드 자산 패키징 도구는 mp3 파일을 압축하지는 못합니다. 커널의'\ tools \ aapt' 패키지에있는'Package.cpp' 안드로이드 소스 파일을 열면 파일의 맨 위에'mpNoCompressExt []'라는 char 배열을 찾을 수 있습니다. 여기서 mp3가 나열됩니다. –

    +0

    압축 된 자산을 1MB 이상 저장하면 AssetManager.open()을 통해 열려고하면 오류가 발생합니다. 해결 방법은 [여기] (http://stackoverflow.com/questions/2860157/load-files-bigger-than-1m-from-assets-folder/3093966)에 나와 있습니다. –

    +0

    바로 그 게시물에 대한 답변 # 2를 읽으십시오. MP3로 이름을 바꾸면 AAPT에 이미 압축되어 있기 때문에 AAPT에 압축하지 말라고 말합니다. –

    관련 문제