2016-07-07 6 views
0

, 당신은 vips_text과 같은 것을 할 :Golang vips : 사용자 정의 truetype 글꼴로 텍스트를 렌더링하는 방법은 무엇입니까? 우리는 텍스트에게 VIP를 이미지를 렌더링 할 때

import "C" 
    var textImage *C.VipsImage 
    cText := C.CString("Some text") 
    cFont := C.CString("Arial 12px") 
    C.cgo_vips_text(&textImage, cText, cFont) 

그러나 여기, Arial 12px는 fontconfig 라이브러리 문자열 이름이고 시스템이 설치된이 글꼴이 있다고 가정합니다.

프로그램에서 사용자 정의 TrueType 글꼴 파일 (예 : Roboto.ttf)을 사용하게하려면 어떻게해야합니까?

cFont := C.CString("Roboto.ttf") 

아마 작동하지 않습니다 시도

.

우리는 Roboto.ttf 파일을 시스템 디렉토리에 넣을 수 있습니다. 예를 들어 Ubuntu에서는 파일을 /usr/share/fonts/truetype에 넣을 수 있습니다. 그러나 코드는이 글꼴이 존재한다는 가정하에 컴퓨터 독립적 인 프로그램을 작성하지 않습니다. 그래서 우리가 실행 파일을 폰트 파일과 함께 보낼 수 있도록 더 좋은 방법이 있는지 궁금합니다.

답변

1

vips는 표준 fontconfig 글꼴 이름을 사용하므로 사용자 정의 글꼴을 검색 경로에 추가하려면 fontconfig를 설정해야합니다.

From the manual 새 글꼴을 가리 키도록 환경 변수 XDG_CONFIG_HOME을 설정 한 다음 해당 글꼴을 Roboto 48pt (예 :)으로 지정하는 것처럼 보입니다.

명령 줄에서 쉽게 테스트 할 수 있습니다. 시도해보십시오.

$ fc-match "Roboto" 
Roboto-Regular.ttf: "Roboto" "Regular" 
$ vips text x2.png "hello" --font "Roboto 48px" 
$ vips text x.png "hello" --font "Arial 48px" 
$ eog x.png x2.png 

두 개의 다른 이미지가 표시되는지 확인하십시오.

+0

env 변수를 지적 해 주셔서 감사합니다. 나는이 링크를 발견했다 : http://superuser.com/questions/365847/where-should-the-xdg-config-home-variable-be-defined. 그래서 디폴트'XDG_CONFIG_HOME' 값은'$ HOME/.config'이고, 그것은 ttf 파일을 저장해야하는 곳입니다. –