microsoft/Terminal

“ⓒ" U+24D2 fallback rendering in conhost / GDI

Open

#10,930 建立於 2021年8月12日

在 GitHub 查看
 (0 留言) (2 反應) (0 負責人)C++ (3,212 fork)batch import
Area-RenderingHelp WantedIssue-BugPriority-3Product-Conhost

倉庫指標

Star
 (35,764 star)
PR 合併指標
 (平均合併 27天 19小時) (30 天內合併 24 個 PR)

描述

Windows Terminal version (or Windows build number)

OpenConsole built from the latest source or taken from the latest Terminal Preview, e.g. 1.10.2107.12003

Other Software

No response

Steps to reproduce

  1. Create the following file:
@echo off
chcp 65001

echo ⓒ
echo ⁺ⓒ
  1. Save as test.cmd in UTF-8 encoding (or download test.cmd.txt and rename).
  2. Build and run the latest OpenConsole.
  3. Set the font to Consolas.
  4. Run test.cmd.

Expected Behavior

image

Actual Behavior

image

Details

It looks like the GDI renderer is having issues with the font fallback for the ⓒ - Circled Latin Small Letter C: U+24D2 character. Usually it doesn't work at all and the replacement character is rendered instead. However, as the example above demonstrates, sometimes it magically works in the presence of other Unicode characters, e.g. ⁺ - Superscript Plus Sign: U+207A.

It works as expected in WT and OpenConsole with the DirectX renderer. It also works as expected in other GDI apps with font fallback, e.g. notepad.exe.

Also, it looks like the fallback glyph isn't clipped properly and can overlap with the next one:

image

貢獻者指南