LINUX.ORG.RU

[XWindow]Замена на экране символа ё на ö

 


0

1

Хочу полностью сменить кириллицу на экране на латиницу.
Hoču polnostwu smenitw kirillicu na ěkrane na latinicu.

Файл, отвечающий за ввод символов с клавиатуры я нашел:
/usr/share/X11/xkb/symbols/ru

Что отвечает за вывод символов и их вид на экране:
1) в иксах (XWindow)?
2) в консоли?

Есть ли какие-то штатные механизмы, или только лезть в «нутро»?
Кто знает, скажите, или хотя бы намекните.

P.S. Этот вопрос слишком сложный для Desktop, поэтому запостил сюда.

★★★★★

Есть мысль, что разве что патчанием либ отвечающих за рендеринг шрифтом. У самого была подобная мысль, но для для криптоалфавита.

PolarFox ★★★★★
()

Файл, отвечающий за ввод символов с клавиатуры я нашел: /usr/share/X11/xkb/symbols/ru

Он был актуален только в старых иксах. В новых пользуйтесь xcbcomp или что-там-еще-есть.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от PolarFox

Тоже думаю что надо копать, или сам рендеринг, или какой-то еще уровень до непосредственно самого графического рендеринга.

Т.е. надо перед рендерингом перехватывать Unicode кириллицы и транслировать его в Unicode латиницы. Но вот где это?

Novator ★★★★★
() автор топика

я в свое время тупо руками правил фаил, правда ua, а то на русском тоже хотелось вменяемо писать.

Novell-ch ★★★★★
()

Для чего это нужно:

Предупреждая недоумение, сразу отвечу кому это может понадобиться:

1) братьям-славянам (чехам, полякам, словакам, хорватам и т.д.)
У них, как вы знаете латиница, и если они захотели бы почитать русские сайты, то им было бы привычнее видеть латиницу, а не кириллицу.

2) иностранцам, изучающим русский язык
Им бы тоже было привычней видеть родной алфавит, а не «китайскую грамоту» :)

3) тюркам, использующим латиницу (туркам, азербайджанцам, узбекам, туркменам и т.д.)
Им было бы привычнее читать как русские сайты, так и сайты родственных народов, использующих кириллицу: татар, казахов, башкир, якутов и т.д.

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

5) русским, в будущем
Думаю, мы рано или поздно перейдем на латиницу, если захотим быть интегрированы в мировое сообщество. 4 миллиарда в мире используют латиницу. 1,7 миллиарда - иероглифы, и только 200 тысяч - кириллицу. Мы хотим объединяться с Европой. Вот и олимпиады (Сочи+FIFA) скоро грядут. Думаю, кириллица обречена. Но мы должны выжить :)

Как бы то ни было, я решил сделать эту фичу. Просто чтоб было ;-)

P.S. По поводу почему «ь=w» отвечу когда реализую задумку. Это уже второстепенный вопрос.

Novator ★★★★★
() автор топика
Ответ на: Для чего это нужно: от Novator

и только 200 тысяч - кириллицу.

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

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

> Россия, Беларусь, Украина, Болгария, Казахстан

142+9+46+7+16 = 220, Боже, как я ошибься! :)
А «носители» из США и Канады только спасибо скажут за латиницу.

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

Проще всего патчить freetype/libxft. Если очень хочется, то можно уровнем выше: pango, Qt и остальные тулкиты (если используются).

x3al ★★★★★
()
Ответ на: Для чего это нужно: от Novator

5) русским, в будущем

Ты в неправильном направлении копаешь. man китайские иероглифы. Да, у них там еще и наречий куча. Так что можешь немного модифицировать под русский язык.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Novator

А что, в россии 142млн. человек используют кириллицу? Не знал...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от gandjubas

Ты сам-то понял что сказал?


Тебе баклану даже расчеты привели. Не согласен?!

И да, я ни за что в жизни не пойду на твой сайт читать говнолатиницу.


А ты там и не нужен. И здесь кстати тоже.

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

> даже расчеты привели. Не согласен?!

А ты там и не нужен. И здесь кстати тоже.

Дебилы, не умеющие считать не нужны вообще нигде.

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

Очевидно же, ТС под «200 тысяч» имел в виду «200 миллионов».

Напоминаю, это технический раздел. И задан технический вовпрос.
Все боевые петушки идут в толксы.

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

> Очевидно же, ТС под «200 тысяч» имел в виду «200 миллионов».

Напоминаю, это технический раздел.

Оно и видно, ага.

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

Специально для боевого петушка, по пунктам:

Для чего это нужно:

1) братьям-славянам (чехам, полякам, словакам, хорватам и т.д.)

У них, как вы знаете латиница, и если они захотели бы почитать русские сайты

Пусть учат русский язык или - идут лесом.

2) иностранцам, изучающим русский язык

Пусть учат русский язык или - идут лесом.

3) тюркам, использующим латиницу (туркам, азербайджанцам, узбекам, туркменам и т.д.)

Им было бы привычнее читать русские сайты...

На русском языке (как мне - на английском таки латинскими буквами, а не русскими).

4) русским, которые много времени висят на английских сайтах

Ну и много ты осилишь латиницей? А мозг не взорвётся после такого? (это, кстати, можно сказать, уже чисто технический вопрос, в ИТ он относится к понятию «usability»)

Меня например достало постоянно переключать, во-первых свое внимание между разными буквами, во-вторых, свою раскладку :)

А меня, не поверишь, бесят посты полуграмотных, написанные латиницей (за исключением случаев, когда иного выхода нет). Если человек живёт на западе постоянно, то он рано или поздно ставит нормальный русский шрифт для общения с русскоговорящими. А знаете почему? Это элементарно, Ватсон, его посты просто не читают.

5) русским, в будущем

Думаю, мы рано или поздно перейдем на латиницу, если захотим быть интегрированы в мировое сообщество. 4 миллиарда в мире используют латиницу. 1,7 миллиарда - иероглифы, и только 200 тысяч - кириллицу. Мы хотим объединяться с Европой. Вот и олимпиады (Сочи+FIFA) скоро грядут. Думаю, кириллица обречена. Но мы должны выжить :)

Объясняю на пальцах. Что будет через сто лет - никому неизвестно. Целевая аудитория СЕЙЧАС у автора какая? Китайцы, которым что кириллица, что латиница - один хрен? Англичане, которым абракадабра написанная их буквами - абракадабра же? Перестаньте уже тупить.

Как бы то ни было, я решил сделать эту фичу. Просто чтоб было ;-)

Это единственный «разумный» аргумент.

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

И ещё, каким образом на одной клавиатуре будут уживаться недолатиница и православная латиница? - сугубо технический вопрос.

gandjubas
()
Ответ на: Для чего это нужно: от Novator

И если уж вас так привлекают цифири, то давайте рассмотрим евреев. Сколько их? Тьфу да маленько. До 20-го века у них даже государства своего толком не было. А смотрите-ка, они не поленились же и залабали свой кошерный иврит со своим шрифтом. С чего бы это? Не уж то они глупее вас, уважаемый автор?

gandjubas
()
Ответ на: комментарий от Eddy_Em

> Ты в неправильном направлении копаешь. man китайские иероглифы. Да, у них там еще и наречий куча. Так что можешь немного модифицировать под русский язык.

Да, под этих будет даже выгоднее лечь.

xio
()
Ответ на: Для чего это нужно: от Novator

> Думаю, мы рано или поздно перейдем на латиницу, если захотим быть интегрированы в мировое сообщество.

Ну нафиг нам такую интеграцию, это для нас же хуже. Приходится иногда искать что-то по словацки, так это сущий ужас - гугол так и норовит выдать какую-то хрень (на так называемый «международный» язык ориентированную). С кириллицей таких проблем практически не возникает.

mqspi
()
Ответ на: Для чего это нужно: от Novator

>и только 200 тысяч - кириллицу

Славянских народов осталось 200 тыс. человек?

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

>И да, я ни за что в жизни не пойду на твой сайт читать говнолатиницу.

1+! :)

KRoN73 ★★★★★
()

Эй, петушки, хорош холиварить - на первое сообщение отвечаем :)

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

> freetype/libxft

Похоже то что нужно, сижу читаю мануалы. Спасибо.
P.S. И с консолью вроде тоже прояснилось.

Novator ★★★★★
() автор топика
Ответ на: Для чего это нужно: от Novator

2) Изучая тот же английский вы читаете в учебнике «Lesson 1: My name is John», в а не " Лессон1: Май нэйм ис Джон". Иностранцы не дураки, они понимают что изучая русский на латинице и приехав после этого в Россию они не поймут ни одной вывески на магазине, ни одного указателя на улице, не смогут прочитать ни одной русской книги в оригинале.

3) Я думаю что «тюркам» все равно какая у них раскладка если они читают русский сайт на русском ( спустился с гор - будь добр учить язык), если читают сайт на родном языке : во-первых они родной язык знают и так, во-вторых проще поставить третью раскладку чем трахать мозг двумя, но такими что первая печатает буквами из второй то, что должно быть вообще на другом языке.

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

5) Сомневаюсь что мы перейдем на латиницу, просто из-за того что нам будет лениво писать 2-3 буквы чтобы выразить один звук.Лично меня бы не прикалывало писать слово «просчет» в стиле немцев «prostschjet».

По поводу почему «ь=w» отвечу когда реализую задумку.

Вот это я и имел ввиду под «каракулями» в 4 пункте ибо никому кроме автора непонятно как все это читать.

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

