OpenGL fonts

I’m still learning the basics of openGL but I wanted to try adding some on screen text to one of my practice applications. I peaked ahead a little in my book and was surprised to find openGL offers only very low level support for creating fonts. I assumed therefore, that someone has probably built a library to allow more sophisticated text drawing.

So I read the FAQ and they mentioned FreeType. Looks interesting. But I wanted to get some user opinions. Whats a good extension for simple text to screen drawing? I’d like, if at all possible, something simple, that doesn’t take long to learn. I’d rather spend time learning openGL right now.

I’m also using GLUT to handle the windowing, so anything that works well with that is preferable.

I highly recommend quesoglc.

Interesting! Though that claims TrueType is a prerequisite. Which is annoying…

in any case, I’ll look over the tutorials and see what its like.

Any more suggestions?

I only see “FreeType 2” as requirement ? And not TrueType.

Thanks, ZbuffeR, I meant to say FreeType.

But now I’ve got an interesting problem. I installed the FreeType 2 library (with some difficulty) and tried to run a test application to see if it was properly installed. And basically the worst thing imaginable happened, a syntax error was found in a header file of the library. Looking in, I found the following struct: (note the ‘generic’ and ‘internal’ fields)


 typedef struct  FT_FaceRec_
  {
    FT_Long           num_faces;
    FT_Long           face_index;

    FT_Long           face_flags;
    FT_Long           style_flags;

    FT_Long           num_glyphs;

    FT_String*        family_name;
    FT_String*        style_name;

    FT_Int            num_fixed_sizes;
    FT_Bitmap_Size*   available_sizes;

    FT_Int            num_charmaps;
    FT_CharMap*       charmaps;

    FT_Generic        generic; 

    /*# The following member variables (down to `underline_thickness') */
    /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size    */
    /*# for bitmap fonts.                                              */
    FT_BBox           bbox;

    FT_UShort         units_per_EM;
    FT_Short          ascender;
    FT_Short          descender;
    FT_Short          height;

    FT_Short          max_advance_width;
    FT_Short          max_advance_height;

    FT_Short          underline_position;
    FT_Short          underline_thickness;

    FT_GlyphSlot      glyph;
    FT_Size           size;
    FT_CharMap        charmap;

    /*@private begin */

    FT_Driver         driver;
    FT_Memory         memory;
    FT_Stream         stream;

    FT_ListRec        sizes_list;

    FT_Generic        autohint;
    void*             extensions;

    FT_Face_Internal  internal;

    /*@private end */

  } FT_FaceRec;


both fields, ‘generic’ and ‘internal’ of this struct, are recognized as keywords by my compiler (they are color coded in my editor) and so it naturally creates a syntax error.

I googled the particular error, and found this post from a guy claiming to have the exact same problem: http://bytes.com/forum/thread655129.html

a solution someone suggested in reply, was to try to use the preprocessor to redefine the term ‘generic’. But I’m concerned about how to do that safely. I feel like I’d need to define the generic keyword, and then un-define it as soon as possible, in order to not screw up possible correct use of the ‘generic’ and ‘internal’ keywords.

Still, this library seems to be widely used, how could this obvious problem exist?

What compiler do you use?

Visual C++ 9.0 Express Edition

The generic keyword should be active only when the code is compiled with support for .NET (the /clr family of options). Unless you need that support for something, you can disable it and the default will again become ordinary identifier.

I see. How can I disable it?

Hey, guys. I succesfully installed freetype on my system, but I’m finding precious little information on how to install quesoGLC. The docs folder has no installation info.

I downloaded the binary files, with some libraries and dll’s, and i THINK i put them in the right places. I’m able to compile and build quesoGLC but the program crashes at runtime, claiming fontconfig failed.

I kind of thought the fontconfig library came with quesogGLC but i think I was mistaken now.

In anycase, does anyone anything about this? I’ve been finding very little info on the web about it, for some odd reason.

