Fontconfig는 실제로 어떻게 작동하나요? [폐쇄]

Fontconfig는 실제로 어떻게 작동하나요? [폐쇄]

저는 Linux 환경이 처음이라 글꼴 공부를 시작했습니다.

나는 Fontconfig가 Linux에서 실제로 글꼴 관리를 처리하는 라이브러리라는 것을 읽었습니다. 그래서 이를 위해 Fontconfig 소스 코드를 다운로드하고 컴파일했으며 사용할 준비가 되었습니다.

메인 소스 디렉토리에 들어가면 fc-cache등 의 하위 모듈이 많이 보입니다 fc-list. fc-query검색을 시도했지만 실제로 어떻게 작동하는지에 대한 세부 정보를 찾을 수 없습니다. 그래서 소스코드를 직접 이해해 보기로 했으나 아래와 같이 터미널에 명령어를 쳤을 때 실제로 어떤 일이 일어나는지 실제 시작점이 무엇인지 모르기 때문에 고민이 많습니다.

$ fc-query /usr/share/fonts/truetype/fonts-japanese-gothic.ttf

Fcquery.c예를 들어 , 다른 공유 라이브러리에 있는 다른 함수를 호출하도록 글꼴 구성 파일을 수정한다고 가정해 보겠습니다 . 내가 무엇을해야 하나? 컴파일 작업만 수행됩니까, 아니면 Makefile에 무언가를 등록해야 합니까?

저는 여기에 처음 왔기 때문에 자세히 설명해주세요.

답변1

간단히 말해서:글꼴 구성을 이해하려면 글꼴 구성이 생성된 이유와 해결하려는 문제가 무엇인지 이해해야 합니다. 이를 위해서는 Xorg에 대한 많은 지식이 필요합니다.

UNIX 시스템의 글꼴 구성은 여러 단계를 거칩니다.글꼴 구성Xorg를 통해 글꼴을 사용할 수 있는 가능성 중 하나일 뿐입니다. Xorg의 소스 코드를 잘 이해하지 못하면 Fontconfig의 소스 코드를 읽는 것이 매우 어려울 수 있습니다. 그러나 나는 서체 진화의 이면에 있는 개념을 이해하는 것이 좋은 출발점이 될 수 있다고 믿습니다.

면책 조항: 저는 Linux에서 많은 글꼴 문제를 처리했지만 실제로 글꼴 관련 Xorg 코드를 변경할 필요는 없었습니다.

이것Arch Linux 위키에도 이에 대한 많은 정보가 있습니다.

약간의 역사

원래 UNIX 글꼴은 단지 비트맵 글꼴이었습니다. 오늘날 이러한 파일은 에서 찾을 수 있으며 /usr/share/fonts/misc이제 거의 모든 파일에 PCF(Portable Compilation Format)가 사용됩니다. 바이너리 형식입니다. 다른 형식의 바이너리 글꼴이 있지만 PCF 이외의 다른 형식을 바이너리 글꼴로 사용한 적이 없다는 점을 인정해야 합니다. Xorg 문자열을 사용하면 xfontsel글꼴 포인트, 간격, 픽셀 크기, 터미널 두께(굵게, 기울임꼴), 인코딩 등을 구성할 수 있습니다.

비트맵 글꼴에는 픽셀 크기가 다른 글꼴에 대한 파일이 다릅니다. 비트맵 글꼴에는 글꼴 계열이라는 개념이 도입되었습니다.

Postscript(및 어느 정도 TeX)는 벡터 기반 글꼴인 Type 1 글꼴을 만듭니다. /usr/share/fonts/Type1벡터 글꼴 구성에는 앤티앨리어싱, 굵게, dpi 또는 크기(이번에는 꼭 포인트 기반일 필요는 없음)와 같은 여러 구성 값이 있습니다 .

벡터 기반 글꼴은 확장 가능하며 여러 파일이 필요하지 않습니다.

Xorg는 비트맵과 Type1 글꼴을 사용합니다. XFT를 생성합니다(X FreeType은 Type1을 에뮬레이트하고 확장하는 GPL/BSD 라이브러리인 FreeType에 대한 인터페이스입니다). XFT는 Type1 및 FreeType 글꼴의 사용을 허용할 뿐만 아니라 Adobe 및 Microsoft의 OTF, Apple의 TTF와 같은 다른 형식의 사용도 허용합니다. 또한 XFT를 사용하면 이전 비트맵 글꼴을 Type1 글꼴처럼 보이도록 크기를 조정할 수 있습니다.

다음과 같은 여러 다른 속성힌트또는프롬프트 스타일, 이러한 글꼴의 속성을 정의하기 위해 추가되었습니다.

이들 모두는 의 하위 폴더에서 찾을 수 있습니다 /usr/share/fonts. 그리고 XFT 매개변수는 Xresources.

글꼴 구성

그리고fontconfig 위의 모든 차이점을 처리해야 합니다.. 즉,fontconfig는 다양한 글꼴이 갖는 공통 구문의 속성을 활용하는 방식으로 위의 모든 글꼴 유형을 구성하려고 시도합니다.

비트맵 글꼴에는 다음과 같은 문제가 있습니다.

  • 단일 글꼴에 대한 여러 다른 파일
  • 크기는 포인트 및 픽셀 크기에 의해 제한됩니다.

그러나 벡터 기반 글꼴에도 마찬가지입니다.

  • 특히 여러 매개변수를 사용하는 경우 크기 조정에 시간이 걸립니다.
  • 모든 글꼴 속성이 동일한 방식으로 다양한 글꼴 유형에 영향을 미치는 것은 아닙니다.

두 가지 모두 글꼴 형식이 다양하고 사용자가 집에 자신만의 글꼴을 설치하고 싶어할 수 있다는 문제를 겪고 있습니다. Fontconfig는 이러한 문제를 해결하려고 시도합니다.

fc-query글꼴 파일을 이해하는 글꼴 구성이 무엇인지 알려줍니다. 파일의 속성(예: 비트맵 글꼴)과 사용할 수 있는 속성(벡터 글꼴)을 주목할 가치가 있습니다.

fc-list이는 Fontconfig가 보고 있는 디렉터리에서 어떤 글꼴을 찾을 수 있고 따라서 응용 프로그램에서 사용할 수 있는지 알려주는 방법입니다. 마지막으로 fc-cache글꼴을 쉽게 찾고 애플리케이션에서 사용할 수 있도록 크기를 조정할 수 있도록 글꼴이 색인화됩니다.

반면에, Fontconfig 공유 라이브러리는 가장 흥미로운 부분입니다. 구성 파일( /etc/fonts, ~/.config/fontconfig) 및 글꼴 캐시를 사용하여 미리 준비된 글꼴을 연결된 응용 프로그램에 직접 제공합니다. 대부분의 응용 프로그램은 XFT(따라서 FreeType)를 사용하고 FreeType 라이브러리는 Fontconfig 라이브러리의 호출을 사용하므로 이러한 글꼴의 사용이 보편화되었습니다.

그러나 Xorg에 이전 스타일의 비트맵 글꼴(예: -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u)을 요청하는 프로그램을 컴파일할 수 있으며 호출은 Fontconfig 공유 라이브러리를 거치지 않습니다.

관련 정보