2012-05-14 7 views
8

próbuję użyć OTF czcionki zainstalowane w systemie, ale nie powiodło się:Dostęp OTF czcionki

FontFamily family = new FontFamily(name_for_my_font); 

Próbowałem wymienić wszystkie moje czcionki w systemie i rzeczywiście nie widziałem wymagane czcionki:

foreach (FontFamily font in System.Drawing.FontFamily.Families) 
{ 
Console.WriteLine(font); 
} 

Ale widzę moje czcionki w Fonts folderu. Ma rozszerzenie OTF. Może to jest problem? Widzę tylko czcionki: TTF. Ale dlaczego? Jak mogę uzyskać dostęp do czcionki OTF z mojego programu?

UPDATE: Niestety problem jest z OTF dostępu, ale nie TTF! Zrobiłem korekt w mojej odpowiedzi

+1

Jest na odwrót, System.Drawing może obsługiwać tylko czcionki TrueType , a nie czcionek OpenType. –

+0

wow! Nie mam pojęcia o tym. Jak mogę uzyskać dostęp do moich czcionek OTF? –

+0

Jest to łatwe i trudne rozwiązanie. Łatwo przestać próbować korzystać z czcionek OpenType, ponieważ nigdy nie będą działać w aplikacji WinForm. Trudno wyrzucić wszystko, co masz i przejść do WPF. –

Odpowiedz

8

Problemem jest to, że czcionki OpenType są w kilku smakach, jeden oparty na TrueType kontury i inny oparty na PostScript Type 1 wytyczne. Interfejs API grafiki systemu Windows GDI + nie obsługuje konturów PostScript typu 1. Jest to trochę ironiczne, ponieważ format czcionki OpenType został stworzony przez Microsoft w wyniku braku możliwości licencjonowania niektórych technologii czcionek od Apple.

Jeśli więc aplikacja Windows jest oparta na GDI +, nie będzie ona w stanie renderować czcionek OpenType zawierających kontury PostScript typu 1 lub czcionek PostScript typu 1 w tym zakresie. Niestety System.Drawing jest zaimplementowany za pomocą GDI +. Jedyną opcją jest trzymanie się czcionek za pomocą konturów TrueType.

(Lub, jeśli jesteś naprawdę rozpaczliwie można P/Invoke do „klasycznego” GDI i renderowanie czcionek w postaci bitmapy).

0

spróbuj użyć System.Drawing.Text.InstalledFontCollection http://msdn.microsoft.com/en-us/library/system.drawing.text.installedfontcollection.aspx

+2

1) W jaki sposób to może pomóc mi uzyskać dostęp do mojej czcionki OTF? 2) Nie widzę swojej czcionki również za pomocą twojego podejścia. –

+1

To nadal dobra odpowiedź, aby zobaczyć zainstalowane czcionki. Prawdopodobnie będę musiał skorzystać z Pinvoke, więc doceniam krok naprzód, gdy mogę wymienić czcionkę. – Carter

Powiązane problemy