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]

Reply via email to