Upřesněte pravdu Umístění písma typu

Toto téma popisuje výchozí chování Aspose.Words když hledá písma TrueType, včetně specifických rozdílů operačního systému, a ukazuje, jak určit uživatelské zdroje písma.

FontSourceBase třída se používá k určení různých zdrojů písma. Existuje několik implementací FontSourceBase třída:

Podrobnosti o provádění některých tříd jsou vysvětleny níže.

Načíst písma ze systému

Tam je speciální SystemFontSource třída, která se vždy používá ve výchozím nastavení. Představuje všechna nainstalovaná písma TrueType. Proto je možné vytvořit seznam zdrojů s SystemFontSource a jakékoli jiné požadované zdroje:

Jediný případ SystemFontSource třída je defaultně definována v FontSettings. Na různých operačních systémech mohou být písma umístěna na různých místech. Nicméně FontSettings příklad pro každý dokument není optimálním řešením. Ve většině případů použití DefaultInstance To by mělo stačit.

Případy jednotlivých dokumentů jsou potřebné pouze tehdy, je-li nutné použít různé zdroje písma pro různé dokumenty, což je vzácný případ. Použití několika FontSettings případy snižují výkon, protože nesdílejí cache.

Kde Aspose.Words Hledá písma TrueType na Windows

Ve většině případů Windows uživatelé nečelí významným problémům se zmeškaným písmem nebo nesprávným uspořádáním. Typicky, Aspose.Words prochází dokumentem a když narazí na odkaz fontu, úspěšně získá data ze složky systému.

Na Windows,? Aspose.Words nejprve vezme všechna dostupná písma z % windir%\ Složka písem. Toto nastavení vám bude většinou vyhovovat. Složky s vlastními písmy zadáváte pouze v případě potřeby. Aspose.Words místo .NET také hledá další písma registrovaná v HKEY LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ Klíč k registru písem. Kromě toho Windows 10 umožňuje instalaci písem pro aktuálního uživatele. Písmo je umístěno do% userprofilu%\ AppData\Místní\Microsoft\Windows\ Složka písem a také zadaná v HKEY_ BULHAR_USER\ Software\Microsoft\Windows NT\CurrentVersion\ Registr písem, kde Aspose.Words budou hledat tato písma.

Pokud dokument obsahuje vložená písma, Aspose.Words může z dokumentu číst příslušné údaje o písmu a používat je k vytvoření rozvržení dokumentu. Dokumenty mohou rovněž obsahovat odkazy na písma, která nejsou ve složce systému, v takovém případě se objeví následující scénáře:

  • Uživatelé mohou nastavit nové zdroje písma prostřednictvím FontSettings třída
  • Aspose.Words může zkusit nahradit zapomenuté písmo podobným písmem

Písma na Non-Windows Systémy

Aspose.Words budou hledat písma ve složce systémového písma. Seznam těchto složek může být zobrazen GetSystemFontFolders metoda. Pokud nejsou nalezena žádná podporovaná písma, Aspose.Words použije vestavěné výchozí písmo Fanwood.ttf.

Vzhledem k tomu, písmo metriky Windows a ne-Windows OS jsou jiné, Aspose.Words udělá vše možné pro nalezení podobného písma a vytvoření rozvržení podobné originálu. To však není vždy možné. V těchto případech FontSettings třída by měla být použita pro přidání vlastních písem nebo pravidel nahrazení.

Kde Aspose.Words Hledá písma TrueType na Linux

Různé Linux distribuce mohou ukládat písma v různých složkách. Aspose.Words hledá písma na několika místech. Ve výchozím nastavení Aspose.Words hledá písma ve všech následujících lokalitách: /usr/share/fonts /usr/local/share/fonts /usr/X11R6/lib/X11/fonts Toto výchozí chování bude fungovat pro většinu Linux distribuce, ale není zaručeno, že pracovat po celou dobu, v tomto případě byste mohli potřebovat určit umístění true písma typu explicitně. Chcete-li to udělat, musíte vědět, kde TrueType písma jsou nainstalována na vašem Linux distribuce.

Kde Aspose.Words Hledá TrueType písma na Mac OS X

Aspose.Words hledá písma ve složce /Library/Fonts, což je standardní umístění pro písma TrueType na Mac OS X. Zatímco toto nastavení bude pracovat pro vás většinu času, možná budete muset zadat své vlastní složky písem v případě, že budete potřebovat.

Načíst písma ze složky

Pokud zpracovávaný dokument obsahuje odkazy na písma, která nejsou v systému, nebo je nechcete přidat do systémové složky, nebo vám chybí oprávnění, pak nejlepším řešením by bylo přidat složku s vlastními písmy pomocí SetFontsSources metoda. To umožní nahradit zdroj systému uživatelským zdrojem. Aspose.Words již nebudou hledat písma v registru nebo Windows\ Složka písma a místo toho pouze skenovat písma v dané složce(s). • GetFontSources metoda vrátí odpovídající hodnoty.

Zadejte jednu nebo více složek písma

SetFontsFolder a SetFontsFolders metody jsou zkratky k SetFontSources metoda s jedním nebo několika FolderFontSource případy. Tyto metody se používají k označení místa Aspose.Words Měli bychom hledat písma. Pokud složka neexistuje nebo není přístupná, Aspose.Words ignoruje tuhle složku. Pokud budou všechny složky, včetně zdrojů pro nahrazení písma, ignorovány, Aspose.Words použije jako výchozí písmo Fanwood.

