LINUX.ORG.RU

Tcl/Tk: utf-8, шрифты, внешний вид...


0

0

здравень всем!

1. как в тикле использовать утф-8 строки напрямую, без привязок к текущим локали/ОС? не в виде \u0082\u0435... а просто utf-8 текста? в python/tkinter само собой так и есть, а вот в тикле что-то не понял... :)

2. кто как решает вопрос с шрифтами? зачастую шрифты "по умолчанию" в линуксе страшненькие бывают (в винде более-менее). есть такая мысль - если при запуске прога не находит конфига (т.е. первый запуск), то выводит диалог настройки шрифтов. он в тикле стандартный, или надо "системный" типа вызывать :)

пока вроде всё... заранее благодарень всем!

 по первой части - в tcl внутреннее представление строк - unicode,
локали ты должен указывать только при чтении записи файла..
 по второй - вопросы со шрифтами (вообще с внешним видом) решаются через option.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

>по первой части - в tcl внутреннее представление строк - unicode, локали ты должен указывать только при чтении записи файла..

в данном случае я о более простом случае. пишу типа:

button .ex -text Выход -command exit

в винде "Выход" пишешь в ср1251 - всё ок. в лин - в текущей локали (напр. кои-8р) - ок. а прога должна и там и там работать без перепиливания к-л. простейший ИМХО вариант - все строки в утф-8. а в лоб пишешь - ни в винде ни лин (locale != utf-8) корректно не отображае тся. м.б. указывать что нужно...

>по второй - вопросы со шрифтами (вообще с внешним видом) решаются через option.

вообще что-то вроде:

set ttf "Tahoma 26 bold"

button .ex -text Выход -command exit -font $ttf

работает без проблем. но ведь наличие конкретного шрифта у юзера не угадаешь, а абстракция типа Helvetica порой коряво смотрится.

volonter
() автор топика
Ответ на: комментарий от Zert

>посмотри на tkabber. там есть все что тебе нужно

ок, попробую.

благодарю всех за помощь!

volonter
() автор топика
Ответ на: комментарий от volonter

> в винде "Выход" пишешь в ср1251 - всё ок. в лин - в текущей локали (напр. кои-8р) - ок. а прога должна и там и там работать

Она и будет и там, и там. Только дай команду что-то типа encoding system в начале и осстанови в конце. Так, кажись.

С уважением -- Смоляное Чучелко

anonymous
()

> 1. как в тикле использовать утф-8 строки напрямую, без привязок к текущим локали/ОС? не в виде \u0082\u0435... а просто utf-8 текста? в python/tkinter само собой так и есть, а вот в тикле что-то не понял...

tcl 8.5a3 поддерживает source с указанием кодировки.

В более старых версиях проще делать read с нужным translation. Или писать в той кодировке которую оно распознаёт.

> 2. кто как решает вопрос с шрифтами? зачастую шрифты "по умолчанию" в линуксе страшненькие бывают (в винде более-менее). есть такая мысль - если при запуске прога не находит конфига (т.е. первый запуск), то выводит диалог настройки шрифтов. он в тикле стандартный, или надо "системный" типа вызывать.

В линухе всё самое-самое. Кто будет против -- тот вражеский засланец. Страшненькие они потому что оно пытается русские искать и находит какие попало. Хуже, если у юзера в ресурсах чёрт знает что и находятся совсем нерусские шрифты (как у меня). В таком случае лучше иметь разумных app-defaults с русскими ресурсами. Загружаемый, естесственно, в зависимости от текущей локали.

fk0
()
Ответ на: комментарий от volonter

> в данном случае я о более простом случае. пишу типа:

> button .ex -text Выход -command exit

Неправильно. То-есть можно конечно через FRINK такое прогонять, и может даже после этого не вылезет никаких граблей (FRINK, зараза, любит пустые строчки глотать и это неотключабельно). Но лучше сразу научиться писать так:

package require msgcat namespace import ::msgcat::mc button .ex -text [mc {blablabla}] -command exit

fk0
()
Ответ на: комментарий от volonter

> вообще что-то вроде: > set ttf "Tahoma 26 bold" > button .ex -text Выход -command exit -font $ttf

Опять же неправильно. Следует писать:

option add *ex.font {Tahome 26 bold}

Если быть ещё более точным -- это всё стоит поместить в app-defaults. Если совсем точным: данный app-defaults нужно разделить на "C" и локале-зависимые версии, считываемые в зависимости от локали.

fk0
()
Ответ на: комментарий от anonymous

> Она и будет и там, и там. Только дай команду что-то типа encoding system в начале и осстанови в конце. Так, кажись.

Мне почему-то кажется, трансляцию потока оно на ходу менять не будет. И вообще encoding не к тому относится.

fk0
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.