On Thu, 24 Mar 2022 22:36:28 GMT, Nikita Gubarkov <d...@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