mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-10 04:30:11 +00:00
[Quartz] Hardcode screen resolution for text at 96.0.
It seems that CoreText is internally calibrated for this, see https://bugzilla.gnome.org/show_bug.cgi?id=787867 for a detailed discussion.
This commit is contained in:
parent
85fa6ba631
commit
828f634d5c
@ -67,7 +67,7 @@ static void gdk_quartz_screen_calculate_layout (GdkQuartzScreen *screen);
|
|||||||
static void display_reconfiguration_callback (CGDirectDisplayID display,
|
static void display_reconfiguration_callback (CGDirectDisplayID display,
|
||||||
CGDisplayChangeSummaryFlags flags,
|
CGDisplayChangeSummaryFlags flags,
|
||||||
void *userInfo);
|
void *userInfo);
|
||||||
|
static const double dpi = 96.0;
|
||||||
static gint get_mm_from_pixels (NSScreen *screen, int pixels);
|
static gint get_mm_from_pixels (NSScreen *screen, int pixels);
|
||||||
|
|
||||||
G_DEFINE_TYPE (GdkQuartzScreen, gdk_quartz_screen, GDK_TYPE_SCREEN);
|
G_DEFINE_TYPE (GdkQuartzScreen, gdk_quartz_screen, GDK_TYPE_SCREEN);
|
||||||
@ -76,10 +76,17 @@ static void
|
|||||||
gdk_quartz_screen_init (GdkQuartzScreen *quartz_screen)
|
gdk_quartz_screen_init (GdkQuartzScreen *quartz_screen)
|
||||||
{
|
{
|
||||||
GdkScreen *screen = GDK_SCREEN (quartz_screen);
|
GdkScreen *screen = GDK_SCREEN (quartz_screen);
|
||||||
NSDictionary *dd = [[[NSScreen screens] objectAtIndex:0] deviceDescription];
|
/* Screen resolution is used exclusively to pass to Pango for font
|
||||||
NSSize size = [[dd valueForKey:NSDeviceResolution] sizeValue];
|
* scaling. There's a long discussion in
|
||||||
|
* https://bugzilla.gnome.org/show_bug.cgi?id=787867 exploring how
|
||||||
|
* screen resolution and pangocairo-coretext interact. The summary
|
||||||
|
* is that MacOS takes care of scaling fonts for Retina screens and
|
||||||
|
* that while the Apple Documentation goes on about "points" they're
|
||||||
|
* CSS points (96/in), not typeography points (72/in) and
|
||||||
|
* pangocairo-coretext needs to default to that scaling factor.
|
||||||
|
*/
|
||||||
|
|
||||||
_gdk_screen_set_resolution (screen, size.width);
|
_gdk_screen_set_resolution (screen, dpi);
|
||||||
|
|
||||||
gdk_quartz_screen_calculate_layout (quartz_screen);
|
gdk_quartz_screen_calculate_layout (quartz_screen);
|
||||||
|
|
||||||
@ -335,9 +342,6 @@ static gint
|
|||||||
get_mm_from_pixels (NSScreen *screen, int pixels)
|
get_mm_from_pixels (NSScreen *screen, int pixels)
|
||||||
{
|
{
|
||||||
const float mm_per_inch = 25.4;
|
const float mm_per_inch = 25.4;
|
||||||
NSDictionary *dd = [[[NSScreen screens] objectAtIndex:0] deviceDescription];
|
|
||||||
NSSize size = [[dd valueForKey:NSDeviceResolution] sizeValue];
|
|
||||||
float dpi = size.width;
|
|
||||||
return (pixels / dpi) * mm_per_inch;
|
return (pixels / dpi) * mm_per_inch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user