С#, отображающий тайский язык в текстовом поле

Я создаю приложение, которое будет отображать Unicode в текстовом поле и поле изображения. Изображение приложения

У меня есть некоторые проблемы, когда я пытаюсь использовать тайский язык, я не говорю по-тайски, но знаю, что правила позволяют мне иметь персонажа, а затем поверх него максимум две другие отметки.

Я пытаюсь ввести следующий Unicode в текстовое поле. 0E2c, затем добавьте поверх него 0E36, а затем 0E4B. Я установил размер шрифта 30 для текстового поля. Текстовое поле, которое я пытаюсь изменить, автоматически изменяется следующим образом. Обратите внимание на высоту. Я пытаюсь добавить больше, чем мне нужно, на случай, если это поможет, но, увы, это не так.

Size size = TextRenderer.MeasureText(txtbx_text.Text, txtbx_text.Font);
txtbx_text.Width = size.Width;
txtbx_text.Height = size.Height + 25;

Я пытаюсь получить picturebox image, но текстовое поле показывает Изображение текстового поля обратите внимание, что верхний бит отсутствует. Любая идея, как я могу заставить текстовое поле правильно отображать тайский язык?

Я думаю, что txtbx_text.height не работает, так как я увеличил размер на 2000, и ничего не происходит. Ширина хороша, так как мне заставить работать высоту?

Код доступен по адресу http://www.filedropper.com/i-braille. Выберите страницу 0e, установите высоту 30. Щелкните правой кнопкой мыши на каждом символе, чтобы построить строку, левый щелчок дает информацию. В строке Form1.cs 116'ish я пытаюсь установить размер текстового поля.


person user3884423    schedule 20.11.2017    source источник
comment
Я думаю, что ваше предположение может быть неверным. Я только что проверил это с помощью виртуальной клавиатуры, чтобы создать желаемый комбинированный символ и установить его как значение текстового поля. Отображает просто отлично, включая маленький плюс. Покажите, как вы создаете персонажа. Я скорее подозреваю, что проблема там.   -  person LocEngineer    schedule 20.11.2017
comment
Увеличение высоты не помогает, это просто создает больше места внизу буквы. Шрифт имеет большое значение. Не знаю, какой шрифт идеально подходит для тайского текста, но не шрифт по умолчанию в Winforms. Например, Segoe UI выполняет свою работу должным образом.   -  person Hans Passant    schedule 20.11.2017
comment
@HansPassant Я пробовал использовать шрифт MS Sans Serif по умолчанию, а также AngsanaUPC. Оба выглядят просто отлично для меня.   -  person LocEngineer    schedule 20.11.2017
comment
У меня не было проблем с воспроизведением проблемы ОП. И исправить это с помощью лучшего шрифта. Такие вопросы должны документировать версию Windows.   -  person Hans Passant    schedule 20.11.2017
comment
Я использую Windows 7 Professional SP1 с VS2015.   -  person user3884423    schedule 20.11.2017
comment
Не размещайте ссылки на свой код, чтобы мы его скачали и разобрались в беспорядке. Разместите соответствующие части здесь напрямую.   -  person LocEngineer    schedule 20.11.2017


Ответы (2)


У меня было сообщение от тайца, и он сказал мне, что проблема заключается в шрифте. Не все шрифты работают, поэтому они не могут использовать их все в пользовательском интерфейсе, этого я не знал. Они предлагают использовать «Angsana New», я попробовал это, и пока все работает нормально. Вот доказательство с помощью Bembo. Я получаю символы из верхней части текстового поля.

Использование Бембо

Но когда я просто меняю только тип шрифта, размер остается прежним, я получаю

Использование Angsana New

Вот как это должно выглядеть, поэтому я думаю, что использование этого шрифта будет лучше. Если кто-то еще имеет опыт тайского и может помочь, я был бы признателен за любые комментарии и помощь. На данный момент я думаю, что у меня есть ответ для дальнейшего пути.

person user3884423    schedule 21.11.2017

Нашел проблему. Установите для свойства шрифта GdiVerticalFont текстового поля значение True.

person LocEngineer    schedule 20.11.2017
comment
Почти, но не для всех комбинаций. Я пробую (все со страницы 0E) char C2, затем 43, затем A4, и это не изменяет размер текстового поля. B2 с 43 и A4 подходит. Я думаю, что лишние элементы, которые я добавляю, не устанавливают событие где-то для изменения высоты текстового поля? - person user3884423; 20.11.2017
comment
У меня работает, но я твердо предполагаю, что вы имели в виду 2C, 34 и 4A, поскольку упомянутых вами нет на тайской карте. Как добавить эти предметы? Пожалуйста, напишите код. - person LocEngineer; 20.11.2017
comment
Я определенно имею в виду C2,43 и A4. Если вы сомневаетесь в том, как нумеровать Unicode, перейдите на страницу 00 и посмотрите на ноль, он будет в позиции 30, поэтому возьмите число по горизонтали, а затем по вертикали получите 30. - person user3884423; 21.11.2017
comment
@user3884423 user3884423 На самом деле я не сомневаюсь. Проверьте здесь, с адресами и всем остальным: jrgraphix.net/r/Unicode/0E00-0E7F Тайский подходит только к E0*7F*, так что C2 определенно находится за пределами досягаемости. - person LocEngineer; 21.11.2017
comment
@user3884423 user3884423 Я определенно имею в виду C2, 43 и A4 .. То есть вы имеете в виду смешивание лаосского символа с тайским иероглифом, за которым следует лаосский? Вы действительно минусовали меня за это? - person LocEngineer; 21.11.2017