[X/B/D][SRU][PATCH 0/2] Enable framebuffer fonts auto selection for HighDPI screen

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[X/B/D][SRU][PATCH 0/2] Enable framebuffer fonts auto selection for HighDPI screen

Po-Hsu Lin (Sam)
== Justification ==
After bug 1819881 - [CONFIG] please enable highdpi font FONT_TER16x32,
many of our kernel now support TER16x32 font for high resolution screen.

With Takashi Iwai's patch:
  dfd19a50 (fonts: Prefer a bigger font for high resolution screens)

The framebuffer can now decide which font to use base on the screen
resolution. It will be great to have this feature in older kernels as
well.

== Fixes ==
* aa1d19f1 (fonts: Fix coding style)
* dfd19a50 (fonts: Prefer a bigger font for high resolution screens)

First patch just changes the coding style, no actual changes were made.
The second patch added an extra check to see if we can use highDPI font.

These two patches can be cherry-picked into X/B/D

For Eoan and onward, they already have these patches.

== Test ==
Test kernels can be found here:
https://people.canonical.com/~phlin/kernel/lp-1851623-fb-font-detect/

Patch tested on a Dell G7 UHD laptop and it works as expected, the
font displayed in the early boot stage (before switching to color
frame buffer device) will be set to a more readable one.

Screenshots can be found in the attachment of the bug report.

== Regression Potential ==
Low, this only affects the frame buffer, changing the way to decide
which font to use.

Takashi Iwai (2):
  fonts: Fix coding style
  fonts: Prefer a bigger font for high resolution screens

 lib/fonts/fonts.c | 88 ++++++++++++++++++++++++++++---------------------------
 1 file changed, 45 insertions(+), 43 deletions(-)

--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[X/B/D][SRU][PATCH 1/2] fonts: Fix coding style

Po-Hsu Lin (Sam)
From: Takashi Iwai <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1851623

Fix indentation, spaces, and move EXPORT_SYMBOL line to the
appropriate place as a preliminary work.  No actual code change.

Signed-off-by: Takashi Iwai <[hidden email]>
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit aa1d19f1f96764e72155235ece22461599d0e7ac)
Signed-off-by: Po-Hsu Lin <[hidden email]>
---
 lib/fonts/fonts.c | 83 +++++++++++++++++++++++++++----------------------------
 1 file changed, 40 insertions(+), 43 deletions(-)

diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c
index 9969358..269a829 100644
--- a/lib/fonts/fonts.c
+++ b/lib/fonts/fonts.c
@@ -25,51 +25,51 @@
 static const struct font_desc *fonts[] = {
 #ifdef CONFIG_FONT_8x8
 #undef NO_FONTS
-    &font_vga_8x8,
+ &font_vga_8x8,
 #endif
 #ifdef CONFIG_FONT_8x16
 #undef NO_FONTS
-    &font_vga_8x16,
+ &font_vga_8x16,
 #endif
 #ifdef CONFIG_FONT_6x11
 #undef NO_FONTS
-    &font_vga_6x11,
+ &font_vga_6x11,
 #endif
 #ifdef CONFIG_FONT_7x14
 #undef NO_FONTS
-    &font_7x14,
+ &font_7x14,
 #endif
 #ifdef CONFIG_FONT_SUN8x16
 #undef NO_FONTS
-    &font_sun_8x16,
+ &font_sun_8x16,
 #endif
 #ifdef CONFIG_FONT_SUN12x22
 #undef NO_FONTS
-    &font_sun_12x22,
+ &font_sun_12x22,
 #endif
 #ifdef CONFIG_FONT_10x18
 #undef NO_FONTS
-    &font_10x18,
+ &font_10x18,
 #endif
 #ifdef CONFIG_FONT_ACORN_8x8
 #undef NO_FONTS
-    &font_acorn_8x8,
+ &font_acorn_8x8,
 #endif
 #ifdef CONFIG_FONT_PEARL_8x8
 #undef NO_FONTS
-    &font_pearl_8x8,
+ &font_pearl_8x8,
 #endif
 #ifdef CONFIG_FONT_MINI_4x6
 #undef NO_FONTS
-    &font_mini_4x6,
+ &font_mini_4x6,
 #endif
 #ifdef CONFIG_FONT_6x10
 #undef NO_FONTS
-    &font_6x10,
+ &font_6x10,
 #endif
 #ifdef CONFIG_FONT_TER16x32
 #undef NO_FONTS
-    &font_ter_16x32,
+ &font_ter_16x32,
 #endif
 };
 
