Fonts
Fonts
Ten przewodnik pokazuje, jak sprawdzić czcionki odwoływane w dokumencie, wyodrębnić osadzone dane czcionek oraz kontrolować TrueType osadzanie czcionek przy zapisie przy użyciu Aspose.Words FOSS dla .NET. Aspose.Words FOSS dla .NET śledzi każdą czcionkę odwoływaną przez załadowany dokument za pośrednictwem FontInfoCollection i udostępnia metadane per-czcionka, wyodrębnianie osadzonych czcionek oraz kontrolę osadzania przy zapisie poprzez FontInfo. Document.FontSettings i LoadOptions.FontSettings zapewniają (celowo minimalny w tym wydaniu) punkt wejścia FontSettings.
Sprawdzanie czcionek używanych w dokumencie
DocumentBase.FontInfos (dziedziczony przez Document) zwraca FontInfoCollection opisujący każdą czcionkę odwoływaną w dowolnym miejscu dokumentu. Indeksuj go po nazwie (np. fontInfos["Arial"]), sprawdź, czy istnieje za pomocą Contains(name), zlicz je przy pomocy Count lub wylicz całą kolekcję poprzez GetEnumerator().
Właściwości czcionek i klasyfikacja
Każdy FontInfo opisuje jedną czcionkę: Name i AltName ją identyfikują, Family klasyfikuje ją za pomocą wyliczenia FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch raportuje jej FontPitch (Default, Fixed, Variable), a IsTrueType, Charset i Panose udostępniają dane niższego poziomu dopasowywania czcionek.
Wyodrębnianie osadzonych czcionek
Jeśli dokument zawiera osadzone czcionki, FontInfo.GetEmbeddedFont(format, style) zwraca surowe bajty osadzonej czcionki dla podanego EmbeddedFontFormat (EmbeddedOpenType lub OpenType) oraz EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) zwraca czcionkę przekonwertowaną bezpośrednio do formatu OpenType, niezależnie od tego, jak została pierwotnie osadzona.
Prawa licencyjne dotyczące osadzania czcionek
Przed wyodrębnieniem lub ponownym osadzeniem czcionki, sprawdź FontInfo.EmbeddingLicensingRights, obiekt FontEmbeddingLicensingRights. EmbeddingUsagePermissions zgłasza poziom licencji za pomocą wyliczenia FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), podczas gdy NoSubsetting i BitmapEmbeddingOnly sygnalizują dodatkowe ograniczenia ustalone przez dostawcę czcionki.
Kontrolowanie osadzania czcionek przy zapisie
FontInfoCollection zawiera również przełączniki osadzania na poziomie dokumentu: ustaw EmbedTrueTypeFonts na true, aby osadzić każdą czcionkę TrueType używaną w dokumencie przy zapisie, EmbedSystemFonts, aby uwzględnić czcionki zazwyczaj uznawane za dostępne w każdym systemie, oraz SaveSubsetFonts, aby osadzić tylko rzeczywiście użyte glify, a nie pełną czcionkę.
Zakres FontSettings w tej edycji
Document.FontSettings i LoadOptions.FontSettings zwracają obiekt FontSettings, a FontSettings.DefaultInstance udostępnia współdzieloną domyślną instancję. W tej edycji FOSS, powierzchnia FontSettings API jest ograniczona do tej właściwości domyślnej instancji — rozwiązywanie źródeł czcionek oparte na folderach i systemie, które w innym miejscu w Aspose.Words służą do zastępowania lub rozwiązywania czcionek dla układu strony i renderowania, nie jest dostępne, ponieważ układ strony i renderowanie wykraczają poza zakres tej edycji. Obsługa czcionek tutaj oznacza inspekcję metadanych i osadzanie, a nie zastępowanie czcionek w renderowaniu.
Wskazówki i najlepsze praktyki
- Zawsze sprawdzaj
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsprzed wyodrębnieniem lub rozpowszechnianiem osadzonej czcionki — niektóre czcionki są licencjonowane wyłącznieRestrictedLicenselubPrintAndPreviewtylko. - Użyj
GetEmbeddedFontAsOpenType(), gdy potrzebujesz spójnego formatu wyjściowego, niezależnie od tego, jak źródłowy dokument osadził czcionkę (EmbeddedOpenTypevsOpenType). - Ustaw
FontInfoCollection.SaveSubsetFontsnatrue, aby zmniejszyć rozmiar pliku wyjściowego przy osadzaniu czcionek, które używają tylko kilku glifów. FontInfoCollection.Contains(name)jest tańsze niż indeksowanie i obsługa nieudanej wyszukiwarki (np.fontInfos[name]), gdy potrzebujesz jedynie sprawdzić obecność czcionki.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
GetEmbeddedFont() nie zwraca użytecznych danych | Odwoływana czcionka nie jest faktycznie osadzona w dokumencie | Sprawdź ustawienia osadzania dokumentu, zanim założysz, że dane czcionki są dostępne |
Indeksowanie FontInfoCollection po nazwie nie znajduje nic | Nazwa czcionki nie pasuje dokładnie, łącznie z wielkością liter | Wymień FontInfoCollection przy użyciu GetEnumerator(), aby potwierdzić dokładny ciąg Name |
| Oczekiwane API zamiany/rozwiązywania czcionek brakują | Rozwiązywanie źródeł czcionek oparte na folderach i systemie nie jest zaimplementowane w tej wersji FOSS | Użyj FontInfo/FontInfoCollection wyłącznie do metadanych i osadzania; zamiana czcionek przy renderowaniu nie jest częścią zakresu tej edycji |
FAQ
Jak wymienić wszystkie czcionki, do których odnosi się dokument?
Wymień Document.FontInfos (a FontInfoCollection) za pomocą GetEnumerator(), lub indeksuj go po nazwie, aby wyszukać konkretną pozycję (np. fontInfos["Arial"]).
Czy mogę wyciągnąć surowe bajty wbudowanej czcionki z dokumentu?
Tak, jeśli czcionka jest wbudowana — wywołaj FontInfo.GetEmbeddedFont(format, style) dla oryginalnego wbudowanego formatu, lub GetEmbeddedFontAsOpenType(style), aby znormalizować wynik do OpenType.
Jak zapewnić, że czcionki są wbudowane przy zapisywaniu dokumentu?
Ustaw FontInfoCollection.EmbedTrueTypeFonts na true przed zapisem; dodaj EmbedSystemFonts, jeśli potrzebujesz również czcionek zakładanych jako dostępne w każdym systemie, oraz SaveSubsetFonts, aby wbudować tylko używane glify.
Czy ta edycja obsługuje rozwiązywanie czcionek z niestandardowego folderu do renderowania?
Nie — rozwiązywanie źródeł czcionek oparte na folderze i systemie (FontSettings konfiguracja źródła) nie jest tutaj zaimplementowane, ponieważ służy układowi strony i renderowaniu, co wykracza poza zakres tej edycji FOSS.
Co oznacza FontEmbeddingLicensingRights.NoSubsetting?
To flaga licencyjna zgłaszana przez prawa do osadzania czcionki dostawcy: gdy true, czcionka nie może być podzbiorowana do jedynie używanych glifów.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
FontInfoCollection | Czcionki odwoływane w dokumencie; indeksowanie według nazwy (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadane jednej czcionki: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Wyodrębnij osadzone bajty czcionki |
EmbeddedFontFormat / EmbeddedFontStyle | Enumy identyfikujące format i wariant stylu osadzonej czcionki |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Ograniczenia licencyjne osadzania zgłaszane dla każdej czcionki |
FontSettings | Minimalny punkt wejścia ustawień czcionek (Document.FontSettings, LoadOptions.FontSettings); brak rozwiązywania źródła czcionki w tej edycji |