相关网址
5 S7 `+ B- S1 I4 F: Yhttp://www.frictionalgames.com/forum/forum-27.html ; y& m" F8 O6 R) G4 C
9 \7 s- K2 K2 E
----------------------------------2 S: f1 C* g$ Z. ~" X
2010.10.7 更新
; }+ S- A: t5 k1 U. g4 V8 b% x研究了一下这个游戏的源代码,在\sources\resources\FontManager.cpp里,我发现这个游戏还可以支持ttf字体文件。
4 A/ u2 m1 d8 V4 g z方法很简单,只要在fonts目录下放上和.fnt文件同名的.ttf文件,然后把.fnt文件移走即可。, W* Z0 v. B& q+ o+ d6 f
相关代码如下
0 V3 S; q" S) x3 R$ R& UiFontData* cFontManager::CreateFontData(const tString& asName, int alSize,unsigned short alFirstChar,2 J8 O; X# Q# |$ F
unsigned short alLastChar); R& v5 f9 C |" f+ {1 m2 t
{6 P2 e6 R/ g, Q8 j U; G
tString sPath;
0 Z; q' Z1 B+ ?0 K iFontData* pFont;9 Z( G; O+ w! `3 q3 O$ z L8 ?
tString asNewName = cString::ToLowerCase(asName);4 u! [& Q! i% }* `9 x m% [5 w% d1 l# e {
BeginLoad(asName);6 R1 z3 e( ^: A2 g- G7 |' A& e; S
: ?: `/ z2 d0 b G //asNewName = cString::SetFileExt(asName,"ttf");
7 u1 R; `6 B$ [0 o& L( D9 l pFont = static_cast<iFontData*>(this->FindLoadedResource(asNewName,sPath));. x3 J M( N" G5 i8 R0 w0 _
if(pFont==NULL && sPath!="")8 f& p* O j- e0 V3 _; M, k: m
{
$ s) x6 v( I% s9 V pFont = mpGraphics->GetLowLevel()->CreateFontData(asNewName);' R9 M& N4 _5 {& A. z& I; ~0 v! t
pFont->SetUp(mpGraphics->GetDrawer(),mpLowLevelResources,mpGui);( o! |( @2 y8 g5 u
7 x' W5 Q2 ]& ]! m8 ] tString sExt = cString::ToLowerCase(cString::GetFileExt(asName));+ C1 o8 r/ f$ p- Q* L. g
//True Type Font: v" T) i. ^$ S( n
if(sExt == "ttf")/ s- n5 ^' L. ?! T& w5 ^. Z
{4 f% G4 Q* b2 i6 U
if(pFont->CreateFromFontFile(sPath,alSize,alFirstChar,alLastChar)==false){
; T; G8 D/ S# _. r& K& ~ hplDelete(pFont);+ y; N& D; x; R) l9 ?. `
EndLoad();
; \( G+ `8 _& N7 }% c return NULL;
% A% m) @. ]4 m( z& i) M }
- I( m4 w/ t! w) v }
5 n* z6 x5 S5 G5 C2 M //Angel code font type
; ]6 c" b/ ?& K0 A/ } o2 `4 f1 b! P( K else if(sExt == "fnt")
) h5 a; H1 o! i$ t6 G3 s) M/ H, }; y { h: g' S6 h' B2 \
if(pFont->CreateFromBitmapFile(sPath)==false){' t3 m h; A8 Q& M: |
hplDelete(pFont);
% ?$ u( `! ]) m7 x, S* o$ p EndLoad();
* q1 w, \ \8 L, ~0 j return NULL;) w- q; B0 r8 x2 \: b2 v
}; L; H4 Z- O) H* c9 D7 Y8 a
}( N; m. b% h) H: c
else
5 Q& F! C8 T7 b- u# T5 ~. ~4 q {2 P$ N1 j, l( ?
Error("Font '%s' has an unkown extension!\n",asName.c_str());/ f% Q" M; E: U5 P3 u
hplDelete(pFont);
, a. X' d" F. z) e( Q- H EndLoad();
" [3 X' T( o9 S2 X3 V return NULL;
" l6 s8 F3 h/ @! _+ \* j }4 j( B) K! l$ N* j# {& ?* C* [
; U$ G2 n. Q5 {* N: O' r! I% V //mpResources->GetImageManager()->FlushAll();1 Y) i) W3 Y, p: F& _! L
AddResource(pFont);
, S# O/ m* C, o3 M! t h* K } g) Z3 R( Z# }; H6 W
if(pFont)pFont->IncUserCount();
: T, {& `9 v8 Q$ R else Error("Couldn't create font '%s'\n",asNewName.c_str());- h! t6 k' N# G8 i
) g; m% L" c9 _4 e3 z" }9 [. H6 s8 u EndLoad();* ~) f) u, J3 B) B
return pFont;
. t6 s2 v0 a3 T/ f! r1 E7 r } |