Код преобразования, особенно в webkit, ужасно нарушен.Во время написания матрица преобразования применяется к механизму рендеринга, но не к вычислениям пространства, поэтому и Firefox, и Chromium пытаются рендерить область 100x200 в ячейке 200x100.Попытка переключить ширину / высоту приводит к пересчету преобразованной области до применения преобразования.
Самый простой и надежный способ - использовать SVG для создания изображения текста,К сожалению, это двухэтапный процесс:
<svg>
<text x="50" y="50" transform="rotate(0 0,0)">Category</text>
</svg>
Визуализация в браузере и получение размеров текстового тега (в данном случае 59x17) и подключение их к SVG.
<svg width='25px' height='60px'>
<text x="17" y="59" transform="rotate(270 17,59)">Category</text>
</svg>
![Vertical top-bottom text inside rounded div](https://i.stack.imgur.com/naJOy.jpg)
С содержимым 59 x 17px я немного увеличил размер контейнера, потому что размер, казалось, игнорировал глифы висячих (например, хвост y).Поворот на 270 градусов вокруг нижнего правого угла приводит к тому, что старый верхний правый становится новым верхним левым (т. Е. Текст смещается по вертикали, нижний верх).На текст также распространяются обычные правила таблицы стилей, хотя вам придется пересчитать размеры, если это изменит размер текста.