TTF 파일에 정의 된 유니 코드 코드 포인트를 찾는 방법은 무엇입니까?


11

트루 타입 글꼴 파일에서 실제 문자 모양이 정의 된 유니 코드 문자를 확인하는 프로세스를 자동화해야합니다. 어떻게하면 되나요? 텍스트 편집기에서 .ttf 파일을 열 때 얻는 숫자를 이해하는 방법에 대한 정보를 찾을 수 없습니다.

답변:


7

파이썬 라이브러리, fonttools ( pypi )를 발견하여 약간의 파이썬 스크립팅으로 사용할 수 있습니다.

다음은 글리프를 지정한 모든 글꼴을 나열하는 간단한 스크립트입니다.

#!/usr/bin/env python3

from fontTools.ttLib import TTFont
import sys

char = int(sys.argv[1], base=0)

print("Looking for U+%X (%c)" % (char, chr(char)))

for arg in sys.argv[2:]:
    try:
        font = TTFont(arg)

        for cmap in font['cmap'].tables:
            if cmap.isUnicode():
                if char in cmap.cmap:
                    print("Found in", arg)
                    break
    except Exception as e:
        print("Failed to read", arg)
        print(e)

첫 번째 인수는 코드 포인트 (십진수 또는 0x의 16 진수)이고 나머지는 찾아 볼 글꼴 파일입니다.

.ttc파일에서 작동하도록 신경 쓰지 않았습니다 (어딘가에 추가 매개 변수가 필요함).

참고 : 나는 먼저 otfinfo 도구를 시도했지만 기본 다국어 비행기 문자 (<= U + FFFF) 만 얻었습니다. 파이썬 스크립트는 확장 평면 문자를 확인합니다.


6

otfinfo 는 유망한 것으로 보입니다.

-u, --unicode
  Print each Unicode code point supported by the font, followed by
  the glyph number representing that code point (and, if present,
  the name of the corresponding glyph).

예를 들어 DejaVuSans-Bold는 fl ligature (FL)에 대해 알고 있습니다.

$ otfinfo -u /usr/share/fonts/TTF/DejaVuSans-Bold.ttf |grep ^uniFB02
uniFB02 4899 fl

이 도구는 꼭 필요한 도구이지만 TrueType 글꼴에서는 작동하지 않으며 OpenType 글꼴에서만 작동하는 것 같습니다.
Sanuuu

ttf에서도 작동합니다. 위의 예를 참조하십시오. ( wikipedia 에 따르면 ttf는 특별한 유형의 OpenType 글꼴입니다.)
michas

흠 ... 내 버전의 otfinfo (2.92)에는 -u 옵션이 전혀없는 것 같습니다. 어떤 버전을 사용하고 있습니까?
Sanuuu

내 texlive 패키지 에서 "otfinfo (LCDF typetools) 2.104"를 사용했습니다 .
michas

@Sanuuu의 -u옵션은에 나타나지 --help않지만 여전히 존재하는 것 같습니다. 그러나 (적어도 데비안 2.105 빌드에서는) 기본 비행기 (U + FFFF까지) 만 나열하는 것 같습니다. 이 -g옵션은 확장 평면에 대해 알고 있지만 모든 글꼴에서 작동하지는 않습니다.
Jan Hudec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.