.NET-ben a szkript-specifikus téma betűkészletek kezelése
Á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űkészleteit használja, egy koordinált betűtípus‑sémát kövessen, miközben megfelelő betűkészleteket használ a cirill, arab, japán, grúz, thaana és egyéb írásrendszerekhez.
A téma IFontScheme egy fő betűkészlet‑gyűjteményt tartalmaz, amelyet általában a címsorokhoz használnak, és egy mellék betűkészlet‑gyűjteményt, amelyet általában a törzsszöveghez használnak. A latin és kelet‑ázsiai betűkészlet‑tulajdonságaik mellett mindkét gyűjtemény térképeket (mapping) tesz elérhetővé az írásrendszer‑címkék és a betűcsalád‑nevek között a IFonts felületen keresztül.
Ez a cikk bemutatja, hogyan lehet megvizsgálni és módosítani ezeket a leképezéseket a prezentáció master‑témájában, valamint ellenőrizni, hogy a változások megmaradnak‑e egy mentés‑ és újratöltés‑ciklus után.
A szkriptcímkék megértése
A szkriptbetűkészlet‑módszerek négybetűs BCP 47 szkript‑alalcímkéket használnak az írásrendszerek azonosítására. A gyakori értékek a következők:
| 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űkészlet‑sémához tartoznak, nem az egyes szövegrészekhez. Egy prezentáció meghatározhat különböző leképezéseket a fő és a mellék gyűjteményekhez, és bizonyos szkriptekhez kihagyhatja a leképezést.
A szkriptbetűk leképezéseinek elérése és vizsgálata
Használja a Presentation.MasterTheme elemet a prezentáció szintű téma eléréséhez. A FontScheme.Major és a FontScheme.Minor tulajdonságok adják vissza a két IFonts gyűjteményt.
Hívja meg a IFonts.GetScriptFontMap metódust, hogy lekérje az összes leképezést egy gyűjteményből. Egy írásrendszer kereséséhez hívja meg a IFonts.GetScriptFont metódust a szkriptcímkével. A GetScriptFont null értéket 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 a tartósság ellenőrzése
Használja a IFonts.SetScriptFont metódust egy leképezés létrehozásához vagy a jelenlegi betűcsalád helyettesítéséhez. A IFonts.RemoveScriptFont segítségével eltávolíthat egy leképezést.
Az alábbi végponttól‑végpontig terjedő példa beolvassa az összes meglévő fő és mellék leképezést, lekéri 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, menti a prezentációt, és újranyitja azt a változások ellenőrzéséhez. Az eltávolítási lépés függetlené tételéhez a kiinduló témától, a példa csak akkor hoz létre thaana leképezést, ha az még nincs definiálva.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
static void PrintScriptFontMap(string label, IFonts fonts)
{
Console.WriteLine(label);
foreach (var mapping in fonts.GetScriptFontMap())
{
Console.WriteLine($" {mapping.Key}: {mapping.Value}");
}
}
using var presentation = new Presentation();
var fontScheme = presentation.MasterTheme.FontScheme;
var majorFonts = fontScheme.Major;
var minorFonts = fontScheme.Minor;
PrintScriptFontMap("Existing major mappings:", majorFonts);
PrintScriptFontMap("Existing minor mappings:", minorFonts);
var japaneseFont = majorFonts.GetScriptFont("Jpan");
if (japaneseFont is null)
{
Console.WriteLine("No major Japanese font is defined.");
}
else
{
Console.WriteLine($"Major Japanese font: {japaneseFont}");
}
majorFonts.SetScriptFont("Cyrl", "Arial");
if (minorFonts.GetScriptFont("Thaa") is null)
{
minorFonts.SetScriptFont("Thaa", "Arial");
}
minorFonts.RemoveScriptFont("Thaa");
presentation.Save("script-font-mappings.pptx", SaveFormat.Pptx);
using var savedPresentation = new Presentation("script-font-mappings.pptx");
var savedMajorFonts = savedPresentation.MasterTheme.FontScheme.Major;
var savedMinorFonts = savedPresentation.MasterTheme.FontScheme.Minor;
var savedCyrillicFont = savedMajorFonts.GetScriptFont("Cyrl");
var savedThaanaFont = savedMinorFonts.GetScriptFont("Thaa");
if (savedCyrillicFont == "Arial")
{
Console.WriteLine("The Cyrillic mapping was preserved.");
}
else
{
Console.WriteLine("The Cyrillic mapping was not preserved.");
}
if (savedThaanaFont is null)
{
Console.WriteLine("The Thaana mapping removal was preserved.");
}
else
{
Console.WriteLine("The Thaana mapping still exists.");
}
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 GetScriptFont("Thaa") null értéket ad vissza a mellék gyűjteményre.
A téma leképezéseinek megkülönböztetése más betűkészlet‑beállításoktól
A szkript‑specifikus téma leképezések részt vesznek a betűkészlet‑kiválasztásban, de más problémát oldanak meg, mint a közvetlen szövegformázás, helyettesítés és visszatérő (fallback) megoldás:
| Mechanizmus | Cél | A téma leképezés módosításának hatása |
|---|---|---|
| Szkript‑specifikus téma betűkészlet‑leképezés | Kiválaszt egy fő vagy mellék téma‑betűkészletet egy írásrendszerhez. | A szöveg, amely továbbra is a megfelelő téma‑betűkészletet használja, az új leképezett családra vonatkozhat. |
| Közvetlenül a szövegrészhez hozzárendelt betűkészlet | Az adott részre rögzíti a kért betűcsaládot a téma helyett. | A rész változatlan maradhat, mivel a közvetlen formázás felülírja a téma választását. |
| Betűkészlet‑helyettesítés | Lecseréli a kért betűkészletet, ha az nem elérhető, vagy ha egy helyettesítési szabály érvényesül. | A kérést követően működik; nem definiálja újra a téma szkript‑leképezését. |
| Betűkészlet‑visszatérés | Olyan glyph-eket biztosít, amelyeket a kiválasztott betűkészlet nem tartalmaz, gyakran bizonyos Unicode‑tartományokhoz. | Kitölti a hiányzó glyph‑lefedettséget; nem módosítja a tárolt téma leképezést. |
További információért az utolsó két mechanizmusról lásd a Betűkészlet‑helyettesítés és a Visszatérő betűkészletek részeket.
A Presentation.MasterTheme leképezésének módosítása csak azokra a tartalmakra van hatással, amelyek hatékony formázása még mindig attól a témától függ. A szöveg helyette örökölhet téma‑felülírást egy master‑től, elrendezéstől vagy diától, vagy használhat közvetlenül hozzárendelt betűkészletet. Vizsgálja meg ezeket a szinteket, ha a látható eredmény nem követi a prezentáció‑szintű leképezést.
A leképezett betűkészletek elérhetővé tétele és az eredmény ellenőrzése
A szkript leképezés csak a betűcsalád nevét tárolja; nem telepíti vagy tölti be a megfelelő betűkészlet‑fájlt. Az egységes megjelenítéshez és exportáláshoz minden leképezett betűkészletet telepíteni kell a környezetben, vagy átadni az Aspose.Slides‑nek egy egyedi forráson keresztül, például a FontsLoader.LoadExternalFonts vagy a LoadOptions.DocumentLevelFontSources segítségével. A rendelkezésre álló betöltési lehetőségekért lásd a Egyedi betűkészletek oldalt.
A mentett leképezés ellenőrzése csak azt erősíti meg, hogy a téma definíciója megmaradt. Nem bizonyítja, hogy a betűkészlet elérhető, tartalmazza az összes szükséges glyph‑et, vagy a kívánt elrendezést hozza létre. Generáljon reprezentatív szöveget minden szükséges írásrendszerhez egy képre vagy PDF‑re, és vizsgálja meg a kimenetet. Így felderíthetőek a hiányzó betűkészletek, a nem teljes glyph‑lefedettség, a visszatérési viselkedés és az elrendezés‑változások, mielőtt a prezentációt terjesztenék. A renderelési és exportálási példákért lásd a PowerPoint‑prezentációk konvertálása oldalt.
GYIK
Mi a GetScriptFont visszatérési értéke, ha egy szkript nincs leképezve?
IFonts.GetScriptFont null értéket ad vissza, ha a kért szkript leképezés nincs definiálva az adott fő vagy mellék betűkészlet‑gyűjteményben.
A SetScriptFont hozzáad egy második leképezést, ha a szkript már létezik?
Nem. A IFonts.SetScriptFont akkor hoz létre leképezést, ha hiányzik, és a már meglévő szkriptcímke esetén felülírja a leképezett betűcsaládot.
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 közvetlenül hozzárendelt betűkészlettel rendelkezik, egy felülíráson keresztül másik témát örököl, vagy a renderelés során helyettesítés vagy visszatérés befolyásolja. Egy prezentáció‑szintű szkript leképezés csak azokra a szövegekre van hatással, amelyek hatékony formázása még mindig az adott téma betűkészlet‑gyűjteményre hivatkozik.
Elég a mentés és újranyitás a többnyelvű kimenet ellenőrzéséhez?
Nem. Az újranyitás csak a téma adatainak megmaradását ellenőrzi. Emellett generáljon reprezentatív szöveget minden szükséges írásrendszerből, hogy megerősítse, hogy a leképezett betűkészletek elérhetők és tartalmazzák a szükséges glyph‑eket.