글꼴 렌더링은 실제로 어떻게 작동합니까?


11

나는 컴퓨터에서 글꼴이 렌더링되는 방식에 대해 본질적으로 아무것도 모른다는 것을 알고 있습니다.

내가 볼 수 있듯이 글꼴 렌더링은 일반적으로 시스템 전체에서 일관된 방식으로 이루어집니다. 예를 들어 DE 제어판에서 구성한 하위 픽셀 글꼴 힌트 설정은 창 테두리, 브라우저, 텍스트 편집기 등에 나타나는 텍스트에 영향을줍니다. (일부 Java 응용 프로그램에는 눈에 띄는 차이가 있으므로 다른 글꼴 렌더링 메커니즘을 사용하고 있다고 생각합니다).

위에서 얻은 것은 글꼴 렌더링이 필요한 모든 응용 프로그램이 일부 OS (또는 DE) 전체 라이브러리를 사용한다는 것입니다.

반면에 브라우저는 일반적으로 특정 흐름 규칙에 따라 텍스트를 포함한 다양한 항목을 배치하는 렌더링 엔진을 통해 자체 렌더링을 관리합니다.

이 두 가지 사실이 어떻게 호환되는지 잘 모르겠습니다. 브라우저가 OS에 주어진 위치에 글리프를 그리도록 요청해야한다고 가정하지만 글리프가 얼마나 많은 공간을 미리 알지 못하고 어떻게 텍스트 흐름을 관리 할 수 ​​있습니까? 글리프 크기를 결정하는 별도의 호출이 있습니까? 따라서 브라우저가 문자가 나중에 OS에 의해 채워지는 작은 상자처럼 흐름을 관리 할 수 ​​있습니까? (커닝을 처리하지는 않지만). 아니면 텍스트 흐름을 포함하여 전체 텍스트 영역을 그리는 것이 OS에 있습니까? OS가 렌더링 된 글리프를 비트 맵으로 반환하고이를 화면에 그리도록 응용 프로그램에 남겨 둡니까?


1
짧은 대답은 "예"입니다.
그레이엄 볼랜드

@GrahamBorland ... :-/ 내가 묘사 한 세 가지 대안 중 어느 것이 "예"입니까?
안드레아

상황에 따라 그들 모두. 적절한 답변을 작성하려고 노력할 것입니다.
그레이엄 볼랜드

답변:


9

일반적으로 응용 프로그램이 OS 또는 GUI 툴킷에서 제공하는 라이브러리를 사용하여 글꼴 렌더링을 수행하는 것이 맞습니다.

일반적인 글꼴 엔진은 여러 가지 작동 모드를 허용합니다. 간단한 경우, 응용 프로그램은 특정 위치에 텍스트 문자열을 그리도록 요청할 수 있으며 엔진은 모든 것을 처리합니다 (측정, 위치 지정, 디스플레이에 픽셀 그리기 등).

브라우저 나 워드 프로세서와 같이 더 세밀한 제어가 필요한 애플리케이션의 경우 엔진은 앱이 지정된 텍스트를 미리 측정하도록 요청할 수있는 인터페이스를 노출합니다. 그런 다음 앱은이 지식을 사용하여 줄에 들어갈 수있는 텍스트의 양, 줄 바꿈이 필요한 위치, 단락이 차지할 공간 등을 파악할 수 있습니다. 앱은 엔진에 실제 렌더링을 수행하도록 요청할 수 있습니다. 픽셀의.

(엔진이 최대 너비 매개 변수 및 일부 커닝 / 패딩 매개 변수를 취할 수 있고 중간에 텍스트를 자동으로 렌더링 할 수있는 중간 시나리오가있을 수 있습니다.)

마지막으로, 글꼴 엔진은 앱이 특정 크기로 미리 렌더링 된 글리프의 비트 맵을 반환하여 앱이 텍스트의 최종 렌더링을 인계하여 앱이 최종 디스플레이에 배치하고 합성 할 수 있도록합니다. 또는 엔진은 일부 벡터 툴킷으로 렌더링하기 위해 원시 글리프 개요 데이터를 반환하도록 제안 할 수도 있습니다.

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