Little information ? first google link is http://fontconfig.org/

I should remind you i’m still very much a beginner. >.< so I’m not always sure what to look for, nor recognize what I need when I see it.

Yeah, that was the first place i looked. It seems to give a lot of information about what it is, and how to use it, but i have found little info on how to install and set it up. I’m going to look again, maybe i missed something.

In the quesoglc-0.7.1.zip, there is a nice INSTALL.win file that explains where to get a precompiled fontconfig dll, but apparently is has moved a bit. I found links to binaries near the bottom here :
http://www.gtk.org/download-windows.html
Oh, and you will need expat too.

Funny how setting up a working development environment is much easier under linux nowadays…

SO I’VE NOTICED! Sheesh, everything is under linux these days!!

ugh… man. All this library setup stuff is always killing me. I’m not a bad programmer, but I seem pretty terrible at this, I wish I could get a big fat book just on installing library files. I’m not lazy, I’m just lost!

hmm… that should be my new sig…

well I opened up that Win file. It looks helpful, but the FontConfig part worries me.

I did find a precompiled package, which came with just a dll. I put the dll in the right place, I think, but the only thing that I don’t know about is, FontConfig has to know where to find certain resource folders. So just pasting the dll into C:/WINDOWS/system32 probably wont’ be enough in itself. Tutorials mention that there is an environment variable for this path, but it doesn’t appear to exist on my system, I guess its on linux.

http://www.google.com/search?q=install+fontconfig+windows
first link here has quite a bit of details.
good luck, it will work :slight_smile:

Anyway, maybe you could ask HexCat via P.M. how to use its “highly recommended quesoglc” :slight_smile:
Maybe it is overkill for your purpose, and you may find that glFont is easier to use :
http://students.cs.byu.edu/~bfish/glfontfaq.php

Thanks, Zbuffer for your time. I really do appreciate the help. I WOULD like to move to something simpler! However, this has been a learning process for me, and I want to follow through with it for that reason.

I discovered that the fontconfig DLL files have to have a folder named ‘etc’ that contains certain resources, so if I paste that into the folder with the DLL’s, it no longer says ‘cannot load default config files’ however, the application still crashes, I think maybe fontconfig is okay now, but I haven’t properly installed it.

So I opened that WIN file, and followed the directions, but attempting to use make completely failed. Here was what I got from the command prompt:


