Прямой Win32 API не может рисовать (не перевернутый) вертикальный текст (с произвольным шрифтом) таким образом, за исключением одного символа за раз.
Вы можете сделать более сложный вывод текста с помощью GDI +
Но это, вероятно, не то, что вы хотите, так как текст будет вертикальным, но символы также будут поворачиваться.
Аналогично, вы можете использовать CreateFont со значением lfEscapement 900 или 2700, чтобы получить повернутый текст, но это будет вращать все. Так что это тоже не поможет.
Чтобы выполнить рисование сверху вниз на японском языке, необходимо, чтобы символы не были повернуты, а расположение каждого символа перемещалось по Y, а не по X. В Windows нет API, который бы делал это для всех шрифтов. (вы можете делать справа налево и слева направо, но не сверху вниз).
Теоретически создание шрифта с ориентацией 900 и отступом 2700 будет делать то, что вы хотите, но кажется, что если вы установите отступ, то ориентация игнорируется для большинства шрифтов. Возможно, для японских шрифтов это будет работать по-другому. Стоит потратить некоторое время, чтобы поиграть. (см. приложение для получения дополнительной информации об этом)
Я думаю, что ваша лучшая ставка - это, вероятно, цикл, рисующий по одному символу за раз с ExtTextOut , который дает вам полный контроль над размещением каждого персонажа.
Если вы используете ETO_OPAQUE, чтобы нарисовать первый символ в столбце, а не со всеми остальными, то вам будет разрешено вставлять символы по вертикали, если вам это нужно.
Добавление
Ройгбив указывает на интересную статью, в которой говорится, что шрифты, имена которых начинаются с @, ведут себя иначе, чем другие шрифты, когда вы используете CreateFont шрифт со значением lfEscapement 2700. Эти специальные шрифты производят вертикальные символы, все еще продвигаясь по странице. Поэтому, хотя для произвольных шрифтов не существует способа сделать то, что вы хотите, вы можете заставить его работать, используя определенные шрифты.
Параметры отображения текста
Из любопытства я написал небольшое консольное приложение для перечисления шрифтов и перечисления имен. На моем компьютере с Windows Server 2003 нет шрифтов с именами, начинающимися с @. Но у моей машины с Windows 7 их немного. Все, кажется, китайские шрифты, хотя я не вижу японских шрифтов в стандартной установке Windows 7 Ultimate.