Newsgroups: rec.arts.int-fiction
Path: news.duke.edu!newsgate.duke.edu!zombie.ncsc.mil!alnews.ncsc.mil!feed.news.qwest.net!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.online.be!zur.uu.net!ash.uu.net!world!not-for-mail
From: buzzard@TheWorld.com (Sean T Barrett)
Subject: Re: Any Windows Programmers Here?
Sender: news@world.std.com (Mr Usenet Himself)
Message-ID: <Gu4to8.M5L@world.std.com>
Date: Sat, 6 Apr 2002 05:52:56 GMT
References: <Wjpn8.2131$ub3.1030@newsread2.prod.itd.earthlink.net> <jIwq8.12386$nt1.1018100@newsread2.prod.itd.earthlink.net> <3cab4cda$0$22477$3c090ad1@news.plethora.net> <C4ur8.19462$nt1.1595578@newsread2.prod.itd.earthlink.net>
NNTP-Posting-Host: shell01.theworld.com
Organization: The World Public Access UNIX, Brookline, MA
X-Newsreader: trn 4.0-test72 (19 April 1999)
Lines: 106
Xref: news.duke.edu rec.arts.int-fiction:102658

Jim Aikin <spammable@musicwords.net> wrote:
>Given the fact that your monitor
>can be set to any of a number of display resolutions, there is no _inherent_
>reason why your OS can't let each app choose its own preferred pixel grid
>size.

This is false; the monitor can only be set to one size. If the
latter is true, it has nothing to do with the former.

>The reason it can't is because the device driver that runs your video card
>thinks a pixel is a pixel is a pixel. I'm not a digital hardware engineer,
>but I'll just bet there's no reason why a driver couldn't be written in such
>a way as to interpret the pixel data coming from each window in its own way.

It couldn't be done in the driver. It's possible that a graphics
card could be written to do something like this; in fact, most graphics
cards come with something called an 'overlay' which can be rescaled
independently; it's often used for video playback. If you drag a video
window around the screen and see that the window is moving at full
speed but the video image isn't moving quite in sync with it, that's
usually due to the use of overlays. But they would need to support
a much more complex version of this to allow it with multiple windows.

However, doing this is just resampling in hardware. You will get the
same visual effect by resampling in software. It's just as possible
for the OS to let you store your window's pixel grid to a buffer, and
resize that into the framebuffer that actually drives the monitor.
Windows XP and OS X will apparently do this with a relatively high
quality resampling filter, in fact.

However, these filters will still cause things to look a little
blurry. They will never look as good as if fonts the appropriate
size to the actual display pixel size was used.

>we do it this way we can make more profit), you're recommending to me that I
>ought to be satisfied with creating a work of art that does not meet my own
>PERSONAL design criteria.

The problem is you're sitting here griping about what these
evil hardware designers do to restrict you, and then turning
around and saying "I don't care that in practice a pixel
size doesn't correspond to a particular physical size; I'm
going to assume it does, and users for whom it's not true
can suck it down."

In practice this is a well understood problem that has numerous
solutions, many of them reasonable.

  1. Take over the entire video display and force a particular
     resolution.

     Most commercial games do this.

  2. Use one fixed bitmap-font size and run in a non-resizeable
     window, and let everyone who doesn't like it hate you.

     Adam Cadre's Zeta Space does this. (He doesn't have real
     bitmap fonts; he's pre-rendered his text+fonts to images.)

  3. Provide a bunch of different-sized bitmap fonts and pick the
     one that best matches the window size (or restrict to a few
     specific sizes).

     Been used by some computer games and by many OSes. If you're
     using real bitmap fonts I don't see any reason to use 2 instead
     of 3.

  4. Use scalable fonts (e.g. TrueType) and use a built-in OS
     facility to render them.

  5. Use scalable fonts (e.g. TrueType) and use a free type-rendering
     library (like www.freetype.org) to render them.

>On principle, this cannot possibly be the right approach. My question to you
>is, when you want to read my iNovel, why won't you be willing to reset your
>screen to the necessary resolution?

If I have to resize my screen to read your iNovel because you
demand that I read your iNovel in some particular font which
is unreadable in my default screensize, I will not read your
iNovel. Because I say to you: you letting me read your iNovel
in any font I want is a less significant constraint than you
making me read your iNovel at some fixed low resolution.

A long time ago somebody did some research and found that people
liked and were more productive at reading on computers if the
resolution of each character was high. For some reason most
computer people have instead gotten locked into this model that as
you increase the resolution of the screen, you have to increase
the size of the screen (and hold constant your seating distance
from it), so that a given pixel size remains the same physical size,
and hence a character stays the same pixel size as it stays the
same physical size. This is pretty much entirely the wrong way to
do things. (Windows even supports a 'rescale all fonts' option
which can help to achieve this effect, although many applications
misformat when you use it.)

I run 1600x1200 on a 15" laptop because I appreciate sharp,
high-resolution characters. I won't resize my desktop for
a primarily-reading application.

It may well be that picky jerks like us only make up 5% of
your potential audience, so do what you want. But there
are lots of options that don't suck.

SeanB
