microsoft / microsoft/terminal

Implement a tile based deferred text renderer for perfect glyph overlaps

Open
#18,535 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Area-AtlasEngine Area-Rendering Issue-Feature Product-Conhost Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

Before:

before

After:

after

To people who work on video games this is probably a piece of cake. To anyone else, I hope this suffices:

explanation

The key here is that we accumulate the ClearType weights separately from the foreground colors via max() and only then blend it with the foreground color into the resulting image. The max() ensures that no emboldening occurs on overlaps, unlike with regular alpha blending (two semi-transparent colors result in one slightly opaquer).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the terminal's text-rendering pipeline and the code that produces the before and after glyph-overlap results. Read the attached explanation of separately accumulating ClearType weights with max() before blending foreground colors. Done means overlapping glyphs no longer become emboldened while the rendered output matches the intended result.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.