Script-specifikus téma betűtípusok kezelése Pythonban Java-n keresztül

Áttekintés

A prezentáció témája különböző betűcsaládokat választhat különböző írásrendszerekhez. Ez lehetővé teszi, hogy a többnyelvű szöveg, amely továbbra is a téma betűtípusait használja, egy egységes betűsémát kövessen, miközben a cirill, arab, japán, grúz, thaana és egyéb írásrendszerekhez megfelelő betűtípusokat alkalmaz.

A téma FontScheme egy fő betűtípus-gyűjteményt tartalmaz, amelyet általában a címsorokhoz használnak, és egy mellékelt betűtípus-gyűjteményt, amelyet a törzsszöveghez használnak. A latin és kelet-ázsiai betűtípus-beállításokon túlmindkét gyűjtemény a Fonts osztályon keresztül a írásrendszer címkéktől a betűcsaládnevekhez térképezi fel a kapcsolatot.

Ez a cikk bemutatja, hogyan lehet megvizsgálni és módosítani ezeket a leképezéseket a prezentáció mester‑témájában, és ellenőrizni, hogy a változások túlélnek‑e egy mentés‑újratöltés ciklust.

Az írásrendszer címkék megértése

A szkript betűtípus módszerek négybetűs BCP 47 írásrendszer alalcímkéket használnak az írásrendszerek azonosításához. Gyakori értékek:

Írásrendszer címke Írásrendszer
Cyrl Cirill
Arab Arab
Hans Egyszerűsített kínai
Jpan Japán
Geor Grúz
Thaa Thaana

Ezek a leképezések a téma betűtípus‑sémához tartoznak, nem pedig egyedi szövegrészletekhez. Egy prezentáció különböző leképezéseket definiálhat a fő és a mellék betűtípus-gyűjteményekhez, és egyes írásrendszerekhez hiányozhatnak a leképezések.

A szkript betűtípus leképezések elérése és vizsgálata

Használja a Presentation.getMasterTheme metódust a prezentáció‑szintű téma eléréséhez. A FontScheme.getMajor és a FontScheme.getMinor metódusok visszaadják a két Fonts gyűjteményt.

A Fonts.getScriptFontMap segítségével lekérhető egy gyűjtemény összes leképezése. Egy adott írásrendszer kereséséhez hívja a Fonts.getScriptFont metódust a megfelelő írásrendszer címkével. A getScriptFont None‑t ad vissza, ha az adott gyűjteményben nincs definiálva a kért leképezés.

Leképezések módosítása és a tartósság ellenőrzése

Használja a Fonts.setScriptFont metódust egy leképezés létrehozásához vagy a jelenlegi betűcsalád lecseréléséhez. A Fonts.removeScriptFont metódussal egy leképezést eltávolíthat.

