2013-04-09 6 views
9

, 나는 하나 하나 찾아 싶습니다데비안 기반 시스템에서 글꼴에 글리프가있는 유니 코드 코드 포인트를 어떻게 찾을 수 있습니까? 데비안 기반 시스템에서 스크립트 언어 (파이썬이나 루비 말)에서

  1. 를 모든 유니 코드 특정 글꼴
  2. 모든 글리프를 가지고 코드 포인트 특정 유니 코드 문자 모양이 글꼴은

코드 포인트 (물론 1 또는 2 유도 할 수있다 양식을 다른, 그래서 어떤이 좋은 것 쉽습니다.) 나는 과거에 이런 짓을했는지 실행하여 :

fc-list : file charset 

... this code from fontconfig 을 기반으로 각 줄의 끝에서 출력을 구문 분석하지만이 작업을 수행하는 데 훨씬 간단한 방법이 있어야한다고 생각합니다.

(I는이 질문에 대한 권리 StackExchange 사이트입니다 완전히 모르겠지만, 프로그래밍 사용할 수있는 대답을 찾고 있어요.)

+0

"더 간단한 방법이 있어야합니다"? 얼마나 많은 글꼴 형식이 있는지 알고 계십니까? 그리고 그들 모두를 처리 할 수 ​​있기를 원합니까?! –

+0

@Kerrek SB : 물론 다양한 글꼴 형식이 있다는 것을 알고 있습니다. 그러나 우리는이를 다루는 라이브러리를 가지고 있습니다. 예를 들어 제가 질문에 제시 한 fontconfig 명령은 여러 가지 형식의 글꼴. –

+1

관련 항목 : http://stackoverflow.com/questions/4458696/finding-out-what-characters-a-font-supports – leonbloy

답변

6

내가 FreeType 2 language bindings 중 하나를 시도 할 것입니다. 여기 Font::FreeType를 사용하여 글꼴의 유니 코드 코드 포인트를 나열 펄 솔루션입니다 :

use Font::FreeType; 
Font::FreeType->new->face('DejaVuSans.ttf')->foreach_char(sub { 
    printf("%04X\n", $_->char_code); 
}); 
+0

+1 감사합니다. 매우 도움이됩니다. 다른 답변이있을 경우를 대비하여 '수락'을하기 전에 조금 기다릴 것입니다. –

+1

대체 왜곡과 같이 개인 사용 영역에 할당 된 글리프를 인식하지 않는 이유는 무엇입니까? – tchrist

+0

아니요.하지만 Perl 바인딩에 뿌리를 둔 문제는 아닙니다. freetype2 소스 코드를 한눈에 보면 아마도 [find_unicode_charmap'] (http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/base/ftobjs.c#n973)가 선택할 수 있습니다. 잘못된 charmap입니까? – nwellnhof

1

는 최근 TTX/FontTools를 사용하여 TTF에서 glypths에 유니 코드 코드 포인트의 매핑을 나열했습니다. 이 도구는 Python으로 작성되었으므로 게시물의 Python 태그와 일치합니다. 명령

ttx -t cmap foo.ttf 

은 다양한 환경 및 인코딩을 위해, 그 매핑을 설명하는 XML 파일 foo.ttx을 생성합니다. 예 : 플랫폼 및 인코딩 식별자가 실제로 무엇을 의미하는지에 대한 설명은 this reference을 참조하십시오. 필자는 패키지를 명령 줄 도구와 함께 라이브러리로 사용할 수 있다고 생각하지만 거기에는 경험이 없습니다.