FreeType, Fontconfig 및 Xft의 관계는 무엇입니까?

FreeType, Fontconfig 및 Xft의 관계는 무엇입니까?

저는 방금 Linux에서 글꼴이 어떻게 작동하는지 연구하기 시작했습니다. 지금까지 나는 Linux 글꼴 시스템이 다음으로 구성되어 있다는 것을 알고 있습니다.

  • FreeType은 벡터 기반 텍스트를 비트맵 기반 텍스트로 래스터화하기 위한 래스터라이저입니다.
  • 운영 체제 내에서 글꼴을 관리하고 위치를 지정하기 위한 라이브러리인 Fontconfig입니다.
  • Xft는 X Windows 시스템 등에서 원하는 출력을 표시하는 데 사용됩니다.

(틀렸다면 정정해주세요.)

이 세 가지 사이에 직접적인 관계가 있습니까? 워크플로우는 무엇입니까? 그리고 어떤 상황에서 이러한 시스템 라이브러리가 호출됩니까?

답변1

이들의 관계는 다음과 같습니다(사용됨 ldd).

  • Xftfontconfig(무엇보다도) 라이브러리와 라이브러리 에 의존하는 라이브러리입니다 freetype.
  • fontconfig프로그램, 라이브러리, 데이터의 집합입니다. 해당 라이브러리는 라이브러리에 의존합니다 freetype.
  • freetype다른 두 라이브러리에 의존하지 않는 라이브러리입니다.

예를 들어:

$ ldd /usr/lib/x86_64-linux-gnu/libXft.so.2.3.1
        linux-vdso.so.1 =>  (0x00007fffb3df7000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f40ea07a000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f40e9ddb000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f40e9bd1000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f40e9896000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40e9509000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f40e92f2000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f40e90c8000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f40e8ea8000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f40e8ca4000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f40ea4c6000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f40e8aa1000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f40e889c000)

일부 응용 프로그램(예: xterm) Xft은 MIT 라이센스를 사용하는 를 사용합니다. libpango라이센스 문제 외에 다른 사람의 사용(일반적으로 GPL 라이센스) .팡고, 해당 라이브러리 종속성은 두 배나 높습니다 Xft.

fontconfig사용된 기호를 확인하세요 Xft.

FcCharSetCopy
FcCharSetCount
FcCharSetDestroy
FcCharSetHasChar
FcConfigGetBlanks
FcConfigSubstitute
FcDefaultSubstitute
FcFontList
FcFontMatch
FcFreeTypeCharIndex
FcFreeTypeCharSet
FcInit
...
FcPatternPrint  
FcPatternVaBuild  
FcStrCmpIgnoreCase
FcUtf16ToUcs4
FcUtf8ToUcs4

그리고 다음에서 freetype:

FT_Done_Face
FT_GlyphSlot_Embolden
FT_Init_FreeType
FT_Library_SetLcdFilter
FT_Load_Glyph
FT_New_Face
FT_Render_Glyph
FT_Set_Char_Size
FT_Set_Transform
FT_Vector_Transform

Xft위치 지정 에 사용된 글꼴을 fontconfig기준으로 볼 수 있습니다 .무늬이지만 freetype실제로는 다음 용도로 사용됩니다.,전시하다또는조정(줌 등) 글꼴.

fontconfigfreetype글꼴에 대한 정보(전체 크기, 글리프 수 등)를 얻으 려면 다양한 호출을 사용하십시오 .

FT_Done_Face
FT_Done_FreeType
FT_Get_BDF_Property
FT_Get_Char_Index
FT_Get_First_Char
FT_Get_Glyph_Name
FT_Get_Next_Char
FT_Get_PS_Font_Info
FT_Get_Sfnt_Name
FT_Get_Sfnt_Name_Count
FT_Get_Sfnt_Table
FT_Get_X11_Font_Format
FT_Has_PS_Glyph_Names
FT_Init_FreeType
FT_Load_Glyph
FT_Load_Sfnt_Table
FT_New_Face
FT_Select_Charmap
FT_Select_Size

아니요 freetype, fontconfig정보 없음:fontconfig 정리하다유익하지만 불완전함원천정보 그 자체.

관련 정보