putText uses very simple built-in fonts.
if you want to specify a “regular” font (e.g. truetype), you will need to use the freetype module from opencv_contrib. that requires the freetype and harfbuzz libraries (not related to OpenCV).
I don’t know if the java bindings will include this API. another thread discusses this issue.