2009-09-15 4 views
57

내 응용 프로그램에서 외부 글꼴을 사용하고 싶습니다. AssetManager을 사용하여 새 fonts을 추가하려고 시도했지만 작동하지 않았습니다.android에서 외부 글꼴 사용

Typeface face; 

face = Typeface.createFromAsset(getAssets(), "font.otf"); 

textview.setTypeface(face); 

하지만 텍스트를 표시되지 ...

날이 함께 도와주세요 : 다음은 내 코드입니다.

+1

당신이 자산/글꼴 폴더에 액세스 서체 얼굴에있는 글꼴을 가질 수 단정 할 수 ..to; face = Typeface.createFromAsset (getAssets(), "fonts /"+ "font.otf"); textview.setTypeface (face); –

답변

63

AFAIK, Android는 OpenType을 지원하지 않습니다. 대신 트루 타입 글꼴을 사용하십시오.


UPDATE :는 분명히 오픈 지금은 적어도 어느 정도 지원됩니다. 원래 지원되지 않았으므로 앱에서 지원할 Android 버전에 관계없이 글꼴을 철저히 테스트하고 싶을 것입니다.

+0

그래서 나는 올바른 방향으로 가고 있다고 말하고있다. 나는 otf 대신에 ttf 파일을 사용할 필요가있다. ??? – mudit

+2

예. 귀하의 코드를 감안할 때 귀하의 글꼴이 귀하의 자산/디렉토리의 루트에 있어야합니다. 그렇지 않으면 호환 가능한 글꼴로 잘되어 있어야합니다. – CommonsWare

+0

오류 메시지는 에뮬레이터와 adb 또는 Eclipse 사이의 통신 문제가 있음을 나타냅니다. 글꼴과 관련이 없습니다. http://commonsware.com/Android/Android-src-2_1.zip을 다운로드하면 TrueType 글꼴을로드하는 Android 프로젝트를 찾을 수 있습니다. 또한 Android 1.6에서 APK 외부에서 글꼴을로드 할 수있게되었습니다 (예 : 별도로 다운로드하는 글꼴). – CommonsWare

1

동일한 문제가있었습니다. 내 글꼴은 안드로이드 중 하나에서 작동하지 않았지만 일할 필요했습니다. 글꼴 편집기를 사용하여 Android-src-2_1의 FontSampler 예제와 함께 제공되는 글꼴에 내 글꼴의 문자를 복사했습니다. 그것은 완벽하게 작동했습니다.

필자의 방법이 지적 재산의 관점에서 의심 스럽다는 것을 인정하지만 모든 문자가 바뀌었고 이전 글꼴에 대한 모든 참조가 대체되었으므로 원래 글꼴을 사용하지 않았습니다. 잘. 두 글꼴이 정의 된 방식을 '보고'시도했지만 글꼴 변수를 모두 일치시키지 않아도 작동하지 않았습니다. 그래서 네드에서, 나는 원래 폰트의 뼈대를 새로운 폰트의 템플릿으로 사용했습니다.

9

Android는 OTF를 지원합니다 (어떤 SDK 버전인지는 확실하지 않지만 1.6 버전과 호환됩니다). 그러나 타자기 OTF 글꼴을 사용하고 있었지만 렌더링은 TTF 버전과 거의 비슷합니다. 온라인 글꼴 변환기를 통해 사용을 종료했습니다. 베이스 라인은 모든 곳을 뒤덮었습니다 (일부 글자는 다른 글자보다 2 픽셀 높았습니다). HTC Wildfire와 같은 LDPI 휴대 전화에서는 큰 픽셀로 인해 문제가 크게 확대되었습니다.

12

우리의 글꼴에 쉽게 액세스하려면 코드에서 나중에로드 할 수있는 방식으로 응용 프로그램과 함께 묶어야합니다. 이를 위해, 우리는 당신 된 .java 클래스

Typeface tf = Typeface.createFromAsset(getAssets(), 
      "fonts/BPreplay.otf"); 
    TextView tv = (TextView) findViewById(R.id.CustomFontText); 
    tv.setTypeface(tf); 
1

안드로이드에 .XML이있을 수 있습니다

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:id="@+id/DefaultFontText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text." /> 
<TextView 
    android:id="@+id/CustomFontText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text."> 
    </TextView> 

쓰기 다음 코드를

직접 우리의 자산의 글꼴 폴더를 생성 otf 및 ttf 형식을 모두 지원하므로 둘 다 경험했습니다.
tv3 = (TextView)findViewById(R.id.tv1); 
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF"); 
    tv3.setTypeface(typeFace); 

그것은 사용자 정의 글꼴을 사용하기 쉽게 만들 안드로이드 라이브러리 내가

1

사용 Fontinator 그것은 부스 OTF와 TTF 폰트를 지원 영어와 현지 언어에 사용되는 단계입니다 .

https://github.com/svendvd/Fontinator

+0

꽤 좋지만, 1000+ TV를 자신 만의 맞춤형 TV로 바꾸고 있습니다 ... 너무 편리하지는 않습니다. –

-3

당신은 당신의 TextView에 사용자 지정 글꼴의 종류를 설정하는 간단한 EasyFonts 타사 라이브러리를 사용할 수 있습니다.이 라이브러리를 사용하면 assets/fonts 폴더에 글꼴을 다운로드하고 추가하는 것에 대해 걱정할 필요가 없습니다. 또한 Typeface 객체 생성에 대해서도 설명합니다.

다음 글꼴을 제공합니다.

  • Roboto로
  • 이드 할로윈
  • 이드 로봇
  • 자유
  • 재미 모금
  • 안드로이드 국가
  • 녹색 아보카도
  • 인식

간단히 :

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this));