Následující příklad ukazuje, jak nastavit složku nebo zdroj, který Aspose.Words bude následně používat k vyhledávání písma TrueType při vykreslování nebo vkládání písem:

Můžete si stáhnout soubor šablony tohoto příkladu z Aspose.Words GitHub.

Extra Boolean parametr kontroluje, zda jsou písma skenována rekurzivně prostřednictvím všech složek, a proto skenuje všechny dětské složky zadané složky. Následující příklad ukazuje, jak nastavit Aspose.Words prohlížení více složek pro písma TrueType při vykreslování nebo vkládání písem:

Všimněte si priorit. Pokud existují písma se stejným názvem rodiny a stylem v různých zdrojích písma, pak Aspose.Words vybere písmo ze zdroje s vyšší prioritou. Viz popis pole “Priority” níže.

Pokud vůbec nechcete používat systémová písma, Aspose.Words umožňuje ignorovat a používat pouze vlastní písma:

Prioritní majetek

Priority Vlastnost se používá, pokud existují písma se stejným příjmením a stylem v různých zdrojích písma. V tomto případě Aspose.Words vybere písmo ze zdroje s vyšší prioritou. Například na systémové složce je stará verze písma a zákazník do vlastní složky přidal novou verzi stejného písma.

Načíst písma ze Streamu

Aspose.Words poskytuje StreamFontSource třída, která umožňuje načítání písem z potoka. Chcete-li použít zdroj streamového písma, uživatel musí vytvořit odvozenou třídu z StreamFontSource a poskytovat provádění OpenFontDataStream metoda. • OpenFontDataStream metoda může být volána několikrát. Poprvé, to bude volat, když Aspose.Words skenuje poskytnuté zdroje písma pro získání seznamu dostupných písem. Později může být voláno, pokud je písmo použito v dokumentu k analýze dat písma a k vložení dat písma do některých výstupních formátů. StreamFontSource může být užitečné, protože umožňuje načítání dat písma pouze v případě, že je požadováno, a ne uložit je do paměti pro Nastavení písem Život.

StreamFontSource je alternativou k MemoryFontSource protože je vždy možné načíst proud do paměti a předat jej MemoryFontSource. Rozdíl je v tom, že MemoryFontSource je neustále uložen v paměti a StreamFontSource je naloženo na požádání a ihned zlikvidováno. Ale může být nabita několikrát, jak je popsáno výše. V některých případech MemoryFontSource je lepší, a v jiných, StreamFontSource.

Uložit a načíst vyhledávací Cache

Při hledání písma poprvé, Aspose.Words iteruje přes zdroje písma určené uživatelem a vytváří cache vyhledávání písma na základě dat z těchto zdrojů. Takto bude cache shromažďovat informace o dostupných písmech: rodina písem, styl, celé jméno písma a další. Po dalších hovorech, Aspose.Words hledá informace o požadovaném fontu svým jménem v cache vyhledávání písma, po kterém rozebírá zadané soubory pro použití písma.

Postup pro analýzu všech dostupných souborů písma k inicializaci cache je poměrně časově náročné. Aspose.Words umožňuje uložit a načíst cache pomocí SaveSearchCache způsob řešení problému výkonu. To znamená, že uživatel může načíst dříve uloženou cache ze souboru a přeskočit krok analýze všech dostupných souborů písma.

Následující příklad kódu ukazuje, jak připravit zdroje písma a vygenerovat cache vyhledávání písma předem:

// Prepare font sources and generate font search cache beforehand.
FileFontSource fileSource = new FileFontSource(filePath, fileSourcePriority, fileSourceKey);
MemoryFontSource memorySource = new MemoryFontSource(fontData, memorySourcePriority, memorySourceKey);
StreamFontSource streamSource = new SteamFontSourceMemoryImpl(streamSourcePriority, streamSourceKey);

FontSettings settings = new FontSettings();

settings.SetFontsSources(new FontSourceBase[] { fileSource, memorySource, streamSource });
settings.SaveSearchCache(cacheOutputStream);

Následující příklad kódu ukazuje, jak nastavit zdroje písma a načíst cache vyhledávání před zpracováním dokumentů:

// Set font sources and load search cache before processing documents. Note that sources should be the same as when saving font search cache.
FileFontSource fileSource = new FileFontSource(filePath, fileSourcePriority, fileSourceKey);
MemoryFontSource memorySource = new MemoryFontSource(fontData, memorySourcePriority, memorySourceKey);
StreamFontSource streamSource = new SteamFontSourceMemoryImpl(streamSourcePriority, streamSourceKey);

FontSettings settings = new FontSettings();

settings.SetFontsSources(new FontSourceBase[] { fileSource, memorySource, streamSource }, cacheInputStream);

Získejte seznam dostupných písem

Pokud chcete získat seznam dostupných písem, která mohou být použita například k vytvoření PDF dokumentu, můžete použít GetAvailableFonts metoda, jak je uvedena v následujícím příkladu kódu. • PhysicalFontInfo třída určuje informace o fyzickém písmu, který je k dispozici Aspose.Words Font engine: