RFR: 8269806: Emoji rendering on Linux [v2]
Hiroshi Miura
duke at openjdk.java.net
Sat Mar 26 07:16:44 UTC 2022
On Thu, 24 Mar 2022 22:36:28 GMT, Nikita Gubarkov <duke at openjdk.java.net> wrote:
>> It was implemented in JetBrains Runtime a year ago and was ported & refactored for this PR
>> It includes:
>> - Bitmap glyph loading via Freetype
>> - Manual scaling & transformation of bitmap glyphs with nearest-neighbor or bilinear-mipmap style algorithms depending on the text antialiasing hint
>> - Storing BGRA glyphs in glyph cache & rendering them as plain images, as currently used XRender text drawing functions doesn't support colored glyphs
>> - Small fixes in related code like null-checks which could cause NPE & comment typos
>
> Nikita Gubarkov has updated the pull request incrementally with one additional commit since the last revision:
>
> 8269806: Fix builds with old Freetype (before 2.5)
I've tested it with Font2DTest on Mint-Linux 20.3.
## test result of font2dtest with noto color emoji font
This works well when select Noto Color Emoji

### lsof -p <pid> |grep fonts
<details>
java 3147863 miurahr 8r REG 259,2 20332392 24644835 /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc
java 3147863 miurahr 9r REG 259,2 88304 24644978 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Medium.ttf
java 3147863 miurahr 12r REG 259,2 20876 28052242 /usr/share/fonts/truetype/lyx/wasy10.ttf
java 3147863 miurahr 13r REG 259,2 86172 24644979 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Regular.ttf
java 3147863 miurahr 14r REG 259,2 81228 24644977 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Light.ttf
java 3147863 miurahr 15r REG 259,2 86568 24644980 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-SemiBold.ttf
java 3147863 miurahr 16r REG 259,2 4033420 24644943 /usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf
java 3147863 miurahr 17r REG 259,2 584136 24649716 /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf
java 3147863 miurahr 18r REG 259,2 197796 24645054 /usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf
java 3147863 miurahr 19r REG 259,2 757076 24642783 /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
java 3147863 miurahr 20r REG 259,2 98396 24644867 /usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf
java 3147863 miurahr 21r REG 259,2 680264 24644068 /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf
java 3147863 miurahr 22r REG 259,2 10847156 24643878 /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf
java 3147863 miurahr 24r REG 259,2 82968 24644869 /usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf
java 3147863 miurahr 25r REG 259,2 156500 24644966 /usr/share/fonts/truetype/fonts-orya-extra/utkal.ttf
java 3147863 miurahr 26r REG 259,2 209904 24644969 /usr/share/fonts/truetype/fonts-telu-extra/vemana2000.ttf
java 3147863 miurahr 27r REG 259,2 139640 22207124 /usr/share/fonts/truetype/msttcorefonts/Verdana.ttf
java 3147863 miurahr 28r REG 259,2 118752 22207125 /usr/share/fonts/truetype/msttcorefonts/Webdings.ttf
java 3147863 miurahr 29r REG 259,2 114052 24644873 /usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf
java 3147863 miurahr 30r REG 259,2 418804 21919611 /usr/share/fonts/truetype/noto/NotoEmoji-Regular.ttf
</details>
## test result of font2dtest with dialog font
When selecting dialog font

### lsof -p <pid> |grep fonts
<details>
java 3147863 miurahr 8r REG 259,2 20332392 24644835 /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc
java 3147863 miurahr 9r REG 259,2 88304 24644978 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Medium.ttf
java 3147863 miurahr 12r REG 259,2 20876 28052242 /usr/share/fonts/truetype/lyx/wasy10.ttf
java 3147863 miurahr 13r REG 259,2 86172 24644979 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Regular.ttf
java 3147863 miurahr 14r REG 259,2 81228 24644977 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-Light.ttf
java 3147863 miurahr 15r REG 259,2 86568 24644980 /usr/share/fonts/truetype/fonts-yrsa-rasa/Yrsa-SemiBold.ttf
java 3147863 miurahr 16r REG 259,2 4033420 24644943 /usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf
java 3147863 miurahr 17r REG 259,2 584136 24649716 /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf
java 3147863 miurahr 18r REG 259,2 197796 24645054 /usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf
java 3147863 miurahr 19r REG 259,2 757076 24642783 /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
java 3147863 miurahr 20r REG 259,2 98396 24644867 /usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf
java 3147863 miurahr 22r REG 259,2 1792900 24642883 /usr/share/fonts/truetype/unifont/unifont_upper.ttf
java 3147863 miurahr 23r REG 259,2 167232 24645077 /usr/share/fonts/truetype/malayalam/Uroob-Regular.ttf
java 3147863 miurahr 24r REG 259,2 82968 24644869 /usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf
java 3147863 miurahr 25r REG 259,2 156500 24644966 /usr/share/fonts/truetype/fonts-orya-extra/utkal.ttf
java 3147863 miurahr 26r REG 259,2 209904 24644969 /usr/share/fonts/truetype/fonts-telu-extra/vemana2000.ttf
java 3147863 miurahr 27r REG 259,2 139640 22207124 /usr/share/fonts/truetype/msttcorefonts/Verdana.ttf
java 3147863 miurahr 28r REG 259,2 118752 22207125 /usr/share/fonts/truetype/msttcorefonts/Webdings.ttf
java 3147863 miurahr 29r REG 259,2 114052 24644873 /usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf
java 3147863 miurahr 30r REG 259,2 418804 21919611 /usr/share/fonts/truetype/noto/NotoEmoji-Regular.ttf
</details>
## diff of lsof
$ diff lsof_font2dtest_dialog.log lsof_font2dtest_noto_color_emoji.log
12,13c12,13
< java 3147863 miurahr 22r REG 259,2 1792900 24642883 /usr/share/fonts/truetype/unifont/unifont_upper.ttf
< java 3147863 miurahr 23r REG 259,2 167232 24645077 /usr/share/fonts/truetype/malayalam/Uroob-Regular.ttf
---
> java 3147863 miurahr 21r REG 259,2 680264 24644068 /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf
> java 3147863 miurahr 22r REG 259,2 10847156 24643878 /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf
21d20
<
The diff tell us when Font2DTest show emoticon with dialog, fallback font is **unifont**.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4798
More information about the client-libs-dev
mailing list