인도 문자의 복잡한 렌더링을 표시하기 위해 Android 장치를 만드는 방법은 무엇입니까?


42

이 질문의 길이를 변명하십시오. 다른 사람들을 돕고 도움을주는 사람들이 설명을 요구하지 않고 답변을 제공하는 것을 피하기 위해이 모든 것을 설명해야합니다.

한 줄에 내 요구 사항 : "Android 전화가 타밀어 문자를 올바르게 표시 할 수있게하려면"

정교함 : 타밀어는 다른 인도 언어와 마찬가지로 복잡한 문자 렌더링 시스템을 가지고 있습니다. 영어 나 다른 라틴어 기반 스크립트와 달리, 하나 이상의 문자로 구성된 글리프 (화면에 표시되는 문자)가 있습니다. Android는 이러한 복잡한 스크립트를 렌더링 할 수 없습니다 (예외 포함). 저의 목표는 Android 휴대 전화 나 태블릿에 이러한 기능을 제공 할 수있는 방법을 아는 것입니다.

지금까지 수집 한 배경은 거의 없습니다. 화면에 글리프를 표시하려면 먼저 적절한 글꼴 파일이 필요합니다. Android 기기에는 / system / fonts 폴더 가 있으며 그 중 일부는 없습니다. 이 폴더에서 가장 흥미로운 파일은 DroidSansFallback.ttf입니다. 이름에서 알 수 있듯이 Android 시스템이 시스템 글꼴에서 문자를 찾지 못하면 (DroidSans.ttf 또는 DroidSans-Bold.ttf 등) DroidSansFallback.ttf에서 검색합니다.

PC에서 적절한 글꼴 파일 (Latha.ttf 또는 Lohit-Tamil.ttf-Tamil 용 글꼴)을 교체하면 DroidSansFallback.ttf는 장치에 Tamil 문자를 표시 할 수 있습니다. 교체하기가 쉽지 않으며 장치를 루팅하고 쓰기 가능한 시스템을 마운트해야합니다.

이러한 문제에도 불구하고 DroidSansFallback.ttf를 교체하더라도 표시되는 타밀어 문자가 올바르게 렌더링되지 않습니다. 타밀어 문자 "தி"은 두 문자로 구성되어 있으며 "தி"으로 표시되는 대신 공백없이 "த ி"로 표시됩니다. 짧은 메시지를 읽기에는 충분하지만 책 등을 읽는 데 사용할 수는 없습니다.

안드로이드 4.0 이상에서 타밀어 및 기타 몇 가지 언어는 아래에서 볼 수 있듯이 안드로이드 4.x API 개요에서 말한 것처럼 브라우저를 통해 지원됩니다.

Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser

주목할 단어는 "WebView 및 내장 브라우저"이며, 이는 타밀어 문자가 HTML 컨텐츠로 렌더링되면 완벽하게 렌더링되고 그렇지 않으면 렌더링되지 않음을 의미합니다. Opera와 다른 몇 가지 브라우저는 안드로이드 4.0 이전에도 문자 대신 이미지를 대체 하여이 작업을 수행했습니다.

인도 시장을 겨냥한 일부 장치 (예 : LG Optimus One, 대부분의 삼성 전화 및 태블릿)는 브라우저 에서뿐만 아니라 연락처, 문자 메시지, 파일 이름 등 브라우저가 아닌 곳에서도 타밀어를 올바르게 표시 할 수 있음을 알았습니다. 놀랍게도 Android 2.3 이상에서도이 작업을 수행합니다. 또한 동일한 버전의 Android를 실행하는 비인도 국가를 대상으로하는 동일한 모델이 타밀어 문자 표시를 지원하지 않는 것으로 나타났습니다.

이를 통해 추가 조사를 통해 Android (다른 Linux 기반 OS와 마찬가지로)가 복잡한 문자를 표시하기 위해 글꼴 렌더링 엔진에 의존한다는 결론에 도달했습니다. 내가 만난 두 엔진은 Skia와 Harfbuzz입니다. 나는 LG가 skia를 사용하고 Samsung 은이 기능을 가져 오기 위해 장치에서 Harfbuzz 라이브러리를 사용한다는 것을 알았습니다.