Кириллицей пользуются в основном русские украинцы и беларусы (==русские in short). У греков - альфы, лямбды и омеги всякие. У армян вообще своя письменность, чуть не самая древняя на просторах бывшего Союза, появившаяся задолго до кириллицы. У грузин - также свои кракозябры. И т. д.

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

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от gandjubas

А эти тут при чем? У грузин и армян - своя красивая письменность. У греков - своя. А у тех, про кого я говорил - обычная кириллица с небольшими добавлениями штришков на некоторых буквах.

Eddy_Em ☆☆☆☆☆
()

И все-таки

(эх зря я причины расписал.. только тролей прикормил...)

Возвращаясь к теме. Вычитал что схема такая:

Gtk/Qt приложение
  |
Cairo <-- FontConfig
  |
Xft2
  |
FreeType2
  |
Render (X server)
  |
Драйвера видеокарты
  |
Видеокарта
  |
Монитор

Кое-какие схемы здесь:
http://weirdfellow.wordpress.com/
У китайцев все сложнее:
http://clouds-zhl-gtk.blogspot.com/2008/11/cariorpango.html

Вопрос к знающим такой: куда все-таки правильнее «charset mapping» прикрутить, в cairo, в xft или freetype?

Novator ★★★★★
() автор топика
Ответ на: И все-таки от Novator
Gtk/Qt приложение
  |
Cairo <-- FontConfig
  |
Xft2
  |
FreeType2

ldd говорит, что схема врёт (и вообще, педивикия — говно, а не энциклопедия). Cairo напрямую слинковано с FreeType, что, в общем, согласуется со здравым смыслом. Xft юзается не-гтк софтом. Qt не юзает Cairo, в нём свой велосипед с подобными функциями.

У китайцев все сложнее:

Вообще pango в первую очередь нужно не китайцам, а арабам. Оно отвечает за лигатуры и прочую фигню. Для японокитайцев оно максимум меняет направление текста (сверху вниз справа налево). pango юзает cairo/xft/X Core fonts в качестве бэкэндов для отрисовки. Не-гтк/qt софт может юзать не только Xft, но и X Core fonts, за которые в 21 веке стоит отрывать руки (оно никогда не сможет поддерживать юникод, ибо 16 бит, не говоря о лигатурах и направлении письма), но он в меньшинстве.

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

Дааа уж.. наворотили. Спасибо за подробное объяснение.
Разбираюсь вот сижу. Даже сырцы freetype скачал. Но вот думаю, неужели нет какого-нибудь конфигурационного файла, в котором можно влиять на маппинг?! Что-то патчить нативные либы уж очень не хочется.. Ну это так, мысли вслух.

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

>Кириллицей пользуются в основном русские украинцы и беларусы (==русские in short). У греков - альфы, лямбды и омеги всякие. У армян вообще своя письменность, чуть не самая древняя на просторах бывшего Союза, появившаяся задолго до кириллицы. У грузин - также свои кракозябры. И т. д.

Когда же вы все начнете читать сообщения, на которые отвечаете.

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

Латинизация

Для общего развития рекомендую почитать:
http://ru.wikipedia.org/wiki/Латинизация
http://ru.wikipedia.org/wiki/Яналиф
Русская_латиница#Советский_проект

Посмотреть и сравнить карты:
http://ru.wikipedia.org/wiki/Латиница
http://ru.wikipedia.org/wiki/Кириллица

Ну и посмотреть список языков на латинице:
Алфавиты_на_основе_латинского

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

>Кириллицей пользуются в основном русские украинцы и беларусы

Не скажу за украинцев, но у белорусов есть вполне стандартизированный алфавит. На нём издавались и печатались как книги и газеты. Добрая часть поэтов и писателей именами которых названы улицы в бел. городах писали латинкой ( Богушевич, Богданович к примеру ). Причём это не польское влияние, т.к. от полкой латинки он кардинально отличается, а похож на чешскую. примеры http://lacinka.wordpress.com/ , http://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%BB%D0%BE%D1%80%D1%83%D1%81%D1%81... . На данный момент используется только эмигрантами и особо принципиальными. Почему загнулась? Не потому что все хотели кириллицу, а потому что товарищ Сталин сказал...

OSBuster
()
Ответ на: Латинизация от Novator

> http://ru.wikipedia.org/wiki/Латинизация

http://ru.wikipedia.org/wiki/%D0%AF%D0%BD%D0%B0%D0%BB%D0%B8%D1%84
Русская_латиница#Советский_проект

А это к чему вообще? Ну да, болели троцкизмом в своё время, но вовремя одумались.

Посмотреть и сравнить карты:

Ну и посмотреть список языков на латинице:

Да начхать сто раз, ты мне лучше про иврит расскажи.