@@ -90,16 +90,16 @@ static const struct font_desc *fonts[] = {
  * specified font.
  *
  */
-
 const struct font_desc *find_font(const char *name)
 {
-   unsigned int i;
+ unsigned int i;
 
-   for (i = 0; i < num_fonts; i++)
-      if (!strcmp(fonts[i]->name, name))
-  return fonts[i];
-   return NULL;
+ for (i = 0; i < num_fonts; i++)
+ if (!strcmp(fonts[i]->name, name))
+ return fonts[i];
+ return NULL;
 }
+EXPORT_SYMBOL(find_font);
 
 
 /**
@@ -116,44 +116,41 @@ const struct font_desc *find_font(const char *name)
  * chosen font.
  *
  */
-
 const struct font_desc *get_default_font(int xres, int yres, u32 font_w,
  u32 font_h)
 {
-    int i, c, cc;
-    const struct font_desc *f, *g;
-
-    g = NULL;
-    cc = -10000;
-    for(i=0; i<num_fonts; i++) {
- f = fonts[i];
- c = f->pref;
+ int i, c, cc;
+ const struct font_desc *f, *g;
+
+ g = NULL;
+ cc = -10000;
+ for (i = 0; i < num_fonts; i++) {
+ f = fonts[i];
+ c = f->pref;
 #if defined(__mc68000__)
 #ifdef CONFIG_FONT_PEARL_8x8
- if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX)
-    c = 100;
+ if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX)
+ c = 100;
 #endif
 #ifdef CONFIG_FONT_6x11
- if (MACH_IS_MAC && xres < 640 && f->idx == VGA6x11_IDX)
-    c = 100;
+ if (MACH_IS_MAC && xres < 640 && f->idx == VGA6x11_IDX)
+ c = 100;
 #endif
 #endif
- if ((yres < 400) == (f->height <= 8))
-    c += 1000;
+ if ((yres < 400) == (f->height <= 8))
+ c += 1000;
 
- if ((font_w & (1 << (f->width - 1))) &&
-    (font_h & (1 << (f->height - 1))))
-    c += 1000;
+ if ((font_w & (1 << (f->width - 1))) &&
+    (font_h & (1 << (f->height - 1))))
+ c += 1000;
 
- if (c > cc) {
-    cc = c;
-    g = f;
+ if (c > cc) {
+ cc = c;
+ g = f;
+ }
  }
-    }
-    return g;
+ return g;
 }
-
-EXPORT_SYMBOL(find_font);
 EXPORT_SYMBOL(get_default_font);
 
 MODULE_AUTHOR("James Simmons <[hidden email]>");
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[X/B/D][SRU][PATCH 2/2] fonts: Prefer a bigger font for high resolution screens

Po-Hsu Lin (Sam)
In reply to this post by Po-Hsu Lin (Sam)
From: Takashi Iwai <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1851623

Although we may have multiple fonts in kernel, the small 8x16 font is
chosen as default usually unless user specify the boot option.  This
is suboptimal for monitors with high resolutions.

This patch tries to assign a bigger font for such a high resolution by
calculating some penalty value.  This won't change anything for a
standard monitor like Full HD (1920x1080), but for a high res monitor
like UHD 4K, a bigger font like TER16x32 will be chosen once when
enabled in Kconfig.

Signed-off-by: Takashi Iwai <[hidden email]>
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit dfd19a5004eff03755967086aa04254c3d91b8ec)
Signed-off-by: Po-Hsu Lin <[hidden email]>
---
 lib/fonts/fonts.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c