이러한 라이브러리와 글꼴을 대체 할 것을 제안하는 많은 웹 사이트를 발견했습니다. 작동하지 않아 얼어 붙습니다. 운 좋게도 나는 clockworkmod를 사용하여 백업했기 때문에 전화를 복원했습니다.

타밀어로 이것을 설명했지만 이것은 대부분의 인도 언어에 적용됩니다.

여기 내 질문이 온다 (여전히 읽고 있다면;) 이제 문자를 제공하기 위해 TTF 파일이 있어야하고 올바르게 렌더링하려면 적절한 라이브러리 (libskia.so 또는 libharfbuzz.so)가 필요하다는 것이 확실합니다. 이 제조업체들이 어떻게 능력을 제공 할 수 있는지 아는 사람이 있습니까? AOSP (Android Open Source Project)에서 내 ROM을 만들 수도 있습니다.


Cyanogenmod에는 텍스트를 오른쪽에서 왼쪽으로 렌더링하는 기능이 있습니다. Skia는 그래픽 렌더링의 표준입니다. 결과는 다양합니다. 한 ROM에서 하나의 Skia 라이브러리를 가져와 다른 ROM에 넣으면 AOSP 소스를 가져 와서 처음부터 빌드해야하고 Skia를 harfbuzz 및 다시 컴파일로 교체해야하기 때문에 치명적일 수 있습니다. 해당 라이브러리로 빌드되지 않은 다른 ROM으로 harfbuzz – 라이브러리가 링크되어 있으므로 ROM의 빌드가 harfbuzz를 인식하지 못하면 작동하지 않습니다)
t0mm13b

1
@narayanan 어떤 이유로 m.oneindia.in/tamil 사이트 는 Android 4.1.2의 Chrome에서 타밀어를 완벽하게 렌더링합니다. 이 웹 사이트는 다른 웹 사이트가 제대로 수행하지 못하는 이유
FMFF

답변:


9

루팅 된 전화

폴더 아래의 Android /system/fonts에는 모든 언어 문자를 포함하는 "DroidSansFallback.ttf"라는 파일이 있습니다. 현재 타밀어를 포함한 많은 지원이 부족합니다.

파일을 항상 Tamil 문자가 포함 된 파일로 바꿀 수 있으므로 휴대 전화에서 Tamil을 사용할 수 있습니다.

에서 XDA 개발자 스레드 - DroidSans 대체 인도어 글꼴 , 사용자가 시도하고 성공적으로 자신의 휴대폰에 타밀어를 사용했다.

이 방법을 수행하려면 /system폴백 파일 에 액세스 하고 폴백 파일을 변경 하려면 전화기에 대한 루트 액세스 권한이 필요 합니다.

  • 장치를 루팅하려면 어떻게합니까?를 읽으십시오 . 휴대 전화가 아직 루팅되지 않은 경우
  • 파일교체하는 방법을 보려면 XDA 개발자 스레드 를 따르십시오 .

    Using and Android SDK environment:
    
    First Copy the DroidSansFallback.ttf file into your sdcard,
    then issue the following commands:
    
    adb shell
    su
    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    cd /sdcard
    busybox cp DroidSansFallback.ttf /system/fonts
    mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
    exit
    exit
    
    Lastly, rebooted the phone
    

    참고 : 마운트 포인트는 모든 전화에서 동일하지 않습니다.


안드로이드 APP

위의 방법은 일부 사용자에게 어필 할 수 있지만 가능한 경우 APP을 선호합니다.

게다가 타밀어는 총 247자인 키보드를 가지고 있으며 영어는 26 자만 필요합니다. 따라서 입력시 큰 문제가됩니다.

Wikipedia 참조 :: Tamil language-Writing System

