From 6170e1d7f61319fb624cc5d00a14ab5b09c9a77c Mon Sep 17 00:00:00 2001 From: "Kirill.Karnaukhov" Date: Thu, 16 Jan 2025 15:36:05 +0100 Subject: [PATCH] [inline-completion] IJPL-174995: support rendering of non-English symbols by fall-backing to other fonts GitOrigin-RevId: 215bcd48ab8623c0c7860856e9da2863c1eeed6a --- .../completion/render/InlineCompletionLineRenderer.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/codeinsight-inline/src/com/intellij/codeInsight/inline/completion/render/InlineCompletionLineRenderer.kt b/platform/platform-impl/codeinsight-inline/src/com/intellij/codeInsight/inline/completion/render/InlineCompletionLineRenderer.kt index f1a6dd16bedb..80c8f4a541b8 100644 --- a/platform/platform-impl/codeinsight-inline/src/com/intellij/codeInsight/inline/completion/render/InlineCompletionLineRenderer.kt +++ b/platform/platform-impl/codeinsight-inline/src/com/intellij/codeInsight/inline/completion/render/InlineCompletionLineRenderer.kt @@ -11,6 +11,7 @@ import com.intellij.openapi.editor.markup.EffectType import com.intellij.openapi.editor.markup.TextAttributes import com.intellij.ui.paint.EffectPainter2D import com.intellij.ui.paint.RectanglePainter2D +import com.intellij.util.ui.UIUtil import org.jetbrains.annotations.ApiStatus import java.awt.* import java.awt.font.TextLayout @@ -73,7 +74,7 @@ open class InlineCompletionLineRenderer( if (block.text.isEmpty()) { continue } - g.font = editor.colorsScheme.getFont(EditorFontType.forJavaStyle(block.attributes.fontType)) + g.font = getFont(block.attributes, block.text) val textLayout = TextLayout(block.text, g.font, g.fontRenderContext) val textWidth = textLayout.advance.toDouble() val textHeight = targetRegion.height.toDouble() @@ -127,4 +128,9 @@ open class InlineCompletionLineRenderer( painter.paint(g, x, y, width, g.fontMetrics.descent.toDouble(), g.font) } } + + private fun getFont(attributes: TextAttributes, text: String): Font { + val original = editor.colorsScheme.getFont(EditorFontType.forJavaStyle(attributes.fontType)) + return UIUtil.getFontWithFallbackIfNeeded(original, text) + } }