Dostupnost a nahrazení písma
Contents
[
Hide
]
Text v dokumentu lze formátovat pomocí různých písem, například Arial, Times New Roman, Verdana a dalších. Když Aspose.Words vykreslí dokument, pokusí se vybrat písma zadaná v dokumentu.
Existují však situace, kdy nelze najít přesné písmo a Aspose.Words jej místo toho musí nahradit podobným písmem. Aspose.Words vybere písmo podle následujícího postupu:
- Aspose.Words se pokusí najít písmo mezi dostupnými zdroji písma s přesným názvem písma.
- Aspose.Words se pokusí najít požadované písmo mezi písmy vloženými do původního dokumentu. Některé formáty dokumentů, například DOCX, mohou obsahovat vložená písma.
- Pokud Aspose.Words není schopen najít požadované písmo s přesnou shodou názvu a vlastnost AltName definovanou pro toto písmo, pak Aspose.Words najde písmo definované pomocí AltName z třídy FontInfo, která určuje informace o Písmu.
- Pokud Aspose.Words není schopen najít definované písmo a AltName není také definováno, použijí se pravidla nahrazování písem jeden po druhém, jak je popsáno níže (když je nalezena příslušná náhrada, proces nahrazování písem se zastaví a další krok není proveden):
- Aspose.Words se pokusí použít nastavení písma OS, pokud jsou k dispozici, pomocí nástroje
FontConfig
. Tato funkce, která neníWindows, musí být použita s FontConfig kompatibilním OS. Téměř každý unixový OS již má knihovnuFontConfig
, která je navržena tak, aby poskytovala konfiguraci, přizpůsobení a přístup k aplikacím v celém systému. V opačném případě může uživatel tuto knihovnu snadno nainstalovat.
Aspose.Words ví, jak dotazovat data a interpretovat výsledky FontConfig pro své vlastní účely. Ve výchozím nastavení je nástrojFontConfig
zakázán. Můžete jej povolit následujícím způsobem:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- Dalším krokem je jednoduchý, ale neuvěřitelně výkonný mechanismus zvaný TableSubstitutionRule. Ve výchozím nastavení je tato funkce aktivní a dostupná pro všechny OS. Aspose.Words používá XML tabulky, které definují základní pravidla substituce pro různé OS. Podle pravidla nahrazení tabulky bude použit seznam názvů náhradních písem.
XMLOriginalFont - písmo, které má být nahrazeno, SubstituteFonts - seznam substitučních variant oddělených čárkou. První dostupné písmo se používá k výměně.<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
Hlavním rysem tohoto pravidla je schopnost načíst vlastní substituční tabulky, jak je znázorněno v následujícím příkladu:
C++Jako základ můžete vzít existující tabulku ze sklenice nebo ji programově uložit následujícím způsobem:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++Navzdory flexibilitě tohoto mechanismu existují případy, kdy je lepší jej deaktivovat, jak je uvedeno níže:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- Pravidlo nahrazení FontInfo se použije, pokud pravidlo nahrazení tabulky nemůže najít písmo. Tento mechanismus je ve výchozím nastavení povolen. Aspose.Words najde nejvhodnější písmo podle informací o Písmu obsažených v konkrétním dokumentu. Tyto informace lze získat z třídy FontInfo, Jak je uvedeno níže:
C++Uživatelé nemohou zasahovat do pracovního postupu této funkce, pokud se nerozhodnou ji deaktivovat v případě neuspokojivých výsledků:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++Pokud FontInfo není k dispozici pro chybějící písmo, proces se zastaví.fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
- DefaultFont substituční pravidlo bude použito v případě, že substituce
FontInfo
také selhala. Toto pravidlo je také ve výchozím nastavení povoleno. Podle tohoto pravidla se Aspose.Words pokusí použít výchozí písmo uvedené ve vlastnosti DefaultFontName. Pokud si uživatel nevybral své vlastní výchozí písmo, použije se jako výchozí písmo" Times New Roman". Toto pravidlo lze deaktivovat, jak je uvedeno níže:
C++Chcete-li zkontrolovat aktuální výchozí písmo, použijte:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++Chcete-li nastavit vlastní možnost výměny, použijte:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Words se pokusí použít nastavení písma OS, pokud jsou k dispozici, pomocí nástroje
- Pokud Aspose.Words není schopen provést nahrazení písma, pokusí se získat první dostupné písmo z dostupných zdrojů písma.
- A konečně, pokud Aspose.Words nemůže najít žádná písma mezi dostupnými zdroji písem, vykreslí dokument pomocí bezplatného písma Fanwood, které je vloženo do sestavy Aspose.Words.
Pokud je k dispozici FontInfo, FontInfo substitution rule vždy vyřeší písmo a přepíše výchozí pravidlo písma. Pokud chcete použít výchozí pravidlo písma, měli byste zakázat FontInfo substitution rule. Všimněte si, že FontConfig substitution rule ve většině případů vyřeší písmo, a tím přepíše všechna ostatní pravidla.