C:\Program Files\quesoglc-0.7.1>mingw32-make -f makefile.mgw
gcc -c -O2 -fomit-frame-pointer -ffast-math -DGLEW_MX -DGLEW_BUILD -Iinclude -Is
rc -Ic:\mingw\include -Ic:\mingw\include\freetype -DQUESOGLC_VERSION=\"0.7.1\" s
rc/context.c -o build/context.o
In file included from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/omaster.h:28:35: fontconfig/fontconfig.h: No such file or directory
In file included from src/ocharmap.h:29,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocontext.h:34:22: ft2build.h: No such file or directory
src/ocontext.h:35:10: #include expects "FILENAME" or <FILENAME>
src/ocontext.h:39:10: #include expects "FILENAME" or <FILENAME>
In file included from src/ocharmap.h:29,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocontext.h:104: error: syntax error before "FT_ListNodeRec"
src/ocontext.h:104: warning: no semicolon at end of struct or union
src/ocontext.h:110: error: syntax error before "library"
src/ocontext.h:110: warning: data definition has no type or storage class
src/ocontext.h:114: error: syntax error before '*' token
src/ocontext.h:114: warning: data definition has no type or storage class
src/ocontext.h:122: error: syntax error before "currentFontList"
src/ocontext.h:122: warning: data definition has no type or storage class
src/ocontext.h:123: error: syntax error before "fontList"
src/ocontext.h:123: warning: data definition has no type or storage class
src/ocontext.h:124: error: syntax error before "genFontList"
src/ocontext.h:124: warning: data definition has no type or storage class
src/ocontext.h:140: error: syntax error before "atlasList"
src/ocontext.h:140: warning: data definition has no type or storage class
src/ocontext.h:151: error: syntax error before '}' token
src/ocontext.h:157: error: syntax error before "FT_ListRec"
src/ocontext.h:157: warning: no semicolon at end of struct or union
src/ocontext.h:159: error: syntax error before '}' token
src/ocontext.h:165: error: syntax error before "FT_ListRec"
src/ocontext.h:165: warning: no semicolon at end of struct or union
src/ocontext.h:187: error: syntax error before '}' token
src/ocontext.h:204: error: syntax error before '*' token
src/ocontext.h:204: warning: data definition has no type or storage class
In file included from src/ocharmap.h:30,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/oglyph.h:34: error: syntax error before "FT_ListNodeRec"
src/oglyph.h:34: warning: no semicolon at end of struct or union
src/oglyph.h:36: warning: data definition has no type or storage class
src/oglyph.h:37: error: syntax error before "codepoint"
src/oglyph.h:37: warning: data definition has no type or storage class
src/oglyph.h:49: error: syntax error before '}' token
src/oglyph.h:51: error: syntax error before "inIndex"
In file included from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocharmap.h:37: error: syntax error before "FT_ULong"
src/ocharmap.h:37: warning: no semicolon at end of struct or union
src/ocharmap.h:39: error: syntax error before '}' token
src/ocharmap.h:42: error: syntax error before "FcCharSet"
src/ocharmap.h:42: warning: no semicolon at end of struct or union
src/ocharmap.h:44: error: syntax error before '}' token
In file included from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/omaster.h:35: error: syntax error before "FcPattern"
src/omaster.h:35: warning: no semicolon at end of struct or union
src/omaster.h:40: error: syntax error before '*' token
src/omaster.h:41: warning: data definition has no type or storage class
src/omaster.h:44: error: syntax error before '*' token
src/omaster.h:45: warning: data definition has no type or storage class
src/omaster.h:46: error: syntax error before "FcChar8"
In file included from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ofacedesc.h:35: error: syntax error before "FT_ListNodeRec"
src/ofacedesc.h:35: warning: no semicolon at end of struct or union
src/ofacedesc.h:36: warning: data definition has no type or storage class
src/ofacedesc.h:37: error: syntax error before "face"
src/ofacedesc.h:37: warning: data definition has no type or storage class
src/ofacedesc.h:41: error: syntax error before "glyphList"
src/ofacedesc.h:41: warning: data definition has no type or storage class
src/ofacedesc.h:46: error: syntax error before '*' token
src/ofacedesc.h:51: error: syntax error before "__glcFaceDescOpen"
src/ofacedesc.h:52: warning: data definition has no type or storage class
src/ofacedesc.h:61: error: syntax error before "FT_ULong"
src/ofacedesc.h:63: error: syntax error before "FT_ULong"
src/ofacedesc.h:67: error: syntax error before "FT_ULong"
src/ofacedesc.h:70: error: syntax error before '*' token
src/ofacedesc.h:72: warning: data definition has no type or storage class
src/ofacedesc.h:76: error: syntax error before "FT_UInt"
src/ofacedesc.h:79: error: syntax error before '*' token
src/ofacedesc.h:79: warning: data definition has no type or storage class
In file included from include/internal.h:58,
                 from src/context.c:49:
