Deprecate the "Resolution" entry in the config file in favour of

HKEY_CURRNET_CONFIG\Software\Fonts\LogPixels.
This commit is contained in:
Huw Davies 2004-08-26 18:24:49 +00:00 committed by Alexandre Julliard
parent 329025915c
commit ce4dfe23b4
5 changed files with 63 additions and 37 deletions

View File

@ -45,6 +45,51 @@ unsigned int text_caps = (TC_OP_CHARACTER | TC_OP_STROKE | TC_CP_STROKE |
TC_SA_CONTIN | TC_UA_ABLE | TC_SO_ABLE | TC_RA_ABLE);
/* X11R6 adds TC_SF_X_YINDEP, Xrender adds TC_VA_ABLE */
static const WCHAR dpi_key_name[] = {'S','o','f','t','w','a','r','e','\\','F','o','n','t','s','\0'};
static const WCHAR dpi_value_name[] = {'L','o','g','P','i','x','e','l','s','\0'};
static const WCHAR INIFontSection[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
'W','i','n','e','\\','C','o','n','f','i','g','\\',
'f','o','n','t','s','\0'};
static const WCHAR INIResolution[] = {'R','e','s','o','l','u','t','i','o','n','\0'};
/******************************************************************************
* get_dpi
*
* get the dpi from the registry
*/
static DWORD get_dpi( void )
{
DWORD dpi = 96;
HKEY hkey;
if(RegOpenKeyW(HKEY_LOCAL_MACHINE, INIFontSection, &hkey) == ERROR_SUCCESS)
{
char buffer[20];
DWORD type, count = sizeof(buffer);
if(RegQueryValueExW(hkey, INIResolution, 0, &type, buffer, &count) == ERROR_SUCCESS)
if(atoi(buffer) != 96)
MESSAGE("Please use the registry key HKEY_CURRENT_CONFIG\\Sotfware\\Fonts\\LogPixels\n"
"to set the screen resolution and remove the \"Resolution\" entry in the config file\n");
RegCloseKey(hkey);
}
if (RegOpenKeyW(HKEY_CURRENT_CONFIG, dpi_key_name, &hkey) == ERROR_SUCCESS)
{
DWORD type, size, new_dpi;
size = sizeof(new_dpi);
if(RegQueryValueExW(hkey, dpi_value_name, NULL, &type, (void *)&new_dpi, &size) == ERROR_SUCCESS)
{
if(type == REG_DWORD && new_dpi != 0)
dpi = new_dpi;
}
RegCloseKey(hkey);
}
return dpi;
}
/**********************************************************************
* X11DRV_GDI_Initialize
*/
@ -59,12 +104,13 @@ void X11DRV_GDI_Initialize( Display *display )
/* Initialize XRender */
X11DRV_XRender_Init();
/* Initialize fonts and text caps */
log_pixels_x = log_pixels_y = 96;
X11DRV_FONT_Init( &log_pixels_x, &log_pixels_y );
/* Initialize device caps */
log_pixels_x = log_pixels_y = get_dpi();
horz_size = MulDiv( screen_width, 254, log_pixels_x * 10 );
vert_size = MulDiv( screen_height, 254, log_pixels_y * 10 );
/* Initialize fonts and text caps */
X11DRV_FONT_Init(log_pixels_x, log_pixels_y);
}
/**********************************************************************

View File

@ -197,7 +197,7 @@ extern BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev);
/* X11 driver internal functions */
extern void X11DRV_BITMAP_Init(void);
extern void X11DRV_FONT_Init( int *log_pixels_x, int *log_pixels_y );
extern void X11DRV_FONT_Init( int log_pixels_x, int log_pixels_y );
struct tagBITMAPOBJ;
extern int X11DRV_DIB_BitmapInfoSize( const BITMAPINFO * info, WORD coloruse );

View File

