Terminal: IME composition text is rendered a few pixels below the cursor line (Korean IME, Windows 11)
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
https://github.com/user-attachments/assets/97efe406-25a2-42ee-976b-2aaad142f4a1
https://github.com/user-attachments/assets/b191cadb-ea62-4f13-938c-1cc5b3105d42
Type: Bug
Type: Bug
## Description
In the VS Code integrated terminal, text that is still being composed by the
Korean IME (the pre-edit / composition string, before it is committed) is
rendered a few pixels lower than the terminal's text baseline. It appears
slightly below and offset from the cursor position instead of sitting exactly
on the cursor line.
Once the character is committed (space / enter / candidate selection), it is
placed correctly on the line. The problem is purely visual and only affects the
composition overlay, but it is distracting during continuous Korean input.
## Steps to Reproduce
1. On Windows 11, switch the input method to Korean (Microsoft IME).
2. Open the VS Code integrated terminal.
3. Start typing Hangul at the shell prompt, e.g. `ㅎ` -> `한` -> `한ㄱ` -> `한글`.
4. While the syllable is still being composed, observe the vertical position of
the composition text relative to the surrounding terminal text and the cursor.
Expected: the composition text is aligned with the terminal text baseline, on
the same line as the cursor.
Actual: the composition text is drawn a few pixels below the baseline, visibly
offset from the cursor line.
## Scope
- Reproduces in every integrated terminal in VS Code, regardless of shell.
- Does NOT reproduce in the VS Code editor pane — Korean IME composition is
positioned correctly there.
- Does NOT reproduce in any application outside VS Code (Windows Terminal,
browsers, native text fields all behave correctly).
This suggests the problem is specific to the terminal's composition overlay
rather than to the OS IME or to display scaling.
## Things I already tried (none of them changed the behaviour)
- `"terminal.integrated.gpuAcceleration": "off"` (with terminals recreated
afterwards, and with a full restart of VS Code)
- `"terminal.integrated.lineHeight": 1` (default value confirmed)
- Changing `terminal.integrated.fontFamily` to D2Coding, a monospace font that
contains Hangul glyphs, so that no font fallback occurs for Korean characters
- Full restart of VS Code after each change
## Environment
- OS: Windows 11
- VS Code version: About>
- Shell:
- IME: Microsoft Korean IME (default, "use previous version of Microsoft IME"
is OFF)
- Display scaling:
- `window.zoomLevel`: 0
- Does this issue occur when all extensions are disabled?:
## Additional context
A screen recording of the composition offset is attached.
VS Code version: Code 1.135.0 (08d4889f9ec4a1685d257b9b95de036c8e1ce1e5, 2026-08-25T14:26:52Z)
OS version: Windows_NT x64 10.0.26200
Modes:
System Info
|Item|Value|
|---|---|
|CPUs|Intel(R) Core(TM) Ultra 5 225H (14 x 3686)|
|GPU Status|2d_canvas: enabled
GPU0: VENDOR= 0x8086, DEVICE=0x7d51 [Intel(R) Arc(TM) 130T GPU (15GB)], DRIVER_VENDOR=Intel, DRIVER_VERSION=32.0.101.8826 *ACTIVE*
GPU1: VENDOR= 0x1414, DEVICE=0x008c [Microsoft Basic Render Driver], DRIVER_VERSION=10.0.26100.8972
Machine model name:
Machine model version:
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgpu: enabled
webnn: disabled_off|
|Load (avg)|undefined|
|Memory (System)|30.92GB (17.65GB free)|
|Process Argv|-n --crash-reporter-id d8ecb5de-18f8-44d8-812a-6c66200eb2aa|
|Screen Reader|no|
|VM|0%|
Extensions (14)
Name|Identifier|Author|Version
---|---|---|---
Container Tools|ms-azuretools.vscode-containers|ms-azuretools|2.5.0
Docker|ms-azuretools.vscode-docker|ms-azuretools|2.0.0
Python Debugger|ms-python.debugpy|ms-python|2026.6.0
Python|ms-python.python|ms-python|2026.4.0
Pylance|ms-python.vscode-pylance|ms-python|2026.3.1
Python Environments|ms-python.vscode-python-envs|ms-python|1.36.0
Dev Containers|ms-vscode-remote.remote-containers|ms-vscode-remote|0.466.0
Remote - SSH|ms-vscode-remote.remote-ssh|ms-vscode-remote|0.126.0
Remote - SSH: Editing Configuration Files|ms-vscode-remote.remote-ssh-edit|ms-vscode-remote|0.87.0
WSL|ms-vscode-remote.remote-wsl|ms-vscode-remote|0.104.3
Remote Development|ms-vscode-remote.vscode-remote-extensionpack|ms-vscode-remote|0.26.0
Remote Explorer|ms-vscode.remote-explorer|ms-vscode|0.5.0
Remote - Tunnels|ms-vscode.remote-server|ms-vscode|1.5.3
vscode-pdf|tomoki1207.pdf|tomoki1207|1.2.2
A/B Experiments
```
vsliv368:30146709
vswsl492cf:30256860
binariesv615:30325510
nativeloc1:31344060
dwcopilot:31170013
dwoutputs:31242946
copilot_t_ci:31333650
e5gg6876:31282496
pythonrdcb7:31342333
6518g693:31463988
aj953862:31281341
envsactivate1:31551504
cloudbuttont:31379625
3efgi100_wstrepl:31403338
55ia6109:31457054
ec5jj548:31422691
cp_cls_t_966_ss:31526232
4je02754:31466945
c3h7c220:31478652
cp_cls_t_1081:31454832
conptydll_true:31498968
e9c30283:31461165
test_treatment2:31471001
46204921:31447328
ei9d7968:31496641
chat:31457767
ddid_t:31478206
hmra_i5g22:31518061
7df3h592:31512476
cp_cls_t_1082:31535311
logging_enabled_new:31498466
db5d2638:31499441
jb_cp_cls_t_632:31543129
56dj4588:31512888
32d76977:31512328
ha629193:31508444
jh5f2457_c:31540921
jbcp_cls_pctr_t:31531130
61138546:31518536
cp_intellij_t_nes:31548657
d7b18187:31526828
ahp-both-windows:31556933
sessions_3:31532893
ihg5j128:31534457
f412h606:31551416
7g2b5551:31542111
enable_editor_pane_layout:31569726
allow-none:31555437
6i51c363:31551401
ac562147:31564510
c7c27ce7:31554789
1h923230:31564177
1532g621_copy:31554320
treatment-23-1:31555779
unuse_dynamic_mcp:31555281
0d8dfbc3:31570291
a1hcc538:31559322
nemo-v2:31565334
0c1h4866:31566224
vrbsty_fls:31561059
session-mark-done:31558131
5b8j3302:31564601
mangle-name-treatment:31572634
```
Contributor guide
Assessment
This issue has not been assessed yet.