forked from 0ad/0ad
Run-time selection of FreeType DLL, to let the user decide whether to enable glyph hinting
This was SVN commit r953.
This commit is contained in:
parent
9aa3be9ae3
commit
982b0ffc25
@ -21,7 +21,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""E:\wx\wxWindows-2.4.2\include";"E:\wx\wxWindows-2.4.2\lib\mswud";"E:\freetype\freetype-2.1.8\include";E:\wx\pretends"
|
AdditionalIncludeDirectories=""E:\wx\wxWindows-2.4.2\include";"E:\wx\wxWindows-2.4.2\lib\mswud";"E:\freetype\freetype-2.1.8\include";E:\wx\pretends;."
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;__WXDEBUG__;_UNICODE;UNICODE;wxUSE_UNICODE=1"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;__WXDEBUG__;_UNICODE;UNICODE;wxUSE_UNICODE=1"
|
||||||
MinimalRebuild="TRUE"
|
MinimalRebuild="TRUE"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
@ -37,7 +37,7 @@
|
|||||||
Name="VCCustomBuildTool"/>
|
Name="VCCustomBuildTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="wxmswud.lib freetype218MT_D.lib comctl32.lib ws2_32.lib rpcrt4.lib"
|
AdditionalDependencies="wxmswud.lib comctl32.lib ws2_32.lib rpcrt4.lib"
|
||||||
OutputFile="$(OutDir)/FontBuilder.exe"
|
OutputFile="$(OutDir)/FontBuilder.exe"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
SuppressStartupBanner="TRUE"
|
SuppressStartupBanner="TRUE"
|
||||||
@ -86,7 +86,7 @@
|
|||||||
EnableFiberSafeOptimizations="FALSE"
|
EnableFiberSafeOptimizations="FALSE"
|
||||||
OptimizeForProcessor="2"
|
OptimizeForProcessor="2"
|
||||||
OptimizeForWindowsApplication="FALSE"
|
OptimizeForWindowsApplication="FALSE"
|
||||||
AdditionalIncludeDirectories="E:\wx\wxWindows-2.4.2\include;E:\wx\wxWindows-2.4.2\lib\mswu;E:\freetype\freetype-2.1.8\include"
|
AdditionalIncludeDirectories=""E:\wx\wxWindows-2.4.2\include";"E:\wx\wxWindows-2.4.2\lib\mswud";"E:\freetype\freetype-2.1.8\include";E:\wx\pretends;."
|
||||||
PreprocessorDefinitions="_STATIC_CPPLIB;WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;wxUSE_UNICODE=1"
|
PreprocessorDefinitions="_STATIC_CPPLIB;WIN32;NDEBUG;_WINDOWS;_UNICODE;UNICODE;wxUSE_UNICODE=1"
|
||||||
StringPooling="TRUE"
|
StringPooling="TRUE"
|
||||||
RuntimeLibrary="2"
|
RuntimeLibrary="2"
|
||||||
@ -112,6 +112,7 @@
|
|||||||
SubSystem="2"
|
SubSystem="2"
|
||||||
OptimizeReferences="2"
|
OptimizeReferences="2"
|
||||||
EnableCOMDATFolding="2"
|
EnableCOMDATFolding="2"
|
||||||
|
OptimizeForWindows98="0"
|
||||||
TargetMachine="1"/>
|
TargetMachine="1"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCMIDLTool"/>
|
Name="VCMIDLTool"/>
|
||||||
@ -149,6 +150,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\font.cpp">
|
RelativePath=".\font.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\imagemanip.cpp">
|
RelativePath=".\imagemanip.cpp">
|
||||||
</File>
|
</File>
|
||||||
@ -232,6 +236,12 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\font.h">
|
RelativePath=".\font.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll_funcs.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\imagemanip.h">
|
RelativePath=".\imagemanip.h">
|
||||||
</File>
|
</File>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: font.cpp,v 1.3 2004/07/16 15:32:34 philip Exp $
|
// $Id: font.cpp,v 1.4 2004/08/10 15:51:06 philip Exp $
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
@ -8,20 +8,27 @@
|
|||||||
#include "freetype/ttunpat.h"
|
#include "freetype/ttunpat.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
FontRenderer::FontRenderer(const char* filename0, const char* filename1, int ptsize, bool unpatented_hinting)
|
#include "freetypedll.h"
|
||||||
|
|
||||||
|
FontRenderer::FontRenderer(const char* filename0, const char* filename1, int ptsize, bool unpatented_hinting, bool hinting)
|
||||||
{
|
{
|
||||||
|
if (SelectDLL(hinting ? 0 : 1))
|
||||||
|
{
|
||||||
|
throw "Error loading FreeType DLL (freetype(a|b).dll)";
|
||||||
|
}
|
||||||
|
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
error = FT_Init_FreeType(&FontLibrary0);
|
error = DLLFT_Init_FreeType(&FontLibrary0);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
throw "Error initialising FreeType";
|
throw "Error initialising FreeType";
|
||||||
}
|
}
|
||||||
|
|
||||||
error = FT_Init_FreeType(&FontLibrary1);
|
error = DLLFT_Init_FreeType(&FontLibrary1);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
throw "Error initialising FreeType";
|
throw "Error initialising FreeType";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +56,7 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
&FontFace0
|
&FontFace0
|
||||||
);
|
);
|
||||||
*/
|
*/
|
||||||
error = FT_Open_Face(
|
error = DLLFT_Open_Face(
|
||||||
FontLibrary0,
|
FontLibrary0,
|
||||||
&args0,
|
&args0,
|
||||||
0, // index of face inside font file
|
0, // index of face inside font file
|
||||||
@ -57,8 +64,8 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
);
|
);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
FT_Done_FreeType(FontLibrary1);
|
DLLFT_Done_FreeType(FontLibrary1);
|
||||||
throw "Error loading primary font";
|
throw "Error loading primary font";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +77,7 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
&FontFace1
|
&FontFace1
|
||||||
);
|
);
|
||||||
*/
|
*/
|
||||||
error = FT_Open_Face(
|
error = DLLFT_Open_Face(
|
||||||
FontLibrary1,
|
FontLibrary1,
|
||||||
&args1,
|
&args1,
|
||||||
0, // index of face inside font file
|
0, // index of face inside font file
|
||||||
@ -78,13 +85,13 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
);
|
);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
FT_Done_Face(FontFace0);
|
DLLFT_Done_Face(FontFace0);
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
FT_Done_FreeType(FontLibrary1);
|
DLLFT_Done_FreeType(FontLibrary1);
|
||||||
throw "Error loading secondary font face";
|
throw "Error loading secondary font face";
|
||||||
}
|
}
|
||||||
|
|
||||||
error = FT_Set_Char_Size(
|
error = DLLFT_Set_Char_Size(
|
||||||
FontFace0,
|
FontFace0,
|
||||||
0, // char_width in 1/64th of points
|
0, // char_width in 1/64th of points
|
||||||
ptsize*64, // char_height in 1/64th of points
|
ptsize*64, // char_height in 1/64th of points
|
||||||
@ -93,14 +100,14 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
);
|
);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
FT_Done_Face(FontFace0);
|
DLLFT_Done_Face(FontFace0);
|
||||||
FT_Done_Face(FontFace1);
|
DLLFT_Done_Face(FontFace1);
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
FT_Done_FreeType(FontLibrary1);
|
DLLFT_Done_FreeType(FontLibrary1);
|
||||||
throw "Error loading scalable character from primary font - is this a TrueType font?";
|
throw "Error loading scalable character from primary font - is this a TrueType font?";
|
||||||
}
|
}
|
||||||
|
|
||||||
error = FT_Set_Char_Size(
|
error = DLLFT_Set_Char_Size(
|
||||||
FontFace1,
|
FontFace1,
|
||||||
0, // char_width in 1/64th of points
|
0, // char_width in 1/64th of points
|
||||||
ptsize*64, // char_height in 1/64th of points
|
ptsize*64, // char_height in 1/64th of points
|
||||||
@ -109,10 +116,10 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
);
|
);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
FT_Done_Face(FontFace0);
|
DLLFT_Done_Face(FontFace0);
|
||||||
FT_Done_Face(FontFace1);
|
DLLFT_Done_Face(FontFace1);
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
FT_Done_FreeType(FontLibrary1);
|
DLLFT_Done_FreeType(FontLibrary1);
|
||||||
throw "Error loading scalable character from secondary font - is this a TrueType font?";
|
throw "Error loading scalable character from secondary font - is this a TrueType font?";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,10 +131,10 @@ FontRenderer::FontRenderer(const char* filename0, const char* filename1, int pts
|
|||||||
|
|
||||||
FontRenderer::~FontRenderer()
|
FontRenderer::~FontRenderer()
|
||||||
{
|
{
|
||||||
FT_Done_Face(FontFace0);
|
DLLFT_Done_Face(FontFace0);
|
||||||
FT_Done_Face(FontFace1);
|
DLLFT_Done_Face(FontFace1);
|
||||||
FT_Done_FreeType(FontLibrary0);
|
DLLFT_Done_FreeType(FontLibrary0);
|
||||||
FT_Done_FreeType(FontLibrary1);
|
DLLFT_Done_FreeType(FontLibrary1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define deg2rad(a) ((double)a * 3.14159265358979323846 / 180.0)
|
#define deg2rad(a) ((double)a * 3.14159265358979323846 / 180.0)
|
||||||
@ -135,19 +142,19 @@ FontRenderer::~FontRenderer()
|
|||||||
void FontRenderer::LoadGlyph(const int charcode)
|
void FontRenderer::LoadGlyph(const int charcode)
|
||||||
{
|
{
|
||||||
FT_Face FontFace = FontFace0;
|
FT_Face FontFace = FontFace0;
|
||||||
int glyph_index = FT_Get_Char_Index(FontFace0, charcode);
|
int glyph_index = DLLFT_Get_Char_Index(FontFace0, charcode);
|
||||||
|
|
||||||
Missing = false;
|
Missing = false;
|
||||||
if (glyph_index == 0)
|
if (glyph_index == 0)
|
||||||
{
|
{
|
||||||
// Can't find glyph in primary font - switch to secondary
|
// Can't find glyph in primary font - switch to secondary
|
||||||
FontFace = FontFace1;
|
FontFace = FontFace1;
|
||||||
glyph_index = FT_Get_Char_Index(FontFace1, charcode);
|
glyph_index = DLLFT_Get_Char_Index(FontFace1, charcode);
|
||||||
|
|
||||||
// Still can't find it - use the missing glyph symbol
|
// Still can't find it - use the missing glyph symbol
|
||||||
if (glyph_index == 0)
|
if (glyph_index == 0)
|
||||||
{
|
{
|
||||||
glyph_index = FT_Get_Char_Index(FontFace1, 0xFFFD);
|
glyph_index = DLLFT_Get_Char_Index(FontFace1, 0xFFFD);
|
||||||
Missing = true;
|
Missing = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -163,13 +170,13 @@ void FontRenderer::LoadGlyph(const int charcode)
|
|||||||
mat.xy = mat.yx = (FT_Fixed)(0x00000L);
|
mat.xy = mat.yx = (FT_Fixed)(0x00000L);
|
||||||
// Apply shear
|
// Apply shear
|
||||||
FT_Fixed f = (FT_Fixed)(tan(deg2rad(Italicness)) * 0x10000L);
|
FT_Fixed f = (FT_Fixed)(tan(deg2rad(Italicness)) * 0x10000L);
|
||||||
mat.xy += FT_MulFix(f, mat.xx);
|
mat.xy += DLLFT_MulFix(f, mat.xx);
|
||||||
mat.yy += FT_MulFix(f, mat.yx);
|
mat.yy += DLLFT_MulFix(f, mat.yx);
|
||||||
|
|
||||||
FT_Set_Transform(FontFace, &mat, 0);
|
DLLFT_Set_Transform(FontFace, &mat, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
error = FT_Load_Glyph(FontFace, glyph_index, FT_LOAD_DEFAULT);
|
error = DLLFT_Load_Glyph(FontFace, glyph_index, FT_LOAD_DEFAULT);
|
||||||
if (error)
|
if (error)
|
||||||
throw "Error loading glyph";
|
throw "Error loading glyph";
|
||||||
|
|
||||||
@ -218,7 +225,7 @@ void FontRenderer::LoadGlyph(const int charcode)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Simple version:
|
// Simple version:
|
||||||
error = FT_Render_Glyph(FontFace->glyph, FT_RENDER_MODE_NORMAL);
|
error = DLLFT_Render_Glyph(FontFace->glyph, FT_RENDER_MODE_NORMAL);
|
||||||
if (error)
|
if (error)
|
||||||
throw "Error rendering glyph";
|
throw "Error rendering glyph";
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: font.h,v 1.2 2004/07/16 15:32:34 philip Exp $
|
// $Id: font.h,v 1.3 2004/08/10 15:51:06 philip Exp $
|
||||||
|
|
||||||
#ifndef _FONT_H_
|
#ifndef _FONT_H_
|
||||||
#define _FONT_H_
|
#define _FONT_H_
|
||||||
@ -9,12 +9,6 @@
|
|||||||
#include FT_BBOX_H
|
#include FT_BBOX_H
|
||||||
|
|
||||||
|
|
||||||
// XXX: Kerning ( = hard? got to store giant table for OpenGL to use)
|
|
||||||
|
|
||||||
// XXX: Right-to-left text
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Make my IDE a little happier:
|
// Make my IDE a little happier:
|
||||||
#if 0
|
#if 0
|
||||||
#include "freetype/freetype.h"
|
#include "freetype/freetype.h"
|
||||||
@ -32,7 +26,7 @@ public:
|
|||||||
// Two fonts are required - a primary (0) font which will be used first,
|
// Two fonts are required - a primary (0) font which will be used first,
|
||||||
// and a secondary (1) font for filling in missing glyphs.
|
// and a secondary (1) font for filling in missing glyphs.
|
||||||
// (The secondary font should usually be Arial Unicode MS).
|
// (The secondary font should usually be Arial Unicode MS).
|
||||||
FontRenderer(const char* filename0, const char* filename1, int ptsize, bool unpatented_hinting);
|
FontRenderer(const char* filename0, const char* filename1, int ptsize, bool unpatented_hinting, bool hinting);
|
||||||
|
|
||||||
~FontRenderer();
|
~FontRenderer();
|
||||||
|
|
||||||
|
@ -55,6 +55,13 @@
|
|||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"/>
|
Name="Release|Win32"/>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll.cpp">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"/>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"/>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\imagemanip.cpp">
|
RelativePath=".\imagemanip.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
@ -135,6 +142,20 @@
|
|||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|Win32"/>
|
Name="Release|Win32"/>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll.h">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"/>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"/>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\freetypedll_funcs.h">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"/>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"/>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\imagemanip.h">
|
RelativePath=".\imagemanip.h">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
BIN
source/tools/fontbuilder/freetypea.dll
Executable file
BIN
source/tools/fontbuilder/freetypea.dll
Executable file
Binary file not shown.
BIN
source/tools/fontbuilder/freetypeb.dll
Executable file
BIN
source/tools/fontbuilder/freetypeb.dll
Executable file
Binary file not shown.
47
source/tools/fontbuilder/freetypedll.cpp
Executable file
47
source/tools/fontbuilder/freetypedll.cpp
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
#include "freetypedll.h"
|
||||||
|
|
||||||
|
#define FUNC(ret, name, par) ret (* DLL##name) par
|
||||||
|
#include "freetypedll_funcs.h"
|
||||||
|
#undef FUNC
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
HINSTANCE dlls[2] = { 0, 0 };
|
||||||
|
|
||||||
|
bool SelectDLL(int DLL)
|
||||||
|
{
|
||||||
|
const char* name;
|
||||||
|
switch (DLL)
|
||||||
|
{
|
||||||
|
case 0: name = "freetypea.dll"; break;
|
||||||
|
case 1: name = "freetypeb.dll"; break;
|
||||||
|
default: assert(! "Invalid DLL id!"); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
HINSTANCE hDLL;
|
||||||
|
if (dlls[DLL])
|
||||||
|
hDLL = dlls[DLL];
|
||||||
|
else
|
||||||
|
hDLL = dlls[DLL] = LoadLibraryA(name);
|
||||||
|
|
||||||
|
if (! hDLL)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#define FUNC(ret, name, par) if (NULL == (DLL##name = (ret (*) par) GetProcAddress(hDLL, #name)) ) { return true; }
|
||||||
|
#include "freetypedll_funcs.h"
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeDLLs()
|
||||||
|
{
|
||||||
|
for (int i=0; i<2; ++i)
|
||||||
|
if (dlls[i])
|
||||||
|
FreeLibrary(dlls[i]);
|
||||||
|
}
|
5
source/tools/fontbuilder/freetypedll.h
Executable file
5
source/tools/fontbuilder/freetypedll.h
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
bool SelectDLL(int DLL);
|
||||||
|
|
||||||
|
#define FUNC(ret, name, par) extern ret (* DLL##name) par
|
||||||
|
#include "freetypedll_funcs.h"
|
||||||
|
#undef FUNC
|
13
source/tools/fontbuilder/freetypedll_funcs.h
Executable file
13
source/tools/fontbuilder/freetypedll_funcs.h
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
//*
|
||||||
|
FUNC(FT_Error, FT_Init_FreeType, ( FT_Library *alibrary ));
|
||||||
|
FUNC(FT_Error, FT_Done_FreeType, ( FT_Library Library ));
|
||||||
|
FUNC(FT_Error, FT_Open_Face, ( FT_Library library, const FT_Open_Args* args, FT_Long face_index, FT_Face *aface ));
|
||||||
|
FUNC(FT_Error, FT_Done_Face, ( FT_Face face ));
|
||||||
|
FUNC(FT_Error, FT_Set_Char_Size, ( FT_Face face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horz_resolution, FT_UInt vert_resolution ));
|
||||||
|
FUNC(FT_UInt, FT_Get_Char_Index, ( FT_Face face, FT_ULong charcode ));
|
||||||
|
FUNC(FT_Long, FT_MulFix, ( FT_Long a, FT_Long b ));
|
||||||
|
FUNC(void, FT_Set_Transform, ( FT_Face face, FT_Matrix* matrix, FT_Vector* delta ));
|
||||||
|
FUNC(FT_Error, FT_Load_Glyph, ( FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags ));
|
||||||
|
FUNC(FT_Error, FT_Render_Glyph, ( FT_GlyphSlot slot, FT_Render_Mode render_mode ));
|
||||||
|
//*/
|
||||||
|
//FUNC(FT_Error, FT_Init_FreeType, ( FT_Library* ));
|
@ -1,8 +1,6 @@
|
|||||||
// $Id: fontselect.cpp,v 1.3 2004/07/16 15:32:34 philip Exp $
|
// $Id: fontselect.cpp,v 1.4 2004/08/10 15:51:06 philip Exp $
|
||||||
|
|
||||||
// Switch as appropriate, because MSVC's PCH support doesn't like me
|
#include "stdafx.h"
|
||||||
#include "../../stdafx.h"
|
|
||||||
//#include "stdafx.h"
|
|
||||||
|
|
||||||
#include "../fontselect.h"
|
#include "../fontselect.h"
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
$Id: todo.txt,v 1.1 2004/06/17 19:32:04 philip Exp $
|
$Id: todo.txt,v 1.2 2004/08/10 15:51:06 philip Exp $
|
||||||
|
|
||||||
* Optimise storage of duplicated bitmaps (e.g. e and e-with-some-accent,
|
* Optimise storage of duplicated bitmaps (e.g. e and e-with-some-accent,
|
||||||
comma and semicolon, anything and fullwidth versions, etc)
|
comma and semicolon, anything and fullwidth versions, etc)
|
||||||
|
|
||||||
* Optional antialiasing
|
* Optional antialiasing
|
||||||
|
|
||||||
|
* Right-to-left text
|
||||||
|
|
||||||
* Optional outlining (text with e.g. yellow fill and black outline
|
* Optional outlining (text with e.g. yellow fill and black outline
|
||||||
is made by drawing the black outline font and then the yellow
|
is made by drawing the black outline font and then the yellow
|
||||||
normal font)
|
normal font)
|
||||||
@ -13,4 +15,6 @@ $Id: todo.txt,v 1.1 2004/06/17 19:32:04 philip Exp $
|
|||||||
cards not to leak a little bit, especially when they force texture
|
cards not to leak a little bit, especially when they force texture
|
||||||
compression and filtering and antialiasing
|
compression and filtering and antialiasing
|
||||||
|
|
||||||
* Work out when I should say 'character', when 'code point', and when 'glyph'
|
* Work out when I should say 'character', when 'code point', and when 'glyph'
|
||||||
|
|
||||||
|
* Kerning
|
||||||
|
@ -1 +1 @@
|
|||||||
const wxString version = L"v1.0";
|
const wxString version = L"v1.1";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: wxframe.cpp,v 1.6 2004/07/16 15:32:34 philip Exp $
|
// $Id: wxframe.cpp,v 1.7 2004/08/10 15:51:06 philip Exp $
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& si
|
|||||||
StyleSizer->Add(new wxStaticText(Panel, -1, wxT("Leading:")), 0, wxALIGN_RIGHT | wxLEFT | wxRIGHT, 2);
|
StyleSizer->Add(new wxStaticText(Panel, -1, wxT("Leading:")), 0, wxALIGN_RIGHT | wxLEFT | wxRIGHT, 2);
|
||||||
StyleSizer->Add(new StyleSpinCtrl(Panel, ID_Style_Leading, -256, 256, 0), 0, wxGROW | wxLEFT | wxRIGHT, 2);
|
StyleSizer->Add(new StyleSpinCtrl(Panel, ID_Style_Leading, -256, 256, 0), 0, wxGROW | wxLEFT | wxRIGHT, 2);
|
||||||
|
|
||||||
StyleSizer->Add(new wxStaticText(Panel, -1, wxT("Alt. hinting:")), 0, wxALIGN_RIGHT | wxLEFT | wxRIGHT, 2);
|
StyleSizer->Add(new wxStaticText(Panel, -1, wxT("Disable hinting:")), 0, wxALIGN_RIGHT | wxLEFT | wxRIGHT, 2);
|
||||||
StyleSizer->Add(new wxCheckBox(Panel, ID_Style_Hinting, wxT("")), 0, wxGROW | wxLEFT | wxRIGHT, 2);
|
StyleSizer->Add(new wxCheckBox(Panel, ID_Style_Hinting, wxT("")), 0, wxGROW | wxLEFT | wxRIGHT, 2);
|
||||||
|
|
||||||
ControlSizer->Add(StyleSizer, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER, 8);
|
ControlSizer->Add(StyleSizer, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER, 8);
|
||||||
@ -269,7 +269,7 @@ void MainFrame::LoadSettings(wxString& filename)
|
|||||||
Settings->GetAttributeValue(wxT("Size"), t); SizeCtrl->SetValue(t);
|
Settings->GetAttributeValue(wxT("Size"), t); SizeCtrl->SetValue(t);
|
||||||
Settings->GetAttributeValue(wxT("Tracking"), t); TrackingCtrl->SetValue(t);
|
Settings->GetAttributeValue(wxT("Tracking"), t); TrackingCtrl->SetValue(t);
|
||||||
Settings->GetAttributeValue(wxT("Leading"), t); LeadingCtrl->SetValue(t);
|
Settings->GetAttributeValue(wxT("Leading"), t); LeadingCtrl->SetValue(t);
|
||||||
Settings->GetAttributeValue(wxT("Hinting"), t); HintingCtrl->SetValue(t);
|
Settings->GetAttributeValue(wxT("Hinting"), t); HintingCtrl->SetValue(t ? true : false);
|
||||||
|
|
||||||
|
|
||||||
// Convert back to UTF16 from hex, because wxExpr doesn't like non-ASCII
|
// Convert back to UTF16 from hex, because wxExpr doesn't like non-ASCII
|
||||||
@ -415,7 +415,8 @@ void MainFrame::GeneratePreview()
|
|||||||
FontFilename0.ToAscii(),
|
FontFilename0.ToAscii(),
|
||||||
FontFilename1.ToAscii(),
|
FontFilename1.ToAscii(),
|
||||||
SizeCtrl->GetValidValue(),
|
SizeCtrl->GetValidValue(),
|
||||||
HintingCtrl->GetValue() );
|
false,
|
||||||
|
!HintingCtrl->GetValue() );
|
||||||
|
|
||||||
Font.Boldness = BoldnessCtrl->GetValidValue();
|
Font.Boldness = BoldnessCtrl->GetValidValue();
|
||||||
Font.Italicness = 5 * ItalicnessCtrl->GetValidValue();
|
Font.Italicness = 5 * ItalicnessCtrl->GetValidValue();
|
||||||
@ -516,7 +517,8 @@ void MainFrame::GenerateTexture(wxString TextureFilename, wxString FontDefnFilen
|
|||||||
FontFilename0.ToAscii(),
|
FontFilename0.ToAscii(),
|
||||||
FontFilename1.ToAscii(),
|
FontFilename1.ToAscii(),
|
||||||
SizeCtrl->GetValidValue(),
|
SizeCtrl->GetValidValue(),
|
||||||
HintingCtrl->GetValue() );
|
false,
|
||||||
|
!HintingCtrl->GetValue() );
|
||||||
|
|
||||||
Font.Boldness = BoldnessCtrl->GetValidValue();
|
Font.Boldness = BoldnessCtrl->GetValidValue();
|
||||||
Font.Italicness = 5 * ItalicnessCtrl->GetValidValue();
|
Font.Italicness = 5 * ItalicnessCtrl->GetValidValue();
|
||||||
|
Loading…
Reference in New Issue
Block a user