Uvod u članak

Datoteke fontova su strukturirane oko tabela Svaka tablica pohranjuje određenu kategoriju podataka kao što su skice glifa, mapiranje znakova, imenovanje metapodataka ili horizontalne metričke vrijednosti. Razumjeti i pristupiti tim tabelama je od ključne važnosti za zadaće poput analize fontov, uređivanja metadata, osiguranja kvalitete i pretvaranja formata.

Aspose.Font FOSS for Python (aspose-font) daje vam izravni pristup punom skupu OpenType i TrueTyme tabela kroz čist Python API. Biblioteka je objavljena pod MIT licencom s nultim vanjskim ovisnostima, tako da ga možete integrirati u bilo koji projekt bez problema sa licenciranjem.

Ovaj post prolazi kroz ključne klase tabele dostupne u knjižnici od čitanja metapodataka zaglavlja do pregleda podataka o glifima i izmjene zapisa imena ?? sve podržane TtfTableSet kontejner na TtfFont.


Glavne karakteristike

Upisivanje font i pristup tablicama

Svaki font je pun: FontLoader izloži svoje analizirane tabele kroz ttf_tables imovina na TtfFont.-Ne, ne mogu. TtfTableSet objekt pruža tipiran pristup svakoj standardnoj tabeli, plus prljav bajt pristupa putem get_raw() za prilagođene ili ne prepoznate stolove.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap

# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")

Čitanje glavnog stola

U skladu s člankom 1. HeadTable čuva temeljne parametre širom fontova: jedinice po em, revizija, okruženje, datum stvaranja i zastave stila. Ove vrijednosti su ključne za rendering motore i validacije fontov.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head

print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")

Rad s tablicom imena

U skladu s člankom 1. NameTable U njemu se nalaze svi meta-podatak koji ljudi mogu čitati: ime fontove, stil, autorska prava, licenca, dizajner i opis. Možete upitati zapise po nazivu ID, preuzeti lokalizirana imena ili izmijeniti unose za rebranding.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name

# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")

# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
    print(f"  {lang}: {value}")

# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")

Proučavanje CMap tabele

U skladu s člankom 1. CmapTable mapira Unicode kodove na ID-ove glifa. Može sadržavati više podtablica za različite kombinacije platformi i šifriranja. best_subtable() da biste dobili najprikladnije mapiranje za vaš slučaj upotrebe.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap

# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")

# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")

Čitanje OS/2 i horizontalnih metrika

U skladu s člankom 1. Os2Table OS/2 i Windows-specifične metrike, uključujući tipografski uzlazni/ponalazeći, ugrađivanje zastava i klasifikaciju Panose. HheaTable i u članku 1. HmtxTable U ovom slučaju, u skladu s člankom 16. stavkom 1. točkom (a) Uredbe (EU) br. 1071/2013 i Uredbom (EZ) št. 765/2008 mora se primjenjivati:.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea

print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")

print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")

Kerning i Glyph podaci

U skladu s člankom 1. KernTable U tom slučaju, u skladu s člankom 73. stavkom 1. točka (a) Uredbe (EZ) br. GlyfTable sadrži stvarne podatke o skici glifa za TrueType fontove. Također možete koristiti PostTable da riješim imena glifa.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")

# Kerning lookup
kern = font.ttf_tables.kern
if kern:
    pairs = kern.pairs
    print(f"Total kern pairs: {len(pairs)}")
    # Look up a specific pair by glyph IDs
    adjustment = kern.get(36, 57)
    print(f"Kern adjustment: {adjustment}")

# Glyph name from post table
post = font.ttf_tables.post
if post:
    glyph_name = post.glyph_name(0)
    print(f"Glyph 0 name: {glyph_name}")

Brzi početak

pip install aspose-font>=1.0.0
import aspose_font

# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")

# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
    value = name_table.best_name(name_id, ["en"])
    if value:
        print(f"  Name ID {name_id}: {value}")

# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
    gid = subtable.get_gid(ord(char))
    print(f"  '{char}' -> glyph {gid}")

Podržani formati

Format:Proračunska sredstvaČitaj.Pišite.
TTF.ttf
OTF.od
CFF.cff
WOFF.-Ne, ne mogu.
WOFF2.woff2
EOT.-Ne. Ne, ne mogu.
TYPE1.pfb/.pfa

Otvoreni izvor i licenciranje

Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.Slobodno ga možete koristiti, mijenjati i distribuirati u ličnim ili komercijalnim projektima bez ograničenja.


Početak

Srodni resursi