Az alábbi vég‑től‑végig példa beolvassa az összes meglévő fő és mellék leképezést, megkeresi a japán fő betűtípust, módosítja a cirill fő betűtípust, eltávolítja a thaana mellék leképezést, elmenti a prezentációt, majd újra megnyitja a változások ellenőrzéséhez. A eltávolítási lépést függetleníti a kezdeti témától azáltal, hogy a példa csak akkor hoz létre thaana leképezést, ha még nincs definiálva.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    font_scheme = presentation.getMasterTheme().getFontScheme()
    major_fonts = font_scheme.getMajor()
    minor_fonts = font_scheme.getMinor()

    print("Existing major mappings:")
    major_mappings = major_fonts.getScriptFontMap().iterator()
    while major_mappings.hasNext():
        mapping = major_mappings.next()
        print(f"  {mapping.getKey()}: {mapping.getValue()}")

    print("Existing minor mappings:")
    minor_mappings = minor_fonts.getScriptFontMap().iterator()
    while minor_mappings.hasNext():
        mapping = minor_mappings.next()
        print(f"  {mapping.getKey()}: {mapping.getValue()}")

    japanese_font = major_fonts.getScriptFont("Jpan")
    if japanese_font is None:
        print("No major Japanese font is defined.")
    else:
        print(f"Major Japanese font: {japanese_font}")

    major_fonts.setScriptFont("Cyrl", "Arial")

    if minor_fonts.getScriptFont("Thaa") is None:
        minor_fonts.setScriptFont("Thaa", "Arial")

    minor_fonts.removeScriptFont("Thaa")
    presentation.save("script-font-mappings.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

saved_presentation = Presentation("script-font-mappings.pptx")
try:
    saved_major_fonts = saved_presentation.getMasterTheme().getFontScheme().getMajor()
    saved_minor_fonts = saved_presentation.getMasterTheme().getFontScheme().getMinor()
    saved_cyrillic_font = saved_major_fonts.getScriptFont("Cyrl")
    saved_thaana_font = saved_minor_fonts.getScriptFont("Thaa")

    if saved_cyrillic_font == "Arial":
        print("The Cyrillic mapping was preserved.")
    else:
        print("The Cyrillic mapping was not preserved.")

    if saved_thaana_font is None:
        print("The Thaana mapping removal was preserved.")
    else:
        print("The Thaana mapping still exists.")
finally:
    saved_presentation.dispose()

A validálás ugyanazt a None viselkedést használja, mint egy szokásos lekérdezés: az eltávolítás után a getScriptFont("Thaa") None‑t ad vissza a mellék gyűjteményben.

A téma leképezések megkülönböztetése a többi betűtípus beállítástól

Az írásrendszer‑specifikus téma leképezések részt vesznek a betűtípus‑kiválasztásban, de más problémát oldanak meg, mint a közvetlen szövegformázás, helyettesítés és visszalépés:

Mechanizmus Cél A téma leképezés megváltoztatásának hatása
Az írásrendszer‑specifikus téma betűtípus leképezés Kiválaszt egy fő vagy mellék téma betűtípust egy írásrendszerhez. A szöveg, amely továbbra is a megfelelő téma betűtípust használja, az új leképezett családra térhet át.
Kifejezetten egy szövegrészhez rendelt betűtípus Rögzíti a kért betűcsaládot azon a részen, ahelyett, hogy a témára támaszkodna. A részlet változatlan maradhat, mert a közvetlen formázás felülírja a téma választását.
Betűtípus helyettesítés Lecserél egy kért betűtípust, ha az nem érhető el vagy ha egy helyettesítési szabály érvényesül. A betűtípus lekérdezése után lép fel; nem definiálja újra a téma írásrendszer‑leképezését.
Betűtípus tartalék Olyan glifeket biztosít, amelyeket a kiválasztott betűtípus nem tartalmaz, gyakran specifikus Unicode‑tartományokhoz. Kitölti a hiányzó glif‑lefedettséget; nem módosítja a tárolt téma leképezést.

További információért az utóbbi két mechanizmusról lásd a Font Substitution és a Fallback Fonts oldalakat.

A Presentation.getMasterTheme leképezés módosítása csak azon tartalmat érinti, amelynek a hatékony formázása még a témára támaszkodik. A szöveg örökölhet téma‑felülbírálást egy mester‑, elrendezés‑ vagy diatémából, vagy kifejezetten egy betűtípust használhat. Ellenőrizze ezeket a szinteket, ha a látható eredmény nem a prezentáció‑szintű leképezést követi.

A leképezett betűtípusok elérhetővé tétele és az eredmény validálása

Egy szkript leképezés csak a betűcsalád nevét tárolja; nem telepíti vagy tölti be a megfelelő betűtípus‑fájlt. A következetes megjelenítés és exportálás érdekében minden leképezett betűtípust telepíteni kell a környezetben, vagy az Aspose.Slides‑nek egy egyéni forráson keresztül biztosítani, például a FontsLoader.loadExternalFonts vagy a LoadOptions.getDocumentLevelFontSources használatával. Lásd a Custom Fonts oldalt a rendelkezésre álló betöltési lehetőségekért.

A mentett leképezés ellenőrzése csak azt igazolja, hogy a téma definíciója megmaradt. Nem bizonyítja, hogy a betűtípus elérhető, tartalmazza az összes szükséges glifet, vagy a kívánt elrendezést eredményezi. Készítsen reprezentatív szövegeket minden szükséges írásrendszerhez képként vagy PDF‑ként, és ellenőrizze a kimenetet. Ez felderíti a hiányzó betűtípusokat, a hiányos glif‑lefedettséget, a visszalépési viselkedést és az elrendezési változásokat a prezentáció terjesztése előtt. Lásd a Convert PowerPoint Presentations oldalt a renderelési és exportálási példákért.

GYIK

Miért ad getScriptFont None‑t, ha egy írásrendszer nincs leképezve?

A Fonts.getScriptFont None‑t ad vissza, ha a kért írásrendszer leképezése nincs definiálva az adott fő vagy mellék betűtípus‑gyűjteményben.

A setScriptFont hozzáad egy második leképezést, ha a szkript már létezik?

Nem. A Fonts.setScriptFont létrehozza a leképezést, ha hiányzik, és lecseréli a már meglévő betűcsaládot, ha a szkript címke már jelen van.

Miért nem változott meg egyes szövegek a téma leképezés módosítása után?

A szöveg lehet, hogy kifejezetten egy betűtípust kapott, másik témát örököl egy felülbírálás révén, vagy a renderelés során helyettesítés vagy visszalépés érintette. Egy prezentáció‑szintű szkript leképezés csak azokra a szövegekre hat, amelyek hatékony formázása még a téma betűtípus‑gyűjteményére támaszkodik.

Elég-e a mentés és újra‑megnyitás a többnyelvű kimenet validálásához?

Nem. Az újra‑megnyitás csak a téma adatainak megmaradását ellenőrzi. Emellett rendereljen reprezentatív szöveget minden szükséges írásrendszerből, hogy megerősítse, a leképezett betűtípusok elérhetők és tartalmazzák a szükséges glifeket.