mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[inline-completion] IJPL-179898: support rendering of non-English symbols by fall-backing to other fonts
(cherry picked from commit 9363ce5b0acf65f02e72a8acac22f83f673bd758) IJ-CR-156558 GitOrigin-RevId: a94db92d1f3dd53b8d227038040761cc153b0b03
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3c0a533aa4
commit
9b1f9cdb7b
@@ -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
|
||||
@@ -46,7 +47,7 @@ open class InlineCompletionLineRenderer(
|
||||
|
||||
override fun calcWidthInPixels(inlay: Inlay<*>): Int {
|
||||
val result = blocks.sumOf { block ->
|
||||
val font = editor.colorsScheme.getFont(EditorFontType.forJavaStyle(block.attributes.fontType))
|
||||
val font = getFont(block.attributes, block.text)
|
||||
val fontMetrics = editor.contentComponent.getFontMetrics(font)
|
||||
fontMetrics.stringWidth(block.text)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user