src/ofont.h:62: error: syntax error before "FT_ULong"
In file included from src/context.c:49:
include/internal.h:206: error: syntax error before '*' token
include/internal.h:207: warning: data definition has no type or storage class
include/internal.h:213: error: syntax error before '*' token
include/internal.h:219: error: syntax error before '*' token
include/internal.h:221: warning: data definition has no type or storage class
include/internal.h:266: error: syntax error before '*' token
include/internal.h:306: error: syntax error before '*' token
include/internal.h:309: warning: data definition has no type or storage class
include/internal.h:314: error: syntax error before '*' token
include/internal.h:317: warning: data definition has no type or storage class
src/context.c: In function `glcCallbackFunc':
src/context.c:87: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: dereferencing pointer to incomplete type
src/context.c:102: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDataPointer':
src/context.c:123: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: dereferencing pointer to incomplete type
src/context.c:132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDeleteGLObjects':
src/context.c:156: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:156: error: (Each undeclared identifier is reported only once
src/context.c:156: error: for each function it appears in.)
src/context.c:156: error: syntax error before "node"
src/context.c:158: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: dereferencing pointer to incomplete type
src/context.c:170: error: `node' undeclared (first use in this function)
src/context.c:170: error: dereferencing pointer to incomplete type
src/context.c:174: error: dereferencing pointer to incomplete type
src/context.c:175: error: dereferencing pointer to incomplete type
src/context.c:176: error: dereferencing pointer to incomplete type
src/context.c:177: error: dereferencing pointer to incomplete type
src/context.c:178: error: dereferencing pointer to incomplete type
src/context.c:182: error: dereferencing pointer to incomplete type
src/context.c:183: error: dereferencing pointer to incomplete type
src/context.c:184: error: dereferencing pointer to incomplete type
src/context.c:188: error: dereferencing pointer to incomplete type
src/context.c:189: error: dereferencing pointer to incomplete type
src/context.c:190: error: dereferencing pointer to incomplete type
src/context.c: In function `__glcChangeState':
src/context.c:221: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:221: error: dereferencing pointer to incomplete type
src/context.c:230: error: dereferencing pointer to incomplete type
src/context.c:233: error: dereferencing pointer to incomplete type
src/context.c:236: error: dereferencing pointer to incomplete type
src/context.c:237: error: dereferencing pointer to incomplete type
src/context.c:240: error: dereferencing pointer to incomplete type
src/context.c:241: error: dereferencing pointer to incomplete type
src/context.c:251: error: dereferencing pointer to incomplete type
src/context.c:254: error: dereferencing pointer to incomplete type
src/context.c:257: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDisable':
src/context.c:305: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcEnable':
src/context.c:340: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcGetCallbackFunc':
src/context.c:360: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: dereferencing pointer to incomplete type
src/context.c:375: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListc':
src/context.c:414: error: `FcChar8' undeclared (first use in this function)
src/context.c:414: error: `catalog' undeclared (first use in this function)
src/context.c:418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListi':
src/context.c:534: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:534: error: syntax error before "node"
src/context.c:536: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: dereferencing pointer to incomplete type
src/context.c:583: error: `node' undeclared (first use in this function)
src/context.c:583: error: dereferencing pointer to incomplete type
src/context.c:591: error: dereferencing pointer to incomplete type
src/context.c:602: error: dereferencing pointer to incomplete type
src/context.c:605: error: syntax error before "glyphNode"
src/context.c:607: error: `glyphNode' undeclared (first use in this function)
src/context.c:607: error: dereferencing pointer to incomplete type
src/context.c:627: error: dereferencing pointer to incomplete type
src/context.c:628: error: dereferencing pointer to incomplete type
src/context.c:635: error: dereferencing pointer to incomplete type
src/context.c:636: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:640: error: dereferencing pointer to incomplete type
src/context.c:654: error: dereferencing pointer to incomplete type
src/context.c:655: error: dereferencing pointer to incomplete type
src/context.c:663: error: dereferencing pointer to incomplete type
src/context.c:664: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:668: error: dereferencing pointer to incomplete type
src/context.c:674: error: dereferencing pointer to incomplete type
src/context.c:676: error: dereferencing pointer to incomplete type
src/context.c:679: error: dereferencing pointer to incomplete type
src/context.c:682: error: syntax error before "glyphNode"
src/context.c:684: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetPointer':
src/context.c:728: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: dereferencing pointer to incomplete type
src/context.c:743: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetc':
src/context.c:790: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: dereferencing pointer to incomplete type
src/context.c:826: error: dereferencing pointer to incomplete type
src/context.c:830: error: dereferencing pointer to incomplete type
src/context.c:833: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetf':
src/context.c:866: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: dereferencing pointer to incomplete type
src/context.c:881: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetfv':
src/context.c:915: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: dereferencing pointer to incomplete type
src/context.c:932: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGeti':
src/context.c:1025: error: `FT_ListNode' undeclared (first use in this function)