@ -83,7 +83,6 @@ static const char* INIAliasSection = "Alias";
static const char* INIIgnoreSection = "Ignore";
static const char* INIDefault = "Default";
static const char* INIDefaultFixed = "DefaultFixed";
static const char* INIResolution = "Resolution";
static const char* INIGlobalMetrics = "FontMetrics";
static const char* INIDefaultSerif = "DefaultSerif";
static const char* INIDefaultSansSerif = "DefaultSansSerif";
@ -2390,44 +2389,25 @@ static BOOL XFONT_WriteCachedMetrics( int fd, unsigned x_checksum, int x_count,
}
/***********************************************************************
* XFONT_GetPointResolution()
* XFONT_GetDefResolution()
*
* INIT ONLY
*
* Here we initialize DefResolution which is used in the
* XFONT_Match() penalty function. We also load the point
* resolution value (higher values result in larger fonts).
* XFONT_Match() penalty function, based on the values of log_pixels
*/
static int XFONT_GetPointResolution( int *log_pixels_x, int *log_pixels_y )
static int XFONT_GetDefResolution( int log_pixels_x, int log_pixels_y )
{
int i, j, point_resolution, num = 3;
int i, j, num = 3;
int allowed_xfont_resolutions[3] = { 72, 75, 100 };
int best = 0, best_diff = 65536;
HKEY hkey;
point_resolution = 0;
if(!RegOpenKeyA(HKEY_LOCAL_MACHINE, INIFontSection, &hkey))
{
char buffer[20];
DWORD type, count = sizeof(buffer);
if(!RegQueryValueExA(hkey, INIResolution, 0, &type, buffer, &count))
point_resolution = atoi(buffer);
RegCloseKey(hkey);
}
if( !point_resolution )
point_resolution = *log_pixels_y;
else
*log_pixels_x = *log_pixels_y = point_resolution;
/* FIXME We can only really guess at a best DefResolution
* - this should be configurable
*/
for( i = best = 0; i < num; i++ )
{
j = abs( point_resolution - allowed_xfont_resolutions[i] );
j = abs( log_pixels_x - allowed_xfont_resolutions[i] );
if( j < best_diff )
{
best = i;
@ -2435,7 +2415,7 @@ static int XFONT_GetPointResolution( int *log_pixels_x, int *log_pixels_y )
}
}
DefResolution = allowed_xfont_resolutions[best];
return point_resolution;
return DefResolution;
}
@ -3012,14 +2992,14 @@ void X11DRV_FONT_InitX11Metrics( void )
/***********************************************************************
* X11DRV_FONT_Init
*/
void X11DRV_FONT_Init( int *log_pixels_x, int *log_pixels_y )
void X11DRV_FONT_Init( int log_pixels_x, int log_pixels_y )
{
XFONT_GetPointResolution( log_pixels_x, log_pixels_y );
XFONT_GetDefResolution( log_pixels_x, log_pixels_y );
if(using_client_side_fonts)
text_caps |= TC_VA_ABLE;
if(using_client_side_fonts)
text_caps |= TC_VA_ABLE;
return;
return;
}
/**********************************************************************

View File

@ -94,7 +94,6 @@ WINE REGISTRY Version 2
[fonts]
;Read the Fonts topic in the Wine User Guide before adding aliases
;See a couple of examples for russian users below
"Resolution" = "96"
"Default" = "-adobe-helvetica-"
"DefaultFixed" = "fixed"
"DefaultSerif" = "-adobe-times-"

View File

@ -156,6 +156,7 @@ HKLM,%FontSubStr%,"Times New Roman CYR,204",,"Times New Roman,204"
HKLM,%FontSubStr%,"Times New Roman Greek,161",,"Times New Roman,161"
HKLM,%FontSubStr%,"Times New Roman TUR,162",,"Times New Roman,162"
HKLM,%FontSubStr%,"Tms Rmn",,"Times New Roman"
HKLM,System\CurrentControlSet\Hardware Profiles\Current\Software\Fonts,"LogPixels",0x10001,00000060
[MCI]
HKLM,%Mci32Str%,"AVIVideo",,"mciavi.drv"