First, CVSreport failed on my last commit, here's the ChangeLog : 2003/05/04 02:56 zerodeux - renamed MSVC6 project files * s/dllngl/libngl/ (DLL target) * s/libngl/libngl_static/ (LIB target)
(that's cosmetic, but when patterns are very uniform it makes packaging easy to read and maintain, same thing with lowercasing) Questions : * What about an examples.dsw which gathers the .dsp in examples/ ? (with static linking I guess) * What's the status of wizard/ ? I guess there's no point in including it in the source distribution as of today ? I'd still like to do an online wizard in PHP which asks the basic questions and builds the full building framework (msvc6/7/autotools/etc) : easy to write and immediately runnable by everyone. I was waiting for the stabilization of the build details, especially autotools. That's something that should be done shortly after the release I think (easier than deb-packaging ...). * What's the status of Mac/CW build ? * As for the autotools build under MacOSX, if I can log on a Macbox with a fresh Fink install, I'd be glad to do the port. Received: from meeloo.net ([62.4.18.112]) by sc8-sf-list1.sourceforge.net with esmtp (Cipher TLSv1:DES-CBC3-SHA:168) (Exim 3.31-VA-mm2 #1 (Debian)) id 19CHbV-0005Ws-00 for <[EMAIL PROTECTED]>; Sun, 04 May 2003 04:24:26 -0700 Received: from [10.1.1.130] (helo=meeloo.net ident=HydraIRC) by meeloo.net with esmtp (Exim 3.35 #1 (Debian)) id 19CHas-0004rS-00 for <[EMAIL PROTECTED]>; Sun, 04 May 2003 13:23:46 +0200 Message-ID: <[EMAIL PROTECTED]> From: Sebastien Metrot <[EMAIL PROTECTED]> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4a) Gecko/20030401 X-Accept-Language: en-us, en MIME-Version: 1.0 To: [EMAIL PROTECTED] Subject: Re: [NGL-devel] Windows & Mac References: <[EMAIL PROTECTED]> In-Reply-To: <[EMAIL PROTECTED]> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: [EMAIL PROTECTED] Errors-To: [EMAIL PROTECTED] X-BeenThere: [EMAIL PROTECTED] X-Mailman-Version: 2.0.9-sf.net Precedence: bulk Reply-To: [EMAIL PROTECTED] List-Help: <mailto:[EMAIL PROTECTED]> List-Post: <mailto:[EMAIL PROTECTED]> List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net> List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel> Date: Sun May 4 04:25:41 2003 X-Original-Date: Sun, 04 May 2003 13:23:36 +0200 Vincent Caron wrote: >First, CVSreport failed on my last commit, here's the ChangeLog : > >2003/05/04 02:56 zerodeux >- renamed MSVC6 project files > * s/dllngl/libngl/ (DLL target) > * s/libngl/libngl_static/ (LIB target) > >(that's cosmetic, but when patterns are very uniform it makes packaging easy >to read >and maintain, same thing with lowercasing) > > > Ok. >Questions : > >* What about an examples.dsw which gathers the .dsp in examples/ ? (with static >linking I guess) > > Not sure there is still much interest in VC6 right now. At least not on my part (both personally and professionaly). > >* What's the status of wizard/ ? I guess there's no point in including it in >the >source distribution as of today ? > > >I'd still like to do an online wizard in PHP which asks the basic questions >and builds >the full building framework (msvc6/7/autotools/etc) : easy to write and >immediately >runnable by everyone. I was waiting for the stabilization of the build details, >especially autotools. That's something that should be done shortly after the >release I >think (easier than deb-packaging ...). > > The half started wizard should get shot :). It is only compatible with VC6 and yet not working. I don't plan to make it work at all in this life or in another. Let's remove it and add something better later (PHP could be cool, local scripts/pgms could be quite nice too...). > >* What's the status of Mac/CW build ? > > It compiles OK on Metrowerks Codewarrior, both in MachO and classic mode. However the gcc build is broken (as you know :). Feature-wise it's far from complete: - no timers (but nglTime is ok) - not sure about the idle loop, should be ok. - not all mouse and keyboard handling is done (a god keyboard map is really missing and I didn't find a way to get low level keyboard event for dead keys) - POSIX file handling is wokring OK in OSX MachO, however there is no support for FSPecs right now (my colleague Jankoen is considering adding support for this but I don't think he started to work on it). - no fullscreen support. - context creation is very basic To say the least the mac version is more a proof of concept that a working ngl implementation. As i'm working extensively on OSX (even more than on Win32) for the moment, and learning every day new tricks, there is hope for this target :). > >* As for the autotools build under MacOSX, if I can log on a Macbox with a >fresh Fink >install, I'd be glad to do the port. > > Be my guest :). (just do as usual, the mac is allways online when I'm at home). MeeLoo Received: from zerodeux.net ([62.212.104.175]) by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 (Debian)) id 19CKAQ-0002Oa-00 for <[EMAIL PROTECTED]>; Sun, 04 May 2003 07:08:38 -0700 Received: from zerodeux.net (localhost [127.0.0.1]) by zerodeux.net (Postfix) with SMTP id 40CE3B4C0 for <[EMAIL PROTECTED]>; Sun, 4 May 2003 16:08:36 +0200 (CEST) Received: from 192.168.1.3 (SquirrelMail authenticated user zerodeux) by zerodeux.net with HTTP; Sun, 4 May 2003 16:08:36 +0200 (CEST) Message-ID: <[EMAIL PROTECTED]> In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Subject: Re: [NGL-devel] Windows & Mac From: "Vincent Caron" <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] User-Agent: SquirrelMail/1.4.0 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Sender: [EMAIL PROTECTED] Errors-To: [EMAIL PROTECTED] X-BeenThere: [EMAIL PROTECTED] X-Mailman-Version: 2.0.9-sf.net Precedence: bulk Reply-To: [EMAIL PROTECTED] List-Help: <mailto:[EMAIL PROTECTED]> List-Post: <mailto:[EMAIL PROTECTED]> List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net> List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel> Date: Sun May 4 07:14:48 2003 X-Original-Date: Sun, 4 May 2003 16:08:36 +0200 (CEST) >>* What about an examples.dsw which gathers the .dsp in examples/ ? (with >>static >>linking I guess) >> > Not sure there is still much interest in VC6 right now. At least not on > my part (both personally and professionaly). OK, forget it. >>* What's the status of wizard/ ? I guess there's no point in including it in >>the >>source distribution as of today ? >> > The half started wizard should get shot :). It is only compatible with > VC6 and yet not working. I don't plan to make it work at all in this > life or in another. Let's remove it and add something better later (PHP > could be cool, local scripts/pgms could be quite nice too...). OK, it's going to die in the next hours. >>* What's the status of Mac/CW build ? >> > To say the least the mac version is more a proof of concept that a > working ngl implementation. As i'm working extensively on OSX (even more > than on Win32) for the moment, and learning every day new tricks, there > is hope for this target :). OK, that's work in progress so I don't include conditions on the Mac build for the next releases. >>* As for the autotools build under MacOSX, if I can log on a Macbox with a >>fresh Fink >>install, I'd be glad to do the port. >> > Be my guest :). (just do as usual, the mac is allways online when I'm at > home). Hum, OK, watch out your CPU cycles sinking without notice :) Received: from zerodeux.net ([62.212.104.175]) by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 (Debian)) id 19CSfc-000620-00 for <[EMAIL PROTECTED]>; Sun, 04 May 2003 16:13:25 -0700 Received: from zerodeux.net (localhost [127.0.0.1]) by zerodeux.net (Postfix) with SMTP id 5333CB4C0 for <[EMAIL PROTECTED]>; Mon, 5 May 2003 01:13:25 +0200 (CEST) Received: from 192.168.1.3 (SquirrelMail authenticated user zerodeux) by zerodeux.net with HTTP; Mon, 5 May 2003 01:13:25 +0200 (CEST) Message-ID: <[EMAIL PROTECTED]> From: "Vincent Caron" <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] User-Agent: SquirrelMail/1.4.0 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Subject: [NGL-devel] About fonts Sender: [EMAIL PROTECTED] Errors-To: [EMAIL PROTECTED] X-BeenThere: [EMAIL PROTECTED] X-Mailman-Version: 2.0.9-sf.net Precedence: bulk Reply-To: [EMAIL PROTECTED] List-Help: <mailto:[EMAIL PROTECTED]> List-Post: <mailto:[EMAIL PROTECTED]> List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net> List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>, <mailto:[EMAIL PROTECTED]> List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel> Date: Sun May 4 16:14:06 2003 X-Original-Date: Mon, 5 May 2003 01:13:25 +0200 (CEST) I'll try to put here some plain facts which are not in the reference documentation. Hopefully this will give us a common vocabulary and help to foresee what's left for the integration of a font service in NUI. I explaned the first paragraphs to Meeloo on IRC but they are there for the record and completeness (anticipating RTFMs :)). -- First definition : family. A font family is what you would call a 'font name', eg. 'Arial', 'Tahoma', etc. There is a category one level up called 'foundry', which most of the time is the name of the company who did the font design. Some families have a wealth of different implementation/designs, for instance a serious foundry will have several dozen of 'Times' variant. Two typographers could hardly be sure to talk about the same font when they only specify the foundry and the family, but for our technical purposes that will be OK :). Second definition : a face (or typeface). This is a stylistic variation of the same family, most of the time with a different slant (roman/italic) and/or different weight (medium/bold). A well designed font family will have each of its face designed manually; a digital font family is often made up of 4 faces : roman/medium, roman/bold, italic/medium, italic/bold. A face is implemented as one font file (true for all formats, including TrueType), thus nglFont is an abstraction of a single face. It is possible to synthetize italics and/or bolds faces from a single roman/medium, but the result is most of the time not satisfying, because hinting is still better handled manually (as of today; this is slowly changing with smarter autohinters). Technically, nglFont cannot synthetize such fonts right now. Here is what is possible : - FreeType easily supports a usermade 2x2 transform matrix, doing italics is a matter of building a shearing matrix from a given user angle. A nglFontBase::SetMatrix() could do the trick. - FreeType as an experimental support for enboldening, using a different rasterizer called a 'path stroker'. I did not tested it nor do I know the interface to it. Before we get into font selection, let me put some details about nglFontCache. A nglFont instance can accomodate one nglFontCache, and for now the default nglFontTexCache only works consistently with fixed settings. In other words, when the cache is activated, font size, rendering flags and optional shearing matrix should not be changed, unless the cache is explicitely flushed when such a feature is changed. In a rich UI environment with frequent font style changes, this would be suboptimal. The idea is to use the lightweight nglFont copy constructor : the cloned objects will share the same FreeType ressources, but can have their own features (size/rendering flags/etc) and own texture cache. We would have to manage a collection of nglFont objects for a single face, handling different sizes and optional synthetized styles. The right design would be a cache such as FreeType's one : it's a big glyph bucket which maps a request such as [face, size, rendering flags] -> [glyph bitmap & metrics]. Which gives a nice generic interface and a small memory granularity (per-glyph allocation). Sadly I can't see how to implement this easily and efficiently with GL textures. The ideal solution would be GL handling efficiently a bunch of small pixel-sized textures, ie. one per glyph (because 2D garbage collection is not the user job, we don't even have the proper interfaces to do it; 2^n sizing sucks to begin with). -- Font families are often declined in typographic variants, known as : - 'Sans Serif' or 'Sans', this is what we mostly use on computer screens because serifs are small features hard to render low resolution devices (yes, screens!) and hinder legibility. Eg.: Arial, Tahoma. - 'Serif', what is most used on books or newspapers. Eg.: Courier, Times. This is really what you expect on paper, that's why Word documented printed with Arial looks so un-professional (and MS Times New Roman is not good looking either). - 'Monospace' or 'Mono', comes from the typewriter world, and of course makes a ton of sense on computers, especially for programmers :). There are serifed monospace fonts (Typewriter), and sans monospace (Fixed, Console, etc). Most of the time we expect Sans in this category, at least in the computer world. Most font families are primarily designed for a particular variant : for instance Arial is meant to be as Sans. Some foundries will provide Serif'ed Arial. Some font families are designed for all variants, bundled for a global consistant look; this is the case of the Bitstream Vera font family, which commes il all variants, slants and weights (actually 10 faces in place of the 12 expected, Serif italic is lacking). -- Now I think that all details are settled to talk about font selection. For the selection interface, I'd go as other APIs (MS and FreeType), ie. put everything in the font descriptor, and let the user easily create a font object from these parameters. They are : 1- family name 2- slant 3- weight 4- size 5- rendering flags (aa, hinting) 6- striking (underline, overstrike) 7- color [... future]