TTF dosyasında hangi unicode kod noktalarının tanımlandığını nasıl öğrenebilirim?


11

Unicode karakterlerin onlar için True Type yazı tipi dosyasında tanımlanan gerçek glifleri olan doğrulama işlemini otomatikleştirmek gerekir. Bunu nasıl yapabilirim? Bir metin düzenleyicide bir .ttf dosyasını açtığımda elde ettiğim sayıları nasıl anlamlandıracağım konusunda bilgi bulamıyorum.

Yanıtlar:


7

Bir python kütüphanesi, fonttools ( pypi ) biraz python komut dosyası ile yapmak için kullanılabilecek buldum .

İşte glif belirtmiş tüm yazı tiplerini listeleyen basit bir komut dosyası:

#!/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)

İlk argüman kod noktasıdır (0x ile ondalık veya hexa), geri kalanı ise bakılacak font dosyalarıdır.

Ben .ttcdosyalar için çalışması için uğraşmak uğraşmadı (bir yerde bazı ekstra parametre gerektirir).

Not: Önce otfinfo aracını denedim, ancak sadece temel çok dilli uçak karakterleri aldım (<= U + FFFF). Python betiği genişletilmiş düzlem karakterlerini bulur.


6

otfinfo umut verici görünüyor:

-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).

Örneğin DejaVuSans-Bold fl ligatürünü (fl) bilir:

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

Bu araç tam olarak ihtiyacım olan şey ama aynı zamanda TrueType yazı tipleri ile çalışmak gibi görünmüyor, sadece OpenType olanlar.
Sanuuu

Ayrıca ttf ile de çalışır. Yukarıdaki örneğime bakın. ( Vikipedi göre ttf özel bir OpenType yazı tipidir.)
michas

Hmm ... otfinfo (2.92) versiyonumun hiç -u seçeneği yok gibi görünüyor. Hangi sürümü kullanıyorsunuz?
Sanuuu

Benim dan "(LCDF typetools) 2,104 otfinfo" kullanılmış texlive pakette .
michas

@Sanuuu, -useçenek görünmüyor --help, ama hala var gibi görünüyor. Ancak (en azından Debian 2.105 derlemesinde) sadece temel düzlemi listeliyor gibi görünüyor (U + FFFF'ye kadar). -gSeçenek genişletilmiş uçakları haberi, ama hepsi yazı tipleri için çalışmalarını yapmaz.
Jan Hudec
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.