.[ ČeskéHry.cz ].
AddFontResource - jak zjistit název fontu?

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 22. leden 2011, 09:11:48    Předmět: AddFontResource - jak zjistit název fontu? Odpovědět s citátem

Potřebuji ve své aplikaci používat fonty, které uživatel vybere za běhu programu. Chci je používat pro ID3DXFont. Bohužel jsem celkem narazil a nevím, jak dál. Když pro načtení fontu použiji AddFontResource, tak nevím jak zjistit název fontu, respektive font resource, který potřebuji pro jeho použití v ID3DXFont.
Jak zjistit název fontu? Popř. možná na tento problém jdu špatně; jak se běžně řeší potřeba používat nenainstalovaný font, u kterého znám pouze jeho soubor?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 26. leden 2011, 16:19:32    Předmět: Odpovědět s citátem

Opravdu nikdo neví?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1536
Bydliště: u Prahy

PříspěvekZaslal: 26. leden 2011, 17:24:58    Předmět: Odpovědět s citátem

To jsou 2 otázky? Používat fonty, které uživatel vybere za běhu programu, a použití fontu, který máš jen v souboru a v systému není nainstalovaný. V prvním případě máš jméno fontu v informaci, co uživatel vybral, v druhém případě zas v souboru, který chceš načíst.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 26. leden 2011, 17:35:32    Předmět: Odpovědět s citátem

Mrknul jsem do Platform SDK dokumentace a nic takového tam k AddFont[Mem]Resource[Ex] funkcím není. Možná by se to dalo nějak zjistit výčtem písem pomocí EnumFonts, ale v LOGFONT struktuře taky žádný relevantní příznak není.
Myslím, že ti nezbývá buď implementovat nějakou chytrou heuristiku, nebo se prostě naučit parsovat formáty fontů a hledat v nich název. Což by nakonec nemuselo být tak komplikované. Formát .fon je klasický NE exáč a název by asi šlo vytáhnout pomocí GetFileVersionInfo. TTF vypadá od pohledu na něco alá RIFF, odhaduju, že na začátku bude určitě offset řetězcové části, kde na pevném indexu bude název. Stejně tak mi přijde TTC. Nic jiného ve své složce /Windows/Fonts nevidím Smile
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Mnemonic



Založen: 28. 07. 2007
Příspěvky: 93

PříspěvekZaslal: 26. leden 2011, 18:03:43    Předmět: Odpovědět s citátem

Spíš než parsovat font sám bych doporučil použít knihovnu FreeType. Funkce FT_Open_Face otevře soubor s fontem a vyplní strukturu FT_Face, která mimo jiné obsahuje pole family_name.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 26. leden 2011, 20:41:41    Předmět: Odpovědět s citátem

To Ladis: Je to jedna otázka - jak zjitit název fontu ze souboru; např. když uživatel za běhu programu vybere soubor s fontem.
To Tringi: Vlastnímu parsování jsem se chtěl vyhnout. Přijde mi to jako zbytečná práce.
To Mnemonic: Díky za tip; použití FreeType zatím vypadá jako nejschůdnější řešení. Rozhodně nastuduju.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 26. leden 2011, 21:07:38    Předmět: Odpovědět s citátem

Byl jsem teď v přemýšlírně a napadlo mě tam triviální řešení:

1) EnumFonts do sady A
2) AddFontResource
3) EnumFonts do sady B
4) Přidaný font = B - A
5) ???
6) Profit!

Ovšem, pokud se v jeden okamžik rozhodnou dvě aplikace instalovat písma, tak dojde k menšímu problému, ale to není zrovna častá operace v systému, a téměř vždy se písma instalují na povel uživatele. A tudíž, když pracuje s tvou aplikací, nemůže současně přidávat písma v jiné.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 26. leden 2011, 22:10:32    Předmět: Odpovědět s citátem

Tringi napsal:
1) EnumFonts do sady A
2) AddFontResource
3) EnumFonts do sady B
4) Přidaný font = B - A
5) ???
6) Profit!

Ať žije WinAPI.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna