結合文字(けつごうもじ、英語: combining character)とは、文字コードにおいて先行する文字と組み合わせるための図形文字をいう。ダイアクリティカルマークや、仮名の結合可能な濁点・半濁点、ヘブライ文字のニクダー、アラビア文字のシャクル、ブラーフミー系文字の母音記号などが結合文字に属する。異体字セレクタも結合文字の一種である。
Unicodeでは、結合文字は以下の3種類のいずれかに属する[1]。
結合文字は先行する基底文字(非結合文字)と組み合わせて結合文字列(combining character sequence, CCS)を作る。結合文字は複数指定可能であり、通常はたとえば上につく結合文字が複数ある場合は上へ上へと積み重ねられるが、結合文字の種類によっては異なる表示がなされることもある[2]。
結合文字だけを単独で表したい場合は、ノーブレークスペース (U+00A0) を基底文字にすることができる[3]。
Unicode には合成済み文字も数多く定義されている。したがって、おなじ文字を表現するのに、合成済み文字を使うか、基底文字+結合文字を使うかで異なる表現が可能である。
例: â は U+00E2 (latin small letter a with circumflex) でも、U+0061 U+0302 (latin small letter a + combining circumflex accent) でも表すことができる。
また、複数の結合文字を使う場合、その順序が異なっていても同じ文字を表すことがある。
同じ文字が異なる符号で表現されると脆弱性の問題が発生することがある[4]。符号化表現を統一するために正規化することができる[5]。
ブラーフミー系文字のヴィラーマも結合文字(Mn)に属し、実際に先行する基底文字に記号として加えられることもあるが、通常は先行する文字と後続する文字を結合して合字を作る。合字ではなく強制的に基底文字+ヴィラーマを表示させたい場合は、ヴィラーマの後ろにゼロ幅非接合子 (U+200C) を置く。また、合字を作るための結合形を表示させる場合には、ヴィラーマにゼロ幅接合子 (U+200D) を置く[6]。
Unicode で分数を構成するための斜線(fraction slash, U+2044)やハングルの字母(U+11xx)は結合文字としては扱われず、独自の規則に従う。