Unicode重叠字符是否存在?非覆盖退格类字符及터턚重叠需求问询
1. Does Unicode have overlapping characters?
Absolutely! Unicode has a dedicated category of combining characters (from blocks like Combining Diacritical Marks) built specifically to overlap with preceding "base characters." These don’t display on their own—they attach directly to the character before them to modify its appearance.
For example:
- Take the base character
eand addU+0301(Combining Acute Accent), and you geté—the accent overlaps right on top of thee. - Another common one is
U+0336(Combining Long Solidus Overlay), which adds a strikethrough over any preceding character:x+U+0336becomesx̶.
There are also precomposed characters that are essentially pre-built overlapping combinations (like Å = A + a circle), but combining characters are the core Unicode feature for intentional, customizable overlap.
2. Are there Unicode characters that act as non-overwriting backspaces?
Unicode doesn’t define a dedicated "non-overwriting backspace" character in its standard, but there are workarounds and edge cases that achieve similar behavior:
- The classic
U+0008(BACKSPACE) control character’s behavior depends entirely on the app rendering it. Some terminals or text editors treat it as a cursor-left move without deleting the preceding character (non-overwriting), while others delete the character (overwriting). This inconsistency makes it unreliable for consistent cross-app results. - Zero-width characters like
U+200B(Zero-Width Space) orU+FEFF(Zero-Width No-Break Space) don’t take up visible space, but they don’t move the cursor. When paired with combining characters, though, you can create the illusion of overlapping (which feels like a non-overwriting backspace effect).
If you need consistent non-overwriting cursor movement, you’ll likely rely on application-specific controls rather than pure Unicode characters.
3. How to overlap the Hangul characters 터 (U+D130) and 턚 (U+D15A)?
Hangul syllables like these are precomposed characters (they represent full syllables, not individual jamos), so overlapping them purely with Unicode requires some trickery—there’s no combining character designed to overlay an entire Hangul syllable on another. Here are two practical approaches:
Approach 1: Use the BACKSPACE control character
Input the sequence: 터 + U+0008 + 턚
This works only if your application treats U+0008 as a non-overwriting cursor move (i.e., it shifts the cursor left to the position of 터 without deleting it, then renders 턚 on top). Note this behavior varies across apps, so test it in your target environment first.
Approach 2: Typography tools (if pure Unicode isn’t a strict requirement)
If you’re working in a context that supports CSS (like HTML), you can position the two characters absolutely to guarantee consistent overlap:
<span style="position: relative;"> 터 <span style="position: absolute; left: 0; top: 0;">턚</span> </span>
This gives you full control over the overlap and works reliably across browsers.
内容的提问来源于stack exchange,提问作者Stretto