src/context.c:1025: error: syntax error before "node"
src/context.c:1028: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: dereferencing pointer to incomplete type
src/context.c:1074: error: dereferencing pointer to incomplete type
src/context.c:1076: error: `node' undeclared (first use in this function)
src/context.c:1076: error: dereferencing pointer to incomplete type
src/context.c:1080: error: dereferencing pointer to incomplete type
src/context.c:1084: error: dereferencing pointer to incomplete type
src/context.c:1087: error: syntax error before "glyphNode"
src/context.c:1089: error: `glyphNode' undeclared (first use in this function)
src/context.c:1089: error: dereferencing pointer to incomplete type
src/context.c:1098: error: dereferencing pointer to incomplete type
src/context.c:1100: error: dereferencing pointer to incomplete type
src/context.c:1102: error: dereferencing pointer to incomplete type
src/context.c:1105: error: dereferencing pointer to incomplete type
src/context.c:1107: error: dereferencing pointer to incomplete type
src/context.c:1109: error: dereferencing pointer to incomplete type
src/context.c:1110: error: dereferencing pointer to incomplete type
src/context.c:1113: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1115: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1117: error: dereferencing pointer to incomplete type
src/context.c:1121: error: dereferencing pointer to incomplete type
src/context.c:1125: error: dereferencing pointer to incomplete type
src/context.c:1126: error: dereferencing pointer to incomplete type
src/context.c:1127: error: dereferencing pointer to incomplete type
src/context.c:1130: error: syntax error before "glyphNode"
src/context.c:1132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcIsEnabled':
src/context.c:1162: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: dereferencing pointer to incomplete type
src/context.c:1188: error: dereferencing pointer to incomplete type
src/context.c:1190: error: dereferencing pointer to incomplete type
src/context.c:1192: error: dereferencing pointer to incomplete type
src/context.c:1194: error: dereferencing pointer to incomplete type
src/context.c:1196: error: dereferencing pointer to incomplete type
src/context.c:1198: error: dereferencing pointer to incomplete type
src/context.c: In function `glcStringType':
src/context.c:1262: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: dereferencing pointer to incomplete type
src/context.c:1283: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPushAttribQSO':
src/context.c:1415: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: dereferencing pointer to incomplete type
src/context.c:1424: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1433: error: dereferencing pointer to incomplete type
src/context.c:1438: error: dereferencing pointer to incomplete type
src/context.c:1443: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPopAttribQSO':
src/context.c:1472: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: dereferencing pointer to incomplete type
src/context.c:1481: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1490: error: dereferencing pointer to incomplete type
src/context.c:1493: error: dereferencing pointer to incomplete type
src/context.c:1496: error: dereferencing pointer to incomplete type
src/context.c: At top level:
src/ocontext.h:186: error: storage size of `memoryManager' isn't known
mingw32-make: *** [build/context.o] Error 1

C:\Program Files\quesoglc-0.7.1>

the first thing that seems to go wrong is this: fontconfig/fontconfig.h: No such file or directory

a header file for fontconfig? I downloaded the fontconfig binaries straight from that link you referred to there, ZBuffer, and there’s no header files included.

In the gtk.org windows page I provided, there are binaries, as well as a dev package.
you did the etc\fonts\fonts.conf modifications as explained here ?

oh I see. Sorry, thanks. Thus far, I’ve always found the binaries to contain the headers and such as well. I’ll get to work!

sorry for all the questions, I need to learn more about this… somewhere.