현재 타밀어 문자는 모음 12 개, 자음 18 개, 특수 문자 āytam으로 구성되어 있습니다. 모음과 자음이 결합되어 216 개의 복합 문자를 형성하여 총 247 자 (12 + 18 + 1 + (12 x 18))를 제공합니다.


Krishan 덕분에이 주제에 대한 연구를 진행하면서 이미 시스템 전체의 타밀어 사용 및 타밀어 문자 입력에 사용할 수있는 키보드를 모두 다루는 APP가 있습니다.

이 솔루션의 개발에 대한 자세한 내용은 Krishan의 Android 용 Tamil Unicode Font – Working 이라는 제목의 게시물 을 참조하십시오.

요약

Krishan은 Google Play 에서 타밀어로 전체 Android OS를 사용하는 문제를 완전히 해결하는 두 가지 앱을 개발하고 게시 했습니다.


4
글꼴을 바꾸는 것은 비 연관 문자 만 표시하고 공액 문자가 제대로 렌더링되지 않는 부분 솔루션 일 뿐이라고 이미 언급했습니다. 그리고 응용 프로그램에 관한 두 번째 해결책은 나를 위해 받아 들여지는 해결책이 아닙니다. 영어로 입력하고 웹 페이지를 예제로 변환하고 인용하여 타밀어 텍스트를 작성하는 방법을 제공합니다. 귀하의 노력과 시간에 감사드립니다.
Narayanan

3

Android의 알려진 버그 인 문제 4153을 설명하는 것 같습니다 .

이 문제는 Jelly Bean에서 해결 된 것으로보고되었습니다. 이 스크린 샷이 정확하면 문제를 해결해야합니다. (실제로 말할 수는 없지만 Jelly Bean에 액세스하여 스크린 샷을 만들 수 있습니다.)

유니 코드 용 ICS 테스트 페이지


1
고맙게도 Tamil 렌더링은 제조업체의 개입으로 Android 2.3.3 전화에서도 작동한다고 말한 것처럼 버그가 아닙니다.
Narayanan

1
2012 년 7 월 20 일에 Google gDays에 참석하여 Android JellyBean 4.1이 브라우저 외부에서도 타밀어 문자를 표시하는 것을 목격했습니다. 불행히도 나는 더 이상 아무것도 시험 할 수 없었다.
Narayanan

android.stackexchange.com/questions/26797/ 질문에 대한 의견으로 ThinkFree Office Mobile Viewer를 통해 웹 페이지, 텍스트 파일, SMS, 연락처, 파일 이름, DOCX 파일에서 타밀어를 읽을 수 있다고 말하고 싶습니다. 나는 이것이 텔루구 어, 칸나다어, 벵골어 및 힌디어에 대해서도 동일하다는 것을 관찰했다.
Narayanan

1

Opera Mini 웹 브라우저 설치

Opera Mini 웹 브라우저에서 "about : Config"를 입력하십시오.

복잡한 스크립트에 비트 맵 글꼴 사용 : 예 선택

모든 브랜드 휴대 전화에서 타밀어 글꼴로 모든 사이트를 볼 수 있습니다

문안 인사


5
이것은 브라우저 내부 비트 맵이며 OS 전체 솔루션이 아닙니다 (예 : SMS에서 타밀어 또는 기타 인도 문자를 입력하거나 볼 수 없음). Btw, 당신이 제안 한 것은 이미 메인 포스트에서 언급되었습니다 :> "오페라와 다른 몇 가지 브라우저는 안드로이드 4.0 이전에도 문자 대신 이미지를 대체하여 이것을했습니다."

0

Android 시스템에서 글꼴을 루팅하고 바꿀 필요가 없습니다.

Devanagari 글꼴을 올바르게 렌더링하려면 장치의 펌웨어를 유사한 인도 지역의 펌웨어로 교체하십시오. 다른 지역의 펌웨어는 Devanagari 글꼴을 올바르게 렌더링하지 않습니다. Devanagari 글꼴은 Indian Region의 Android 버전 2.x에서 올바르게 렌더링됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.