Próbuję renderować zawartość PDF do kontekstu urządzenia GDI (dokładniej do mapy bitowej 24-bitowej). Analizowanie strumienia PDF do obiektów PDF i renderowanie poleceń PDF ze słownika treści działa dobrze, w tym renderowania czcionek.Zmiana osadzonej czcionki TrueType, aby była możliwa do użycia przez system Windows GDI
Czcionki osadzone są dekompresowane z ich strumieni FontFile i "ładowane" przy użyciu AddFontMemResourceEx
. Teraz niektóre osadzone czcionki usuwają niektóre tabele TrueType, które są wymagane przez GDI, takie jak tablica "nazwa". Z tego powodu próbowałem zmodyfikować czcionkę, analizując czcionkę podzestawu TrueType w jej tabelach i modyfikując te tabele, które mają brakujące/brakujące tabele danych, są regenerowane z możliwie jak najdokładniejszymi informacjami.
Używam narzędzia Microsoft Font Validator, aby zobaczyć, jak "poprawna" jest generowana czcionka. Nadal dostaję kilka błędów, jak w przypadku tabeli maxp wartości maksymalne są zwykle zbyt duże (jest to podzbiór) lub pole xAvgCharWidth
nie jest równe obliczonej wartości tabeli "OS/2" nie jest poprawne, ale to nie Zatrzymaj inne czcionki osadzone, aby były przydatne. Czcionki osadzone za pomocą PDFCreatora są problematyczne.
Pytania:
- Jak mogę określić, co muszę zmiany do pliku czcionki w celu GDI, aby móc z niego korzystać?
- Czy istnieją inne narzędzia do sprawdzania poprawności czcionek , które mogą dać mi wgląd w to, co jest nadal nie tak z plikiem czcionki ?
W razie potrzeby: Mogę utworzyć oryginalny plik czcionek i zmieniony plik czcionek dostępny do pobrania.
Co modyfikacje są wykonane do tej pory:
- Upewnij się, że jest 'głowa', 'hhea', 'maxp' i '/ OS 2' sekcja.
- Jeśli posiadamy czcionkę symbolu, wyczyść pola Panose i Unicode w sekcji "OS/2"
- Wpisz prawidłowe wartości WInAscent/Desc i TypoAsc/Desc, jeśli mamy zero.
- Wypełnij akceptowalne wartości dla pozycji/rozmiarów sup/dolny/podkreślenia.
- Zeskanuj wszystkie glify, które pozostały wypełnione wartościami X/Y min/maks. W głowie.
- Odbuduj sekcję nazw informacjami z pliku PDF, z którego pochodzi.
PDFCreator opiera się na Ghostscript w celu utworzenia pliku PDF. Dane wejściowe PDFCreator to PostScript, który (w systemie Windows) zazwyczaj pochodzi z wyjścia sterownika drukarki PostScript (najczęściej z sterownika PS firmy Adobe). Pytanie brzmi: czy w pełni kontrolujesz przepływ pracy? Czy musisz przetwarzać pliki PDF wygenerowane przez program PDFCreator, gdzieś poza kontrolą? Jeśli masz pełną kontrolę, możesz skonfigurować przepływ pracy PDFCreator w celu osadzenia oryginalnych czcionek TrueType używanych w oryginalnym (nie-PostScriptowym) formacie dokumentu, zamiast przekonać, że przepływ pracy przekształca czcionki na PS Type1. –
@pipitas: Źródłowe pliki PDF są uważane za "poza naszą kontrolą". Obecnie mamy wytyczną, która mówi: podczas korzystania z PDFCreator, nie używaj osadzonych czcionek. Głównym powodem, dla którego * naprawdę * chcę rozwiązać ten problem, jest pełne zrozumienie wymagań ładowania czcionek w systemie Windows. Jeśli mogę użyć GDI do narysowania mojego tekstu, mogę uniknąć zależności od innych bibliotek dll, bibliotek z ich licencjami i patentami itp. Ale ostatecznie podoba mi się rozwiązać ten dokuczliwy problem, chociaż jest on teraz niższy na liście prio do wytycznej. –
Cóż, jeśli twój problem występuje głównie z danymi wyjściowymi PDFCreatora, ale nie możesz "naprawić" przyczyny tego problemu w swoim katalogu głównym (przez głupie wytyczne, które mówią: "Nie rób tego dla swoich plików PDF, jakie są wszystkie najnowsze wysiłki normalizacyjne [ PDF/X, PDF/A] zalecane [a mianowicie, osadzanie czcionek]! ", A następnie jestem zakłopotany ... –