2017-09-19 1 views
8

Skia canvas (concat 메서드 사용)에 적용한 부드러운 스케일링 중에는 텍스트가 "spurts"로 비 균일하게 비율이 조정 된 것처럼 보입니다. 이 문제는 특히 FreeType 2 백엔드가있는 Android 플랫폼에서 분명합니다.Skia의 비 균일 텍스트 스케일링 (FreeType 2 백엔드)

이것은 Skia에서 일반적인 텍스트 크기 조정이 작동하는 방식이라고 생각합니다. 먼저 글꼴 크기를 글꼴 엔진에 적용한 다음 글리프 비트 맵을 추출하고 "나머지"행렬로 변환하여 원하는 최종 크기를 얻습니다. 그러나 어쨌든 마지막으로 남은 스케일링은 적용되지 않아 텍스트 크기의 정수 값 사이의 천이가 일어난다. 순수한 자바/안드로이드 캔버스의 경우 똑같은 일이 완벽하게 작동하는 것으로 보입니다 (텍스트가 부드럽게 확장 됨).

제 질문은 어떻게 해결할 수 있습니까? 어쩌면 SkPaint 런타임 플래그를 조정할 수있는 빌드 구성 플래그가 있습니까?

스키비아 수정은 m59입니다.

답변

3

Skia는 모르지만 일반적으로 스케일링 텍스트로이 동작을 볼 때는 스케일링 float를 int로 캐스팅하기 때문입니다.

float scale = someValue; 
int someOtherVar = scale; 
... some scaling math on someOtherVar... 
text.setScale(someOtherVar) 

은 매우 마지막 단계까지 INT 년대에 크기 조정 변수를 변환하지 마십시오 설명 된 행동을

의 원인이됩니다.

+0

감사합니다. 캔버스에있는 다른 지오메트리가 적절하고 부드럽게 확장되기 때문에 이것은 분명히 여기에 해당하지 않습니다. 그리고 나는 텍스트 나 다른 어떤 것에는 어떤 추가적인 척도도 적용하지 않는다. – vganin

관련 문제