안드로이드는 페인트에 맞춤 글꼴을 설정


92

페인트에 텍스트를 그리고 싶습니다. 사용자 지정 글꼴 ( 예 : Helvetica )과 굵은 글꼴로 그리는 방법 은 무엇입니까? 시스템 글꼴을 사용하고 자산에서 만들지 않는 것을 선호합니다. 감사.


"paint": 의미 Canvas합니까?
Tony the Pony

예, 일부 스타일을 설정하려면 페인트가 필요합니다 ...
Buda Gavril

로케일에 따라 글꼴을 설정하는 방법, 예를 들어 영어의 경우 arial.ttf를 사용하고 한국어의 경우 gothic_B.ttf를 사용하고 싶습니다. Android에서 캔버스에 페인트로 가능한 방법
Dwivedi Ji

@DwivediJi : 다른 사람의 질문에 대한 댓글 대신 StackOverflow 질문으로 게시 해 보셨나요?
Michael Scheper 2014

답변:


165

"사용자 정의 글꼴"이 자산으로 제공하는 글꼴을 의미하는 경우 다음 코드가 작동합니다.

Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); 
Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
Paint paint = new Paint();
paint.setTypeface(bold);
canvas.drawText("Sample text in bold",0,0,paint);

Helvetica가 설치되어 있지 않지만 몇 가지 설치된 글꼴을 사용하여 비교했습니다. 자산에서 글꼴을 사용하는 경우 굵게 설정하는 방법을 알고 있습니까?
Buda Gavril

6
시도 : Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD).
Tony the Pony

2
@TonythePony 귀하의 코드가 나를 위해 작동하지 않습니다. Typeface fontFace = Typeface.createFromAsset (getAssets (), "fonts / comic.TTF"); 서체 얼굴 = Typeface.create (fontFace, Typeface.BOLD); 페인트 페인트 = new Paint (); paint.setTextAlign (Paint.Align.CENTER); paint.setColor (Color.WHITE); paint.setTextSize (10); paint.setTypeface (face); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji

1
해봤 어 getContext().getAssets()?
Wesley

2
Typeface.DEFAULT_BOLD준 나뿐만 아니라 이에 변화 문제 Typeface.BOLD
CrandellWS

29

글꼴에 Android의 새로운 XML 글꼴을 사용하는 경우 페인트에 사용되는 서체를 얻으려면 다음을 사용할 수 있습니다.

val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)

또는 최소 Android API> = 26 인 경우

val customTypeface = resources.getFont(R.font.myfont)

그런 다음 페인트 개체에 적용하려면 :

mTextPaint.typeface = customTypeface

자세한 내용은 https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code를 확인 하세요.


16

페인트 클래스에 이것을 사용하십시오.

 Paint paint = new Paint();
   paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));

9

이미 사용중인 글꼴이 있고 해당 글꼴의 굵은 버전을 사용하려면이 작업을 수행 할 수 있습니다.

currentPainter = new Paint(Paint.ANTI_ALIAS_FLAG);
currentPainter.setColor(Color.WHITE);
currentPainter.setTextSize(Utils.sp2px(getResources(), 14)); // set font size
Typeface currentTypeFace =   currentPainter.getTypeface();
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD);
currentPainter.setTypeface(bold);

위의 답변을 사용했지만이 수정은 저에게 필요했습니다. 그래서 제가 언급 할 것이라고 생각했습니다.


1

리소스 (Kotlin)의 글꼴을 사용하려는 경우 :

val textPaint = TextPaint()
textPaint.typeface = resources.getFont(R.font.font_name)

이것은 질문과 관련이 없을 수도 있지만 이것이 제가 찾던 것입니다. 누군가도 그것을 필요로 할 것입니다.

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