Szkript-specifikus téma betűtípusok kezelése PHP-ben
Áttekintés
A prezentáció témája különböző betűtípus‑családokat választhat különböző írásrendszerekhez. Ez lehetővé teszi, hogy a többnyelvű szöveg, amely továbbra is téma‑betűtípusokat használ, egy koordinált betűtípus‑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, valamint egy mellék betűtípus‑gyűjteményt, amelyet a törzsszöveghez használnak. A Latin‑ és Kelet‑Ázsiai betűtípus‑beállításaikon kívül mindkét Fonts gyűjtemény leképezéseket biztosít az írásrendszer‑címkék és a betűtípus‑családnevek között.
Ez a cikk bemutatja, hogyan lehet ezeket a leképezéseket megvizsgálni és módosítani a prezentáció mester‑témájában, valamint ellenőrizni, hogy a változások megmaradnak‑e egy mentés‑újratöltés ciklus után.
Szkriptcímkék megértése
A szkript‑betűtípus‑módszerek négybetűs BCP 47 szkript‑alcímkéket használnak az írásrendszerek azonosításához. Gyakori értékek:
| Szkriptcí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ájához tartoznak, nem egyedi szövegrészekhez. Egy prezentáció különböző leképezéseket definiálhat a fő és a mellék gyűjteményekhez, illetve elhagyhat leképezéseket egyes szkriptekhez.
Szkriptbetű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 MasterTheme::getFontScheme, a FontScheme::getMajor és a FontScheme::getMinor módszerek hozzáférést biztosítanak a két Fonts gyűjteményhez.
Hívja a Fonts::getScriptFontMap metódust az összes leképezés lekéréséhez egy gyűjteményből. Egy írásrendszer kereséséhez hívja a Fonts::getScriptFont‑t a szkriptcímkével. A Fonts::getScriptFont null‑t ad vissza, ha az adott gyűjtemény nem definiálja a kért leképezést.
Leképezések módosítása és tartósság ellenőrzése
Használja a Fonts::setScriptFont‑t új leképezés létrehozásához vagy a meglévő betűtípus‑család felülírásához. A Fonts::removeScriptFont‑t a leképezés eltávolításához.
Az alábbi vég‑vég példakód beolvassa az összes létező 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 annak ellenőrzésére, hogy mindkét változás megtartásra került‑e. A törlés lépését függetlené tesszük a kezdeti témától, a kód csak akkor hoz létre thaana leképezést, ha az még nincs definiálva.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
$fontScheme = $presentation->getMasterTheme()->getFontScheme();
$majorFonts = $fontScheme->getMajor();
$minorFonts = $fontScheme->getMinor();
echo "Existing major mappings:" . PHP_EOL;
$majorMappings = $majorFonts->getScriptFontMap()->iterator();
while (java_values($majorMappings->hasNext())) {
$mapping = $majorMappings->next();
echo " " . java_values($mapping->getKey()) . ": " . java_values($mapping->getValue()) . PHP_EOL;
}
echo "Existing minor mappings:" . PHP_EOL;
$minorMappings = $minorFonts->getScriptFontMap()->iterator();
while (java_values($minorMappings->hasNext())) {
$mapping = $minorMappings->next();
echo " " . java_values($mapping->getKey()) . ": " . java_values($mapping->getValue()) . PHP_EOL;
}
$japaneseFont = $majorFonts->getScriptFont("Jpan");
if (java_is_null($japaneseFont)) {
echo "No major Japanese font is defined." . PHP_EOL;
} else {
echo "Major Japanese font: " . java_values($japaneseFont) . PHP_EOL;
}
$majorFonts->setScriptFont("Cyrl", "Arial");
if (java_is_null($minorFonts->getScriptFont("Thaa"))) {
$minorFonts->setScriptFont("Thaa", "Arial");
}
$minorFonts->removeScriptFont("Thaa");
$presentation->save("script-font-mappings.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
$savedPresentation = new Presentation("script-font-mappings.pptx");
try {
$savedMajorFonts = $savedPresentation->getMasterTheme()->getFontScheme()->getMajor();
$savedMinorFonts = $savedPresentation->getMasterTheme()->getFontScheme()->getMinor();
$savedCyrillicFont = $savedMajorFonts->getScriptFont("Cyrl");
$savedThaanaFont = $savedMinorFonts->getScriptFont("Thaa");
if (!java_is_null($savedCyrillicFont) && java_values($savedCyrillicFont) === "Arial") {
echo "The Cyrillic mapping was preserved." . PHP_EOL;
} else {
echo "The Cyrillic mapping was not preserved." . PHP_EOL;
}
if (java_is_null($savedThaanaFont)) {
echo "The Thaana mapping removal was preserved." . PHP_EOL;
} else {
echo "The Thaana mapping still exists." . PHP_EOL;
}
} finally {
$savedPresentation->dispose();
}
Az ellenőrzés ugyanazt a null viselkedést használja, mint egy szokásos lekérdezés: a törlés mentése után a Fonts::getScriptFont("Thaa") null‑t ad a mellék gyűjteményre.
Témaleképezések megkülönböztetése egyéb betűtípus‑beállításoktól
A szkript‑specifikus téma leképezések részt vesznek a betűtípus‑kiválasztásban, de más problémákat oldanak meg, mint a közvetlen szövegformázás, helyettesítés és tartalék:
| Mechanizmus | Cél | A téma leképezés módosításának hatása |
|---|---|---|
| Szkript‑specifikus téma betűtípus leképezés | Kiválaszt egy fő vagy mellék téma betűtípust egy írásrendszerhez. | Az a szöveg, amely még mindig a megfelelő téma betűtípust használja, az új leképezett családra fordítható. |
| Betűtípus, amely kifejezetten egy szövegrészhez van hozzárendelve | Rögzíti a kért betűtípus‑családot azon részre a téma helyett. | A rész változatlan maradhat, mert közvetlen formázása felülírja a téma választását. |
| Betűtípus helyettesítés | Kicseré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 kérés után lép működésbe; nem definiálja újra a téma szkript leképezését. |
| Betűtípus tartalék | Biztosítja a kiválasztott betűtípusban hiányzó glifeket, gyakran meghatározott Unicode tartományokhoz. | Kitölti a hiányzó glifek lefedettségét; nem módosítja a tárolt téma leképezést. |
További információért a két utolsó mechanizmusról lásd a Font Substitution és a Fallback Fonts oldalakat.
A Presentation::getMasterTheme‑ben történő leképezés‑módosítás csak azon tartalmakra hat, amelyek hatékony formázása még mindig az adott témára támaszkodik. A szöveg szintén örökölhet téma‑felülírást egy mestertől, elrendezéstől vagy diától, vagy kifejezetten hozzárendelt betűtípust használhat. Vizsgálja meg ezeket a szinteket, ha a látható eredmény nem a prezentáció‑szintű leképezésnek megfelelő.
Leképezett betűtípusok elérhetővé tétele és az eredmény ellenőrzése
Egy szkript‑leképezés csak egy betűtípus‑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éshez és exportáláshoz minden leképezett betűtípust telepíteni kell a környezetben, vagy elérhetővé kell tenni az Aspose.Slides számára egy egyéni forráson keresztül, például a FontsLoader::loadExternalFonts vagy a LoadOptions::getDocumentLevelFontSources segítségével. Az elérhető betöltési lehetőségekért lásd a Custom Fonts oldalt.
A mentett leképezés ellenőrzése csak azt igazolja, hogy a téma‑definíció 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. Rendereljen reprezentatív szöveget minden szükséges írásrendszerhez képben vagy PDF‑ben, és ellenőrizze a kimenetet. Ez felfedi a hiányzó betűtípusokat, a nem teljes glif‑lefedettséget, a tartalék‑viselkedést és az elrendezés‑változásokat, mielőtt a prezentációt terjesztené. Lásd a Convert PowerPoint Presentations oldalt a renderelési és exportálási példákért.
GYIK
Mi a visszatérési értéke a Fonts::getScriptFont‑nak, ha egy szkript nincs leképezve?
[Fonts::getScriptFont](https://reference.aspose.com/slides/hu/php-java/aspose.slides/fonts/#getScriptFont) null‑t ad vissza, ha a kért szkript leképezés nincs definiálva az adott fő vagy mellék betűtípus‑gyűjteményben.
A Fonts::setScriptFont hozzáad egy második leképezést, ha a szkript már létezik?
Nem. [Fonts::setScriptFont](https://reference.aspose.com/slides/hu/php-java/aspose.slides/fonts/#setScriptFont) létrehozza a leképezést, ha hiányzik, és felülírja a leképezett betűtípus‑családot, ha a megfelelő szkriptcímke már jelen van.
Miért nem változott meg egyes szövegek, amikor a téma leképezését módosítottam?
A szöveg lehet, hogy kifejezetten egy betűtípust kapott, örököl egy másik témát felülírás révén, vagy a renderelés során helyettesítés vagy tartalék befolyásolja. Egy prezentáció‑szintű szkript‑leképezés csak azokra a szövegekre hat, amelyek hatékony formázása továbbra is arra a téma‑betűtípus‑gyűjteményre hivatkozik.
Elég-e a mentés és újra megnyitás a többnyelvű kimenet ellenőrzéséhez?
Nem. Az újra megnyitás csak a téma‑adatok tartósságát ellenőrzi. Emellett rendereljen reprezentatív szöveget minden szükséges írásrendszerre, hogy megerősítse, hogy a leképezett betűtípusok elérhetők és tartalmazzák a szükséges glifeket.