Okay, so I got both the dev package, and the binaries and installed them into: c:\program files\fontconfigdev and c:\program files\fontconfigbin respectively. The binaries contain a subset of the folders in the dev package. So I guess i need to… combine them somehow?

Once I’ve got these installed though, as far as I know, the next thing I need to do is tell whatever needs to use fontconfig where to find it. (if not put the fontconfig files in a specific location)I THINK that would be MinGW in this case, and since its looking for fontconfig/fontconfig.h, I suspect that I have to paste the contents of the fontconfig/include folder, into the mingw32/include folder. Thats only my best guess though.

so I just copied the dll from the binaries into system32 along with the folder ‘etc’ into C:\Windows\system32. I then followed the directions described in the INSTALL.win for building quesoGLC. This time, it didn’t say anything about fontconfig.h, so I think I put that in the right place, but I still got a massive pile of errors while trying to use make:

typed:


C:\Program Files\quesoglc-0.7.1>mingw32-make -f makefile.mgw

results:


gcc -c -O2 -fomit-frame-pointer -ffast-math -DGLEW_MX -DGLEW_BUILD -Iinclude -Is
rc -Ic:\mingw\include -Ic:\mingw\include\freetype -DQUESOGLC_VERSION=\"0.7.1\" s
rc/context.c -o build/context.o
In file included from src/ocharmap.h:29,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocontext.h:34:22: ft2build.h: No such file or directory
src/ocontext.h:35:10: #include expects "FILENAME" or <FILENAME>
src/ocontext.h:39:10: #include expects "FILENAME" or <FILENAME>
In file included from src/ocharmap.h:29,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocontext.h:104: error: syntax error before "FT_ListNodeRec"
src/ocontext.h:104: warning: no semicolon at end of struct or union
src/ocontext.h:110: error: syntax error before "library"
src/ocontext.h:110: warning: data definition has no type or storage class
src/ocontext.h:122: error: syntax error before "currentFontList"
src/ocontext.h:122: warning: data definition has no type or storage class
src/ocontext.h:123: error: syntax error before "fontList"
src/ocontext.h:123: warning: data definition has no type or storage class
src/ocontext.h:124: error: syntax error before "genFontList"
src/ocontext.h:124: warning: data definition has no type or storage class
src/ocontext.h:140: error: syntax error before "atlasList"
src/ocontext.h:140: warning: data definition has no type or storage class
src/ocontext.h:151: error: syntax error before '}' token
src/ocontext.h:157: error: syntax error before "FT_ListRec"
src/ocontext.h:157: warning: no semicolon at end of struct or union
src/ocontext.h:159: error: syntax error before '}' token
src/ocontext.h:165: error: syntax error before "FT_ListRec"
src/ocontext.h:165: warning: no semicolon at end of struct or union
src/ocontext.h:187: error: syntax error before '}' token
In file included from src/ocharmap.h:30,
                 from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/oglyph.h:34: error: syntax error before "FT_ListNodeRec"
src/oglyph.h:34: warning: no semicolon at end of struct or union
src/oglyph.h:36: warning: data definition has no type or storage class
src/oglyph.h:37: error: syntax error before "codepoint"
src/oglyph.h:37: warning: data definition has no type or storage class
src/oglyph.h:49: error: syntax error before '}' token
src/oglyph.h:51: error: syntax error before "inIndex"
In file included from src/omaster.h:30,
                 from src/ofacedesc.h:29,
                 from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ocharmap.h:37: error: syntax error before "FT_ULong"
src/ocharmap.h:37: warning: no semicolon at end of struct or union
src/ocharmap.h:39: error: syntax error before '}' token
In file included from src/ofont.h:28,
                 from include/internal.h:58,
                 from src/context.c:49:
