Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DirectWrite zapewnia dostęp do kolekcji czcionek systemowych przy użyciu metody IDWriteFactory::GetSystemFontCollection. Jest to kolekcja czcionek, która jest najczęściej używana. Jednak niektóre aplikacje muszą używać czcionek, które nie są zainstalowane w systemie, na przykład z dołączonych plików czcionek lub plików czcionek osadzonych w aplikacji.
Jeśli żądane czcionki nie znajdują się w kolekcji czcionek systemowych, możesz utworzyć niestandardową kolekcję czcionek pochodzącą z IDWriteFontCollection.
To omówienie składa się z następujących części:
- rejestrowanie i wyrejestrowywanie modułu ładującego kolekcji czcionek
- IDWriteFontCollectionLoader
- IDWriteFontFileEnumerator
- CreateCustomFontFileReference
- IDWriteFontFileLoader
- IDWriteFontFileStream
Rejestrowanie i wyrejestrowywanie modułu ładującego kolekcji czcionek
Moduł ładujący kolekcji czcionek należy zarejestrować przy użyciu IDWriteFactory::RegisterFontCollectionLoader metody i przekazać do niej interfejsIDWriteFontCollectionLoader implementowany przez aplikację jako obiekt pojedynczy. Ten obiekt załaduje czcionki po zażądaniu kolekcji niestandardowej. Zarówno kolekcja czcionek systemowych, jak i kolekcje czcionek niestandardowych są buforowane, więc czcionki są ładowane tylko raz.
Moduł ładujący kolekcji czcionek musi zostać ostatecznie zwolniony przy użyciu IDWriteFactory::UnregisterFontCollectionLoader.
Nuta
Rejestrowanie modułu ładującego kolekcji czcionek dodaje do liczby odwołań; Nie należy wywoływać UnregisterFontCollectionLoader z poziomu destruktora lub obiekt modułu ładującego kolekcji nigdy nie zostanie wyrejestrowany.
IDWriteFontCollectionLoader
Utworzysz obiektidWriteFontFileEnumeratorprzy użyciu IDWriteFactory::CreateCustomFontCollection i przekazania go klucza zdefiniowanego przez aplikację. Klucz jest wskaźnikiem pustki, a typ danych, format i znaczenie są definiowane przez aplikację i są nieprzezroczyste w systemie czcionek.
Klucz może być dowolny, DirectWrite wymaga, aby każdy klucz był oba:
- Unikatowy dla pojedynczej kolekcji czcionek w zakresie modułu ładującego.
- Ważne, dopóki moduł ładujący nie zostanie wyrejestrowany przy użyciu fabryki.
Gdy wywoływana jest metoda CreateCustomFontCollection, DirectWrite wywołuje z powrotem do interfejsu IDWriteFontCollectionLoad er zaimplementowanego jako pojedynczy obiekt przez aplikację. Metoda IDWriteFontCollectionLoader::CreateEnumeratorFromKey wywołania zwrotnego jest używana przez funkcję DirectWrite do pobierania obiektu IDWriteFontFileEnumerator zaimplementowanego przez aplikację. Obiekt IDWriteFactory używany do tworzenia kolekcji jest przekazywany do tej metody i powinien być używany przez moduł wyliczający pliku czcionek w celu utworzenia obiektówIDWriteFontFile, które mają zostać uwzględnione w kolekcji.
Klucz przekazany do tej metody identyfikuje kolekcję czcionek i jest tym samym kluczem przekazanym do CreateCustomFontCollection.
IDWriteFontFileEnumerator
Zdefiniowany przez aplikację obiekt IDWriteFontFileEnumerator utworzony przez metodę CreateEnumeratorFrom Key służy do wyliczania plików czcionek w kolekcji, tworząc obiekt IDWriteFontFile dla każdego pliku. Metoda IDWriteFontFileEnumerator::MoveNext zmienia położenie na następny plik czcionki. Jeśli plik znajduje się w tej pozycji, ustawi hasCurrentFile na wartość TRUE. W przeciwnym razie zostanie ustawiona wartość FALSE, a metoda zwróci S_OK.
Nuta
Moduł wyliczający pliku czcionek musi rozpocząć pozycjonowanie przed pierwszym elementem i zaawansowane przy pierwszym wywołaniu, aby MoveNext.
Obiekt IDWriteFontFile jest zwracany przez metodę IDWriteFontFileEnumerator::GetCurrentFontFile. Jeśli nie ma pliku czcionki w bieżącym położeniu, ponieważ MoveNext nie został jeszcze wywołany lub hasCurrentFile został ustawiony na FALSE, GetCurrentFontFile zwróci E_FAIL.
CreateCustomFontFileReference
Dane wyjściowe obiektu IDWriteFontFile przezGetCurrentFontFile można utworzyć, wywołując IDWriteFactory::CreateCustomFontFileReference. Klucz odwołania do pliku czcionki identyfikuje określone odwołanie do pliku czcionki i musi być unikatowy w module ładujący pliku czcionek, który załaduje plik.
IDWriteFontFileLoader
Metoda CreateCustomFontFileReference przyjmuje obiekt IDWriteFontFileLoad er zaimplementowany przez aplikację, która służy do ładowania czcionki. Metoda IDWriteFontFileLoader::CreateStreamFromKey wywołania zwrotnego jest przekazywana klucz i zwraca obiekt IDWriteFontFileStream.
IDWriteFontFileStream
Zaimplementowany przez aplikację obiekt IDWriteFontFileStream udostępnia dane pliku czcionek dla odwołania do pliku czcionki z niestandardowego modułu ładującego pliki czcionek. Wraz z rozmiarem pliku i czasem ostatniego zapisu udostępnia metodę (ReadFileFragment) na potrzeby pobierania fragmentów plików, które mają zostać skompilowane w obiekcie IDWriteFontFile.
Nuta
implementacje readFileFragment powinny zwrócić błąd, jeśli żądany fragment znajduje się poza granicami pliku.
IDWriteFontFileStream może pobrać zawartość pliku czcionki z dowolnego miejsca, takiego jak lokalny dysk twardy lub zasoby osadzone.