폰트파일은 아웃라인정보만을 가지고 있다. 이 아웃라인정보의 내부를 채운 것이 보통 글자이다. 폰트의 아웃라인 직선과 Bezier 커브로 그리는 정보가 들어있다. 이 정보를 가지고 화면에 글자를 찍는 방식이다. 이 직선과 Bezier 커브를 안드로이드 Path에서 그대로 지원하기 때문에 폰트의 Outline을 Path객체로 복사해 올 수가 있다. Path로 받을 수 있어 Path에서 지원하는 모든 함수를 사용하여 가공할 수 있다. 특히 Affine 2D Matrix를 이용할 수 있다는 장점이 있다. Path로 만들기 폰트의 글자들을 Path로 빼는 것은 아주 간단하다. String sSampleText = "SAMPLE TEXT"; Path path = new Path(); // 받을 Path Paint ..
안드로이드의 Paint는 기본적으로 외부폰트파일을 이용할 수가 있다. 앱에 폰트파일을 포함하여 이를 불러올 수 있게 이미 함수를 지원해준다. 이 함수는 Typeface class내에 있다. 함수의 원형은 다음과 같다. public static Typeface createFromAsset( AssetManager mgr, String path ); 함수 원형에서 보이듯, 외부서체를 이용하려면, Assset에 외부서체 파일을 넣어 두어야 한다. 지원하는 외부서체는 OTF와 TTF파일을 지원한다. 우선 Asset폴더에 사용할 서체를 넣고, 외부서체를 Typeface 인스턴스로 만든 후, Paint에 넣어주면 된다. Asset폴더에 서체파일 넣기 Asset폴더를 만들지 않았거나 없다면 다음과 같이 프로젝트화면에..
Antialiasing display는 격자로 만들어지기 때문에 아주 큰 글자로 출력할 때를 제외하고는 글자의 가장자리의 격자로인해 깨끗하게 보이지 않는다. aliasing의 뜻이 "찌글찌글"하다라는 뜻으로 말 그대로 이 찌글거림을 없애주는 기능이다. 글자의 가장자리부분에 Alpha(투명도)를 주어서 이 찌글거림을 완화 시켜 주는 것이다. 이는 서체뿐만 아니라 android.graphics.Path 등 모든 그리기 작업에 적용이 된다. 옛날 컴퓨터의 성능이 좋지 않은 시절과 해상도가 좋지 않았던 시절에는 이 기능은 상당한 부하가 되었지만, 지금은 좋은 성능덕분에 거의 켜놓고 시작을 한다. 코드는 다음과 같다. Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG ); // ..
이 글을 읽기전에 우선 다음의 포스트를 읽고 오세요. https://jamssoft.tistory.com/141 안드로이드 FontMetrics 안드로이드 Canvas에 글자를 쓰려면 우선 서체가 어떻게 생겼는지를 알아야 한다. 다행히도 안드로이드는 이 부분을 Paint class를 통하여 바로 처리할 수 있게 되어 있다. 실제 이 것을 지원해 주지 않는다면 폰.. jamssoft.tistory.com 실제 글자를 Canvas를 통해서 출력하기 전에 출력될 텍스트의 크기를 알아 내야 할 필요가 있다. 안드로이드의 Paint는 이 것을 Paint 인스턴스의 getTextBounds로 정보를 얻을 수 있다. 다음은 폰트의 크기를 100px로 놓고 "jklmnOPq"라는 text를 getTextBounds한 ..
여러줄의 text를 출력하기 위해서는 고려해야 할 사항이 좀 많다. 줄이 출력하고자 하는 전체폭을 넘지 않는다면, 그냥 줄간격에 맞추어 출력을 하면되지만, 한 줄이 전체폭을 넘어간다면 단어에서 끊어주던지, 폭에 따른 글자에서 끊어 줘야 한다. 또한 한 단어가 한줄보다 클 경우는 단어내의 특정위치에서 또 끊어서 출력을 해야 한다. 이 고려할 사항도 사항이지만, 이 걸 일일이 계산해서 프로그래밍하는 것은 쉬운일은 아니다. 안드로이드에서는 이 과정을 한번에 해결해 주는 녀석이 있다. 땡큐 구글~ StaticLayout 다음은 StaticLayout을 이용하여 출력하는 코드이다. StaticLayout mTextLayout = new StaticLayout( text, paint, width, Layout.Al..
안드로이드 Canvas에 글자를 쓰려면 우선 서체가 어떻게 생겼는지를 알아야 한다. 다행히도 안드로이드는 이 부분을 Paint class를 통하여 바로 처리할 수 있게 되어 있다. 실제 이 것을 지원해 주지 않는다면 폰트를 다루는 상황에서 상상만해도 끔찍한 일이다. 글자를 찍기위해서는 서체의 기준선들을 알아야 정확히 찍을 수가 있다. 이 기준선들은 다음과 같다. 가장 중요한 선은 baseline(세로 기준점:y)이다, 이 baseline을 기준점으로 글자는 찍히게 되며, ascent, descent, top, bottom값은 이 baseline으로 얼마나 떨어져있는 지를 나타낸다. 이 기준선들은 android.android.graphics.Paint.FontMetrics의 멤버변수들로 구성되어 있다. p..
- Total
- Today
- Yesterday
- texture
- 애드센스
- 에어콘
- 금리
- 안드로이드
- 경제보복
- ComputeShader
- 애드핏
- 재테크
- 적금
- 블로그
- 예금
- 에어컨
- 전기요금
- OpenGLes
- 텍스처
- 재태크
- TTS
- Android
- 컴퓨트셰이더
- choreographer
- gpgpu
- 아끼는 법
- 전기료
- 티스토리
- 공유 컨텍스트
- OpenGL ES
- 전기세
- 사용료
- 컴퓨트쉐이더
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |