Fonts that compose Ideographic Description Characters into one character
The question you are asking is basically, &quot;how do I shape ideographic description sequences (IDS's)&quot;? Text shaping is how the Arabic word خ‌ط‌ ‌ا‌ل‌ع‌ا‌ئ‌ل‌ة becomes خط العائلة.
It is technically possible. I am working on a proof-of-concept that can shape any IDS with a recursion depth of 2 or less. The recursion depth is needed due to limits of the number of glyphs possible in a SFNT-based font.
An SFNT-based font can contain 65535 glyphs. There are 26 presentation forms of a radical shaped in an IDS:

口_Plain.
⿰: 口_Left; 口_Right.
⿱: 口_Above; 口_Below.
⿲: 口_LeftOf3; 口_HMiddleOf3; 口_RightOf3.
⿳: 口_TopOf3; 口_VMiddleOf3; 口_BottomOf3.
⿴: 口_Surrounding; 口_Surrounded.
⿵: 口_SurroundingFromAbove; 口_SurroundedFromAbove.
⿶: 口_SurroundingFromBelow; 口_SurroundedFromBelow.
⿷: 口_SurroundingFromLeft; 口_SurroundedFromLeft.
⿸: 口_SurroundingFromUpperLeft; 口_SurroundedFromUpperLeft.
⿹: 口_SurroundingFromUpperRight; 口_SurroundedFromUpperRight.
⿺: 口_SurroundingFromLowerLeft; 口_SurroundedFromLowerLeft.
⿺: 口_OverlaidA; 口_OverlaidB.

If you take the 216 radicals and draw them in all 26 presentation forms, you have 5,616 glyphs. (You can prune the list some by remembering that not all radicals make sense in all presentation forms; for example, 辶 can never be Surrounding or Overlaid.)
You can then use contextual alternates (GSUB) and contextual substitution (GPOS) to begin shaping. Wherever possible, to reduce the number of needed glyphs, you want to merge where possible. So, to shape 務, you want to shape ⿰矛务, not ⿰⿹予丿⿱夂力; even if this means that you need more &quot;radicals&quot;.
This is a broad overview; I am working on a proof of concept, and also font standards which would make things easier for font authors. I also wrote a paper on the subject for the Text Shaping Working Group:
https://docs.google.com/document/d/1NYKsNOjkOamIRdfMReZfxAhtOUMiHNm_TIidb0Daob4