2013-08-15 7 views
7

Nie mogę dowiedzieć się, jak określić sposób renderowania konkretnej czcionki OpenType poprawnie w WPF (.NET 4.5/VS2012/Windows 8). Mam zainstalowaną na moim komputerze czcionkę o nazwie "DINPro-BlackItalic".WPF nie renderuje nazwy czcionki Windows OpenType

Nazwa pliku jest: DINPro-BlackItalic.otf

Okna Podaje nazwę czcionki: DINPro-BlackItalic

Windows Font preview for DINPro-BlackItalic

W WPF, zrobić coś prostego, jak to:

<TextBlock Text="This is a sample sentence in DINPro-BlackItalic" 
       FontFamily="DinPro-BlackItalic" FontSize="24" /> 

lub FontFamily="#DinPro-BlackItalic"

To nie działa (wyraźnie nie kursywą) i powraca do domyślnej czcionki. Próbowałem wielu innych odmian, które działają w przypadku innych czcionek w katalogu czcionek.

Na przykład Comic Sans działa: FontFamily="Comic Sans MS" (niesamowite ...)

Teraz, to dlaczego ja naprawdę mylić: Gdybym tylko domyślać inny sposób podkreślać nazwę czcionki, renderuje prawidłowo!

to działa: FontFamily="Din Pro Black Italic"

Podsumowując, oto zrzut ekranu z różnymi ustawieniami fontFamily w WPF: Several FontFamily settings in WPF

Dwa pytania:

1) Jak mam odgadnąć w odpowiedni sposób, aby powiedzieć WPF, aby renderować tę czcionkę? Musi mieć nazwę kanoniczną zarejestrowaną gdzieś, ale nie jest widoczna w nazwie pliku, właściwości pliku lub nazwie czcionki, którą system Windows raportuje po przeanalizowaniu pliku.

2) Co gorsze jest to, że jeśli mam próby uczynienia samej czcionki w aplikacji pulpitu i w sieci, przeglądarkach takich jak Chrome na Windows a nawet IE oczekiwać „DINPro-BlackItalic” i nie uniemożliwiała Rozstawiona wersja nazwy. Wygląda na to, że przeglądarki WPF i Windows składają się na wzajemnie wykluczające się decyzje o tym, której nazwy czcionki użyć do indeksowania czcionek. Jak obejść ten problem w przypadku dowolnych czcionek?

DINPro Font rendering in Chrome and IE

Odpowiedz

0

dla WPF, lepiej spróbować z projektanta do wyboru czcionki dla textblock

dla przeglądarek, może być sądzony z etykietą lub inny UI kontroluje wyświetlić.

4

Możesz spakować czcionkę za pomocą Aplikacji i możesz odnieść ją z katalogu projektu. Powiedz, jeśli umieścisz czcionkę wewnątrz katalogu czcionek w projekcie.

Możesz dodać następująco,

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#DinPro-BlackItalic”/> 

Więc można mieć pewność, że, czcionka zostanie wdrożony z aplikacji.

1

Dobrze więc myślę, że znalazłem rozwiązanie ..

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro”/> 

lub

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro Black Italic”/> 

havn't próbował swój kod, ale to wydawało się działać dla mnie .. Odwoływanie ścieżce plik + nazwa_kompasu

Pliki o nazwach pełnych mają wspólną nazwę. I to jest trudne, ponieważ możesz zobaczyć tę nazwę tylko wtedy, gdy zainstalujesz czcionkę na swoim komputerze i sprawdzisz ją w familytree. Jakbyś pokazał wcześniej w swoim pytaniu:

FontFamily="Din Pro Black Italic" 

To jest moje doświadczenie, a nie 100% pewien, że się nie mylę, że to działa tylko dla mnie :)

0

Składnia że pracuje dla mnie jest:

/{Application Name};component/{Font Folder in Project}/#{Font Name (not filename)} 

przykład:

/ApplicationName;component/Fonts/#Proxima Nova Lt