[comp.windows.x] Sun resolutions

hakanson@mist.cs.orst.edu (Marion Hakanson) (12/07/88)

What I'd REALLY like to see is a set of fonts at the proper resolution
for the Sun hi-res monitor (1280 high by 1600 wide, on a 19" screen).
I've measured this screen, seeing roughly 27.5cm high by 35.5cm wide,
which comes out to about 114dpi width and 118dpi height (or about
116dpi overall, if my arithmetic is correct).  Can someone point
me toward just the normal set of X11.3 fonts in 115dpi resolution?

BTW, xrdb -symbols reports Y_RESOLUTION=3546 and X_RESOLUTION=3548
(running Xsun, stock X11.3, on Sun4 with SunOS 3.2_REV2) for this
display.  My rough measurements above show that Y_RESOLUTION=4654
and X_RESOLUTION=4507 -- I know I used a cheapo plastic ruler, but
I couldn't be that far off, could I?

<insert appropriate pause for grunging thru sources>

Well, I answered my own question.  Deep in the bowels of the Sun
server code (ddx/sun/sun{BW2,CG2C,CG3C,CG4C}.c), the calls to
[c,m]fbScreenInit() all use a dpi argument of 90.  I measured
a few screens around here (one BW2, one CG2, and one BW2-hi-res),
and came up with an average height of 27.5cm and width of 35.5cm.
Again, these are rough measurements, but they come out to about
83dpi for the normal resolution screens (not 90), and 116dpi for
the hi-res screen.

Now, I can be convinced that the normal screens might claim to be
at 90dpi resolution, if you shrink them down a bit, but surely it
wouldn't be tough to modify ddx/sun/sunBW2.c's sunBW2Init() function
to get the resolution in the ballpark for the hi-res displays.  Looking
elsewhere in the same file for inspiration, I decided I'd do it something
like the following (someone else can decide on official numbers).  Note
that this is untested:

===============cut here=============
*** sunBW2.c	Sat May 21 11:49:33 1988
--- sunBW2.c.hr	Tue Dec  6 13:37:44 1988
***************
*** 233,243 ****
      char    	  **argv;   	/* The arguments themselves. Don't change! */
  {
      ColormapPtr pColormap;
  
      if (!mfbScreenInit(index, pScreen,
  			   sunFbs[index].fb,
  			   sunFbs[index].info.fb_width,
! 			   sunFbs[index].info.fb_height, 90, 90))
  	return (FALSE);
  
      pScreen->SaveScreen = sunBW2SaveScreen;
--- 233,250 ----
      char    	  **argv;   	/* The arguments themselves. Don't change! */
  {
      ColormapPtr pColormap;
+     int dpix = 82;		/* or whatever Sun says it should be */
+     int dpiy = 83;
  
+     if (sunFbs[index].info.fb_width > 1152) {
+ 	dpix = 114;		/* ditto */
+ 	dpiy = 118;
+     }
+ 
      if (!mfbScreenInit(index, pScreen,
  			   sunFbs[index].fb,
  			   sunFbs[index].info.fb_width,
! 			   sunFbs[index].info.fb_height, dpix, dpiy))
  	return (FALSE);
  
      pScreen->SaveScreen = sunBW2SaveScreen;
===============cut here=============

Note also that I'm not sure what clients will take advantage of having
this more accurate information, but it sure would be nice to not have to
continually lie about what font size to use on this nice screen, just so
I'll be able to read the danged thing (another plea for 115 or 120dpi
fonts -- even the Suntools fonts are hard to read on this screen...).

-- 
Marion Hakanson         Domain: hakanson@cs.orst.edu
                        UUCP  : {hp-pcd,tektronix}!orstcs!hakanson