src/ofacedesc.h:35: error: syntax error before "FT_ListNodeRec"
src/ofacedesc.h:35: warning: no semicolon at end of struct or union
src/ofacedesc.h:37: error: syntax error before "face"
src/ofacedesc.h:37: warning: data definition has no type or storage class
src/ofacedesc.h:41: error: syntax error before "glyphList"
src/ofacedesc.h:41: warning: data definition has no type or storage class
src/ofacedesc.h:51: error: syntax error before "__glcFaceDescOpen"
src/ofacedesc.h:52: warning: data definition has no type or storage class
src/ofacedesc.h:61: error: syntax error before "FT_ULong"
src/ofacedesc.h:63: error: syntax error before "FT_ULong"
src/ofacedesc.h:67: error: syntax error before "FT_ULong"
src/ofacedesc.h:76: error: syntax error before "FT_UInt"
In file included from include/internal.h:58,
                 from src/context.c:49:
src/ofont.h:62: error: syntax error before "FT_ULong"
src/context.c: In function `glcCallbackFunc':
src/context.c:87: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: dereferencing pointer to incomplete type
src/context.c:102: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDataPointer':
src/context.c:123: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: dereferencing pointer to incomplete type
src/context.c:132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDeleteGLObjects':
src/context.c:156: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:156: error: (Each undeclared identifier is reported only once
src/context.c:156: error: for each function it appears in.)
src/context.c:156: error: syntax error before "node"
src/context.c:158: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: dereferencing pointer to incomplete type
src/context.c:170: error: `node' undeclared (first use in this function)
src/context.c:170: error: dereferencing pointer to incomplete type
src/context.c:174: error: dereferencing pointer to incomplete type
src/context.c:175: error: dereferencing pointer to incomplete type
src/context.c:176: error: dereferencing pointer to incomplete type
src/context.c:177: error: dereferencing pointer to incomplete type
src/context.c:178: error: dereferencing pointer to incomplete type
src/context.c:182: error: dereferencing pointer to incomplete type
src/context.c:183: error: dereferencing pointer to incomplete type
src/context.c:184: error: dereferencing pointer to incomplete type
src/context.c:188: error: dereferencing pointer to incomplete type
src/context.c:189: error: dereferencing pointer to incomplete type
src/context.c:190: error: dereferencing pointer to incomplete type
src/context.c: In function `__glcChangeState':
src/context.c:221: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:221: error: dereferencing pointer to incomplete type
src/context.c:230: error: dereferencing pointer to incomplete type
src/context.c:233: error: dereferencing pointer to incomplete type
src/context.c:236: error: dereferencing pointer to incomplete type
src/context.c:237: error: dereferencing pointer to incomplete type
src/context.c:240: error: dereferencing pointer to incomplete type
src/context.c:241: error: dereferencing pointer to incomplete type
src/context.c:251: error: dereferencing pointer to incomplete type
src/context.c:254: error: dereferencing pointer to incomplete type
src/context.c:257: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDisable':
src/context.c:305: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcEnable':
src/context.c:340: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcGetCallbackFunc':
src/context.c:360: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: dereferencing pointer to incomplete type
src/context.c:375: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListc':
src/context.c:418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListi':
src/context.c:534: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:534: error: syntax error before "node"
src/context.c:536: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: dereferencing pointer to incomplete type
src/context.c:583: error: `node' undeclared (first use in this function)
src/context.c:583: error: dereferencing pointer to incomplete type
src/context.c:591: error: dereferencing pointer to incomplete type
src/context.c:602: error: dereferencing pointer to incomplete type
src/context.c:605: error: syntax error before "glyphNode"
src/context.c:607: error: `glyphNode' undeclared (first use in this function)
src/context.c:607: error: dereferencing pointer to incomplete type
src/context.c:627: error: dereferencing pointer to incomplete type
src/context.c:628: error: dereferencing pointer to incomplete type
src/context.c:635: error: dereferencing pointer to incomplete type
src/context.c:636: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:640: error: dereferencing pointer to incomplete type
src/context.c:654: error: dereferencing pointer to incomplete type
src/context.c:655: error: dereferencing pointer to incomplete type
src/context.c:663: error: dereferencing pointer to incomplete type
src/context.c:664: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:668: error: dereferencing pointer to incomplete type
src/context.c:674: error: dereferencing pointer to incomplete type
src/context.c:676: error: dereferencing pointer to incomplete type
src/context.c:679: error: dereferencing pointer to incomplete type
src/context.c:682: error: syntax error before "glyphNode"
src/context.c:684: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetPointer':
src/context.c:728: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: dereferencing pointer to incomplete type
src/context.c:743: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetc':
src/context.c:790: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: dereferencing pointer to incomplete type
src/context.c:826: error: dereferencing pointer to incomplete type
src/context.c:830: error: dereferencing pointer to incomplete type
src/context.c:833: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetf':
src/context.c:866: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: dereferencing pointer to incomplete type
src/context.c:881: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetfv':
src/context.c:915: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: dereferencing pointer to incomplete type
src/context.c:932: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGeti':
src/context.c:1025: error: `FT_ListNode' undeclared (first use in this function)

