Join separated grapheme cluster - unicode

I have some Burmese text, which was split down to individual characters to check for and remove characters outside of the relevant Unicode block, e.g. removing Latin characters from Burmese text. The result (if I am using the correct term) is that the grapheme clusters have been separated like:
ေမာင္ေကာင္းၫိႈ႕မွဴးႏိုင္
I believe where the dotted line circles are should be the two chracters as one Unicode character as opposed to two.
Correctly rendered Burmese shouldn't have these dotted circles like:
ယနေ့ မြန်မာမှုအဖြစ် ပုံဖော်ပေးခဲ့သည့် ယဉ်ကျေးမှုမှာ နှစ်ပေါင်း အတော်အတန်ကြာမြင့်နေပြီဖြစ်ကြောင်း
Any ideas on how this could be fixed?

Related

Need a single width unicode character to indicate a wide character has been shortened for lack of space

I'm looking at formatting a utf8 free text string to fit an exact column width on a terminal. I'm coding various truncation methods (left/middle/right) for long strings however, when the truncation break point lies over a wide character, such as an emoji, the display column counting falls apart. some form of padding is needed for the 'half wide' column placement.
Is there a suitable narrow character to show that indicates we do have valid unicode character, but insufficient display space to show it, as opposed to the special replacement character � usually used for invalid unicode ??
Example: on a fixed spacing terminal fit two smiley emojis into the space that would fit 'aaa'. e.g. "👨👨" ! so need a, preferably standardised, substitute character for the second emoji/wide character, e.g. "👨⋮" to fit that three wide space.
A side issue is trying to work out when decomposed composite characters start and end, (also are there combining prefixes?). It looks like the next code point needs to be read to see if it is still zero width (e.g. 'o' U+006F, then 'umlaut' U+0308, rather than ö U+00F6; don't stop after the plain 'o').

Combining character with combining mark makes it appear shifted to the right

I'm combining some characters with unicode combining marks. Some marks when presented in labels, however appear shifted to the right, this is not the actual example but let's say I were to combine A and ˚. Instead of having Å, i have A˚. If I copy the text and paste it somewhere else, the character appears perfect (Å).
To combine the characters I use a method that does this:
Character("\(character)\(mark)")
Where character would be a letter and mark an accent or another combining mark.
I read that this may happen because some fonts don't support certain characters. The font I use for my labels where I display the combined stuff is the systemFont.
Why is this happening? How can I prevent combined characters from being shifted to the right?

Display diacritical marks without the dotted ring

Is there any way to display diacritical marks like following without the dotted ring?
◌́
◌̀
◌̃
Each of these items are actually two characters in Unicode that are combined via ligatures or mark-to-base features in the font. The dotted circle is 0x25CC, and the marks you have here are 0x301, 0x300, and 0x303 - each of these are designed to combine with the previous character, but there are non-combining versions of each of these: 0x2CA, 0x2CB, and 0x2DC.
So you can delete the dotted circle from the beginning of the character (it may be difficult to figure out where this character is, since the marks have a width of zero), and replace it with a space, but it may display in odd ways depending on what's surrounding it:
́
̀
̃
Or use the non-combining versions of these marks:
ˊ
ˋ
˜

What's the character code for exclamation mark in circle?

What's the Unicode or Segoe UI Symbols (or other font) code for exclamation mark in circle?
There is no single Unicode codepoint for that particular symbol.
Unicode does define a U+20DD COMBINING ENCLOSING CIRCLE codepoint, but most fonts (including Segoe) do not treat it as a combining symbol, but rather as its own character. In Word, for instance, you would have to adjust the character spacing between it and a preceding character (in this case U+0021 EXCLAMATION MARK) to a negative offset to make them overlap (see Using the “Combining Enclosing Circle” character in Word).
Some fonts do support U+20DD in general (see COMBINING ENCLOSING CIRCLE (U+20DD) Font Support), and some of them do treat it as a combining mark (Code2000, GNU FreeFont fonts, STIX fonts, Symbola, XITS, etc), but the resulting overlap may not visually be exactly what you are looking for, depending on the size and alignment of the character it is being combined with.

How is transformation of code point to final character implemented in Unicode?

Characters included in BMP as specified by 4 digits,
and those characters outside of BMP contains 5 or 6 digits.
But my doubt is:
how is the finanal character drawed from value of code point?
Are the pictures of each character restored in each computer and when displaying just show the matching picture?
Or the final glyph is a computed result of code point itself?
Each Unicode character has a code. The software displaying the character obtains a glyph for that character code - usually from a font installed onto the hosting computer. It then uses the obtained glyph to display the character.
If it can't find a glyph for that character (many fonts for Latin characters completely omit the glyphs used for East Asian languages characters) it formally can't display it. It will then either indicate error or use a supplement glyph meaning that the actual glyph can't be displayed (it can be a question mark or a square or whatever).