index 269a829..0edd580 100644
--- a/lib/fonts/fonts.c
+++ b/lib/fonts/fonts.c
@@ -119,7 +119,7 @@ EXPORT_SYMBOL(find_font);
 const struct font_desc *get_default_font(int xres, int yres, u32 font_w,
  u32 font_h)
 {
- int i, c, cc;
+ int i, c, cc, res;
  const struct font_desc *f, *g;
 
  g = NULL;
@@ -140,6 +140,11 @@ const struct font_desc *get_default_font(int xres, int yres, u32 font_w,
  if ((yres < 400) == (f->height <= 8))
  c += 1000;
 
+ /* prefer a bigger font for high resolution */
+ res = (xres / f->width) * (yres / f->height) / 1000;
+ if (res > 20)
+ c += 20 - res;
+
  if ((font_w & (1 << (f->width - 1))) &&
     (font_h & (1 << (f->height - 1))))
  c += 1000;
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [X/B/D][SRU][PATCH 0/2] Enable framebuffer fonts auto selection for HighDPI screen

Connor Kuehl
In reply to this post by Po-Hsu Lin (Sam)
On 11/7/19 3:43 AM, Po-Hsu Lin wrote:

> These two patches can be cherry-picked into X/B/D
>
> For Eoan and onward, they already have these patches.
>
> == Test ==
> Test kernels can be found here:
> https://people.canonical.com/~phlin/kernel/lp-1851623-fb-font-detect/
>
> Patch tested on a Dell G7 UHD laptop and it works as expected, the
> font displayed in the early boot stage (before switching to color
> frame buffer device) will be set to a more readable one.
>
> Screenshots can be found in the attachment of the bug report.
>
> == Regression Potential ==
> Low, this only affects the frame buffer, changing the way to decide
> which font to use.
>
> Takashi Iwai (2):
>    fonts: Fix coding style
>    fonts: Prefer a bigger font for high resolution screens
>
>   lib/fonts/fonts.c | 88 ++++++++++++++++++++++++++++---------------------------
>   1 file changed, 45 insertions(+), 43 deletions(-)
>

Looks a lot better, especially as higher resolutions are becoming more
common.

Acked-by: Connor Kuehl <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [X/B/D][SRU][PATCH 0/2] Enable framebuffer fonts auto selection for HighDPI screen

Stefan Bader-2
In reply to this post by Po-Hsu Lin (Sam)
On 07.11.19 12:43, Po-Hsu Lin wrote:

> == Justification ==
> After bug 1819881 - [CONFIG] please enable highdpi font FONT_TER16x32,
> many of our kernel now support TER16x32 font for high resolution screen.
>
> With Takashi Iwai's patch:
>   dfd19a50 (fonts: Prefer a bigger font for high resolution screens)
>
> The framebuffer can now decide which font to use base on the screen
> resolution. It will be great to have this feature in older kernels as
> well.
>
> == Fixes ==
> * aa1d19f1 (fonts: Fix coding style)
> * dfd19a50 (fonts: Prefer a bigger font for high resolution screens)
>
> First patch just changes the coding style, no actual changes were made.
> The second patch added an extra check to see if we can use highDPI font.
>
> These two patches can be cherry-picked into X/B/D
>
> For Eoan and onward, they already have these patches.
>
> == Test ==
> Test kernels can be found here:
> https://people.canonical.com/~phlin/kernel/lp-1851623-fb-font-detect/
>
> Patch tested on a Dell G7 UHD laptop and it works as expected, the
> font displayed in the early boot stage (before switching to color
> frame buffer device) will be set to a more readable one.
>
> Screenshots can be found in the attachment of the bug report.
>
> == Regression Potential ==
> Low, this only affects the frame buffer, changing the way to decide
> which font to use.
>
> Takashi Iwai (2):
>   fonts: Fix coding style
>   fonts: Prefer a bigger font for high resolution screens
>
>  lib/fonts/fonts.c | 88 ++++++++++++++++++++++++++++---------------------------
>  1 file changed, 45 insertions(+), 43 deletions(-)
>
Acked-by: Stefan Bader <[hidden email]>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

APPLIED: [X/B/D][SRU][PATCH 0/2] Enable framebuffer fonts auto selection for HighDPI screen

Khaled Elmously
In reply to this post by Po-Hsu Lin (Sam)
On 2019-11-07 19:43:56 , Po-Hsu Lin wrote:

> == Justification ==
> After bug 1819881 - [CONFIG] please enable highdpi font FONT_TER16x32,
> many of our kernel now support TER16x32 font for high resolution screen.
>
> With Takashi Iwai's patch:
>   dfd19a50 (fonts: Prefer a bigger font for high resolution screens)
>
> The framebuffer can now decide which font to use base on the screen
> resolution. It will be great to have this feature in older kernels as
> well.
>
> == Fixes ==
> * aa1d19f1 (fonts: Fix coding style)
> * dfd19a50 (fonts: Prefer a bigger font for high resolution screens)
>
> First patch just changes the coding style, no actual changes were made.
> The second patch added an extra check to see if we can use highDPI font.
>
> These two patches can be cherry-picked into X/B/D
>
> For Eoan and onward, they already have these patches.
>
> == Test ==
> Test kernels can be found here:
> https://people.canonical.com/~phlin/kernel/lp-1851623-fb-font-detect/
>
> Patch tested on a Dell G7 UHD laptop and it works as expected, the
> font displayed in the early boot stage (before switching to color
> frame buffer device) will be set to a more readable one.
>
> Screenshots can be found in the attachment of the bug report.
>
> == Regression Potential ==
> Low, this only affects the frame buffer, changing the way to decide
> which font to use.
>
> Takashi Iwai (2):
>   fonts: Fix coding style
>   fonts: Prefer a bigger font for high resolution screens
>
>  lib/fonts/fonts.c | 88 ++++++++++++++++++++++++++++---------------------------
>  1 file changed, 45 insertions(+), 43 deletions(-)
>
> --
> 2.7.4
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team