src/context.c:1025: error: syntax error before "node"
src/context.c:1028: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: dereferencing pointer to incomplete type
src/context.c:1074: error: dereferencing pointer to incomplete type
src/context.c:1076: error: `node' undeclared (first use in this function)
src/context.c:1076: error: dereferencing pointer to incomplete type
src/context.c:1080: error: dereferencing pointer to incomplete type
src/context.c:1084: error: dereferencing pointer to incomplete type
src/context.c:1087: error: syntax error before "glyphNode"
src/context.c:1089: error: `glyphNode' undeclared (first use in this function)
src/context.c:1089: error: dereferencing pointer to incomplete type
src/context.c:1098: error: dereferencing pointer to incomplete type
src/context.c:1100: error: dereferencing pointer to incomplete type
src/context.c:1102: error: dereferencing pointer to incomplete type
src/context.c:1105: error: dereferencing pointer to incomplete type
src/context.c:1107: error: dereferencing pointer to incomplete type
src/context.c:1109: error: dereferencing pointer to incomplete type
src/context.c:1110: error: dereferencing pointer to incomplete type
src/context.c:1113: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1115: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1117: error: dereferencing pointer to incomplete type
src/context.c:1121: error: dereferencing pointer to incomplete type
src/context.c:1125: error: dereferencing pointer to incomplete type
src/context.c:1126: error: dereferencing pointer to incomplete type
src/context.c:1127: error: dereferencing pointer to incomplete type
src/context.c:1130: error: syntax error before "glyphNode"
src/context.c:1132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcIsEnabled':
src/context.c:1162: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: dereferencing pointer to incomplete type
src/context.c:1188: error: dereferencing pointer to incomplete type
src/context.c:1190: error: dereferencing pointer to incomplete type
src/context.c:1192: error: dereferencing pointer to incomplete type
src/context.c:1194: error: dereferencing pointer to incomplete type
src/context.c:1196: error: dereferencing pointer to incomplete type
src/context.c:1198: error: dereferencing pointer to incomplete type
src/context.c: In function `glcStringType':
src/context.c:1262: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: dereferencing pointer to incomplete type
src/context.c:1283: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPushAttribQSO':
src/context.c:1415: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: dereferencing pointer to incomplete type
src/context.c:1424: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1433: error: dereferencing pointer to incomplete type
src/context.c:1438: error: dereferencing pointer to incomplete type
src/context.c:1443: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPopAttribQSO':
src/context.c:1472: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: dereferencing pointer to incomplete type
src/context.c:1481: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1490: error: dereferencing pointer to incomplete type
src/context.c:1493: error: dereferencing pointer to incomplete type
src/context.c:1496: error: dereferencing pointer to incomplete type
src/context.c: At top level:
src/ocontext.h:186: error: storage size of `memoryManager' isn't known
mingw32-make: *** [build/context.o] Error 1

C:\Program Files\quesoglc-0.7.1>