The characterspacing commands can take care of it. The following example demonstrates this (I used the value 2 just to make it clear what is happening). It appears that alternative=1 inhibits breaks, while alternative=0 (or leaving alternative= out completely) allows breaks. I have not seen documentation; what I know about it comes from tests like the example below.At the moment, I use “\,” between word and question marks. Also “~” between word and “:”. I guess the \definecharacterspacing is more flexible and transparent from text input point of view (only write normal space). IIRC both \, and ~ also avoids line breaking at their location. Is there a way to specify this too please ?
\definecharacterspacing[test](Many ConTeXt commands have a \defineABC[somename] and a \setupABC[somename][options=…]. This can often, as is the case with characterspacing, be shortened into one command, \defineABC[somename][options=…], but I think not always.)
\setupcharacterspacing[test]["003A][left=2,alternative=1] % :
\setupcharacterspacing[test]["003B][left=2,alternative=0] % ;
\setupcharacterspacing[test]["00BF][right=2,alternative=0] % ¿
\starttext
\hsize4cm
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx:\par
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx :\par
¿xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;\par
¿ xxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;\par
\setcharacterspacing[test]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx:\par
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx :\par
¿xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;\par
¿ xxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;\par
\stoptext