gandjubas
()
Ответ на: комментарий от Waterlaz

>>> Стоит еще отметить греческий алфавит, грузинский, армянский итд..

Кириллицей пользуются в основном русские украинцы и беларусы (==русские in short). У греков - альфы, лямбды и омеги всякие. У армян вообще своя письменность, чуть не самая древняя на просторах бывшего Союза, появившаяся задолго до кириллицы. У грузин - также свои кракозябры. И т. д.

Когда же вы все начнете читать сообщения, на которые отвечаете.

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

gandjubas
()
Ответ на: комментарий от OSBuster

> Почему загнулась? Не потому что все хотели кириллицу, а потому что товарищ Сталин сказал...

Да-да, а ещё он младенцев ел и лично расстрелял миллиард поляков в Катыни.

gandjubas
()
Ответ на: комментарий от OSBuster

>Почему загнулась? Не потому что все хотели кириллицу, а потому что товарищ Сталин сказал...

dude, белорусский язык is a joke...

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

Лингвофрик в данном топике — это школоло, взявшееся решать за всех пользователей кириллицы, что им нужно, а что нет, имеющее необоснованные видения будущего и не отличающее тысяч от миллионов.

И, да, спроси же всё таки у гугла, что значит слово лингвофрик.

anonymous
()
Ответ на: Для чего это нужно: от Novator

русским, в будущем Думаю, мы рано или поздно перейдем на латиницу, если захотим быть интегрированы в мировое сообщество.

Сейчас в Сербии происходит постепенное скатывание с кириллицы на латиницу. И вроде бы всем до лампочки.

Вступление Болгарии в ЕС и НАТО тоже вбросило немного дополнительной энтропии на западный вентилятор.

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

> это школоло, взявшееся решать за всех пользователей кириллицы,

это ты что ли?

P.S. А ТС просто задал технический вопрос в техническом форуме.

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

Пропатчил freetype все-таки! :)

1) скачал исходники freetype-2.4.2.tar.bz2
2) изменил фунцкию FT_Get_Char_Index в 3200 строке файла
./freetype-2.4.2/src/base/ftobjs.c:

unsigned int cyr_lat_chars[2][66] = {                                                                                         
  {0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x401, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E,            
   0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F,     
   0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x451, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E,            
   0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F},    
  {0x041, 0x042, 0x056, 0x047, 0x044, 0x045, 0x0D6, 0x17D, 0x05A, 0x049, 0x059, 0x04B, 0x04C, 0x04D, 0x04E, 0x04F,            
   0x050, 0x052, 0x053, 0x054, 0x055, 0x046, 0x048, 0x043, 0x10C, 0x160, 0x15E, 0x059, 0x04A, 0x057, 0x11A, 0x0DC, 0x0C4,     
   0x061, 0x062, 0x076, 0x067, 0x064, 0x065, 0x0F6, 0x17E, 0x07A, 0x069, 0x079, 0x06B, 0x06C, 0x06D, 0x06E, 0x06F,            
   0x070, 0x072, 0x073, 0x074, 0x075, 0x066, 0x068, 0x063, 0x10D, 0x161, 0x15F, 0x079, 0x06A, 0x077, 0x11B, 0x0FC, 0x0E4}};   
                                                                                                                              
  /* documentation is in freetype.h */                                                                                        
                                                                                                                              
  FT_EXPORT_DEF( FT_UInt )                                                                                                    
  FT_Get_Char_Index( FT_Face   face,                                                                                          
                     FT_ULong  charcode )                                                                                     
  {                                                                                                                           
    FT_UInt  result = 0;                                                                                                      
                                                                                                                              
    int i = 0;                                                                                                                
    while ( (i < 66) && (cyr_lat_chars[0][i] != charcode) )                                                                   
      i++;                                                                                                                    
    if (i < 66)                                                                                                               
      charcode = cyr_lat_chars[1][i];                                                                                         
                                                                                                                              
    if ( face && face->charmap )                                                                     ...                         

3) резервирую, конфигурирую, компилирую, инсталирую под root'ом:

cp /usr/lib/libfreetype.so.6.6.0 /usr/lib/libfreetype.so.6.6.0.old
./configure --prefix=/usr
make
make install

4) перезагрузился, и все стало по-латински, даже ЛОР! :)

Спасибо за подсказку! Сейчас пытаюсь это дело «облагородить», чтобы можно было ремаппинг параметром в файле /etc/fonts/remap включать.

P.S. Если кто-то попробовал, а теперь хочет обратно:

cp /usr/lib/libfreetype.so.6.6.0 /usr/lib/libfreetype.so.6.6.0.new
cp /usr/lib/libfreetype.so.6.6.0.old /usr/lib/libfreetype.so.6.6.0

или:
aptitude reinstall libfreetype6

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