Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: Iskandar от февраля 26, 2017, 19:08

Название: Набор с изменением глифов
Отправлено: Iskandar от февраля 26, 2017, 19:08
Существуют языковые раскладки клавиатуры, где при наборе глиф изменяется в зависимости от предыдущей набранной буквы. Например, арабская, где у буквы до четырёх вариантов в зависимости от окружения. Или индийские, где при наборе после согласной буквы вирамы + следующей согласной обе согласные схлопываются в лигатуру. Ну или, наконец, корейская, где при наборе начало слога + конец слога они заменяются слоговой лигатурой.

Хочу задать глупый вопрос:

Где это задаётся программно?
Название: Набор с изменением глифов
Отправлено: Wolliger Mensch от февраля 26, 2017, 19:26
Цитата: Iskandar от февраля 26, 2017, 19:08
Где это задаётся программно?

В той программе, в которой вы пишете. Кроме того: http://www.paratype.ru/help/formats/opentype.asp
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 26, 2017, 19:28
Дедками (https://ru.wikipedia.org/wiki/%D0%9C%D1%91%D1%80%D1%82%D0%B2%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8).
И само собой спецшрифтами.
Название: Набор с изменением глифов
Отправлено: Python от февраля 27, 2017, 19:40
Очевидно, вопрос касается не ввода букв, а их отображения. Имеется в виду, как настроить браузер/текстовый редактор, чтобы эти символы отображались как следует? Или спрашивается, как сделать шрифт с такими возможностями?

В тексте позиционные варианты одной и той же арабской буквы кодируются идентично (хотя в юникоде отведены отдельные коды для каждого из позиционных вариантов), это же касается стандартных латинских лигатур типа fi или fl (подставляемых на место буквосочетаний) — можно, конечно, подставить позиционные варианты и лигатуры непосредственно в редактируемый текст, но по-хорошему подстановка глифов должна происходить лишь при отображении текста (что, к сожалению, умеют не все программы). В более общем случае (например, для индийских лигатур) отдельные коды не предусмотрены, а подстановка глифа задается таблицей в шрифте — в этом случае, ручная подстановка символов в текст становится невозможной, поскольку подстановочные глифы отдельных юникодовских позиций не имеют (т.е., все сложности ложатся на программу, отображающую текст, и если она не умеет делать подстановку, либо делает ее лишь для определенного набора символов, то это никак не обойти). С другой стороны, греческие σ и ς кодируются отдельными кодами (предложение сделать сигму автоматически заменяемой на позиционные варианты было отклонено) и, соответственно, вводятся как разные буквы.

Касательно дедкеев и других клавиатурных наворотов. При желании, можно сделать шрифт с пользовательскими символами для позиционных вариантов и лигатур любых письменностей, сделать к нему раскладку и набирать текст непосредственно из пользовательских символов (и это имеет смысл, если такой шрифт должен отображаться в чем-то с ограниченными возможностями рендеринга), но такой путь считается неюникодовским.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 19:58
Цитата: Python от февраля 27, 2017, 19:40В более общем случае (например, для индийских лигатур) отдельные коды не предусмотрены, а подстановка глифа задается таблицей в шрифте — в этом случае, ручная подстановка символов в текст становится невозможной, поскольку подстановочные глифы отдельных юникодовских позиций не имеют
А откуда они тогда, по-Вашему, берутся, из astral.dll?
В том же Sanskrit 2003 1136 позиций в Private Use заняты как раз подстановочными глифами. Может, Вы имели в виду «установленных стандартных юникодовских позиций не имеют»?

Цитата: Python от февраля 27, 2017, 19:40При желании, можно сделать шрифт с пользовательскими символами для позиционных вариантов и лигатур любых письменностей, сделать к нему раскладку и набирать текст непосредственно из пользовательских символов (и это имеет смысл, если такой шрифт должен отображаться в чем-то с ограниченными возможностями рендеринга), но такой путь считается неюникодовским.
Неуникодовским считается транспонирование собственных глифов на занятые code pointʼы, а в Private Use суй хоть засуйся (см. выше).
Название: Набор с изменением глифов
Отправлено: Neeraj от февраля 27, 2017, 20:08
Кто знает как разбить "лигатуры" при наборе арабицей? Конкретно - чтобы нпр. было می کنم  а не   میکنم ...  ( При наборе сирийским письмом такая возможность есть  - называется " принудительная разбивка лигатур" )
Название: Набор с изменением глифов
Отправлено: Iskandar от февраля 27, 2017, 20:10
Цитата: Neeraj от февраля 27, 2017, 20:08
Кто знает как разбить "лигатуры" при наборе арабицей? Конкретно - чтобы нпр. было می کنم  а не   میکنم
ZWNJ же
На персидской клаве на Shift + (там где латинская) B
Название: Набор с изменением глифов
Отправлено: Iskandar от февраля 27, 2017, 20:15
Поскольку с (книжным) пехлеви в юникоде тянут волыну своими "пропозишынами" уже много лет (успев давно оюникодить сравнительно никому не нужные наскальные инскрипции и пехлеви-псалтырь), я подумал, что придётся собирать свой собственный набиральщик. И только сейчас понял, что не знаю, как устроен набор, например, арабский.

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

Не знаю, что лучше: попроставлять в шрифте глифы поверх арабских (подкорректировав правила подстановки)? Это "не по-юникодовски" :) Или забивать приват-юз, а потом собирать раскладку клавиатуры...
Название: Набор с изменением глифов
Отправлено: Neeraj от февраля 27, 2017, 20:21
Цитата: Iskandar от февраля 27, 2017, 20:10
Цитата: Neeraj от февраля 27, 2017, 20:08
Кто знает как разбить "лигатуры" при наборе арабицей? Конкретно - чтобы нпр. было می کنم  а не   میکنم
ZWNJ же
На персидской клаве на Shift + (там где латинская) B
Понятно.. ! مرسی
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 20:23
Цитата: Iskandar от февраля 27, 2017, 20:15что лучше: попроставлять в шрифте глифы поверх арабских (подкорректировав правила подстановки)? Это "не по-юникодовски" :) Или забивать приват-юз, а потом собирать раскладку клавиатуры
У прынцыпе можно чхнуть на Юникод и пойти путёй WPF (https://en.wikipedia.org/wiki/Windows_Presentation_Foundation#Text), обозвав пехлеви «Contextual and Stylistic Alternates» арабщины (не, ну а чё: происхождение-то вроде одно!).
И проверить можно будет прямо на http://teilnehmer.somee.com/WpfTextImage.
Название: Набор с изменением глифов
Отправлено: Python от февраля 27, 2017, 20:26
Цитата: Bhudh от февраля 27, 2017, 19:58
А откуда они тогда, по-Вашему, берутся, из astral.dll?
В том же Sanskrit 2003 1136 позиций в Private Use заняты как раз подстановочными глифами. Может, Вы имели в виду «установленных стандартных юникодовских позиций не имеют»?
Глифы в шрифте могут быть привязаны к определенному коду (в т.ч. и в пользовательской области), а могут такой привязки и не иметь (т.е., идентифицируются по внутреннему номеру или имени в шрифте, и больше никак). Во втором случае глиф подставляется в текст лишь средствами расширенного рендеринга.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 20:29
Это те самые Contextual and Stylistic Alternates? А где они прописаны и как в этом случае?
Название: Набор с изменением глифов
Отправлено: Iskandar от февраля 27, 2017, 20:30
Цитата: Bhudh от февраля 27, 2017, 20:23
У прынцыпе можно чхнуть на Юникод и пойти путёй WPF, обозвав пехлеви «Contextual and Stylistic Alternates» арабщины (не, ну а чё: происхождение-то вроде одно!).

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

Самих по себе шрифтов пехлеви разработано уже много, но они совершенно дубового набора.
В идеале нужно, чтобы набивать типа (в уме) транслит, а он сам закручивается в лигатуры.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 20:32
Цитата: Iskandar от февраля 27, 2017, 20:30В идеале нужно, чтобы набивать типа (в уме) транслит
Так и набивайте транслит: привязать-то в раскладке клавиш можно к любому кодпойнту.
Название: Набор с изменением глифов
Отправлено: Iskandar от февраля 27, 2017, 20:33
Цитата: Bhudh от февраля 27, 2017, 20:32
Цитата: Iskandar от февраля 27, 2017, 20:30В идеале нужно, чтобы набивать типа (в уме) транслит
Так и набивайте транслит: привязать-то в раскладке клавиш можно к любому кодпойнту.
А где там будет прописываться лигатуризация?
В шрифте, я понял уже, где.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 20:34
Не понял. Если в шрифте прописана, зачем ещё и в раскладке? :what:
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 20:38
Цитата: Python от февраля 27, 2017, 20:26Во втором случае глиф подставляется в текст лишь средствами расширенного рендеринга.
А, в Mangal и Aparajita и правда лигатуры так и сделаны.
В Private Use там полный ноль.
Название: Набор с изменением глифов
Отправлено: Python от февраля 27, 2017, 21:07
Цитата: Bhudh от февраля 27, 2017, 19:58
Неуникодовским считается транспонирование собственных глифов на занятые code pointʼы, а в Private Use суй хоть засуйся (см. выше).
Однако, если та же письменность стандартизирована в юникоде, то использовать вместо нее пользовательские символы — несовсем правильно. В т.ч. и в случаях, когда юникод описывает лишь общую семантику символов, требующих в идеале расширенного рендеринга.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 21:16
Но для чего тогда использовать те 137468 кодпойнтов, любезно выделенных консорциумом для личных нужд?
Название: Набор с изменением глифов
Отправлено: Python от февраля 27, 2017, 21:29
Цитата: Bhudh от февраля 27, 2017, 21:16
Но для чего тогда использовать те 137468 кодпойнтов, любезно выделенных консорциумом для личных нужд?
С другой стороны, зачем тогда выделять дорогое стандартизированное место для символов некой письменности, если вместо них все равно используются пользовательские коды позиционных вариантов? Смысл юникода в том, чтобы сделать текст шрифтонезависимым. Пользовательские области же, очевидно, нужны для нестандартизированных символов и письменностей.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 27, 2017, 21:57
То есть для конлангерских письменностей.
Блин, я только один синдаринский шрифт видел, где тенгвар в Private Use. Мужики-то не знают и всё в ANSI лепят.
Название: Набор с изменением глифов
Отправлено: Python от февраля 28, 2017, 01:13
Цитата: Bhudh от февраля 27, 2017, 21:57
То есть для конлангерских письменностей.
Блин, я только один синдаринский шрифт видел, где тенгвар в Private Use. Мужики-то не знают и всё в ANSI лепят.
Естественно. Проще сделать шрифт, совместимый с какой-нибудь общедоступной раскладкой, чем и шрифт, и специальную раскладку к нему.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 28, 2017, 01:16
В наше время можно тупо сделать html-страничку с текстовым полем и скриптом и заменять что угодно введённое на что угодно желаемое.
Название: Набор с изменением глифов
Отправлено: Python от февраля 28, 2017, 02:40
Раскладку тоже просто. Но это тоже часть работы, занимающая часть времени и требующая знаний помимо умения рисовать шрифты.
Название: Набор с изменением глифов
Отправлено: Тайльнемер от февраля 28, 2017, 04:56
Цитата: Bhudh от февраля 27, 2017, 21:57
То есть для конлангерских письменностей.
Есть даже неофициальный стандарт (wiki/en) ConScript_Unicode_Registry (https://en.wikipedia.org/wiki/ConScript_Unicode_Registry)
Правда не знаю, многие ли его учитывают, и сколько ещё таких же «стандартов» существует.
Название: Набор с изменением глифов
Отправлено: Ыняша от февраля 28, 2017, 06:10
Цитата: Python от февраля 28, 2017, 02:40
Раскладку тоже просто. Но это тоже часть работы, занимающая часть времени и требующая знаний помимо умения рисовать шрифты.
Шрифт-шрифтом, это представление.
А вот ввод надо отдельно - сделать IME, либо использовать готовый. scim-table вроде умеет делать соотвествие введённой последовательности клавиш и выходной последовательности codepoint.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 28, 2017, 16:07
Цитата: Тайльнемер от февраля 28, 2017, 04:56Правда не знаю, многие ли его учитывают
Пару шрифтов видел с совпадающими клингонами в PU. Надо распространять.
Название: Набор с изменением глифов
Отправлено: Python от февраля 28, 2017, 16:31
Цитата: Ыняша от февраля 28, 2017, 06:10
Цитата: Python от февраля 28, 2017, 02:40
Раскладку тоже просто. Но это тоже часть работы, занимающая часть времени и требующая знаний помимо умения рисовать шрифты.
Шрифт-шрифтом, это представление.
А вот ввод надо отдельно - сделать IME, либо использовать готовый. scim-table вроде умеет делать соотвествие введённой последовательности клавиш и выходной последовательности codepoint.
Или даже так: представим, я конлангер, решивший сделать и шрифт со своими символами в пользовательской области и раскладку к нему. В процессе, однако, мне нужно проверять работоспособность шрифта и раскладки. Если я печатаю на своей раскладке своим шрифтом, а получаются квадратики, то это проблема в шрифте, проблема в раскладке, или проблема в устаревшем текстовом редакторе, принципиально отвергающем некоторые области кодов на этапе ввода и/или отображения?
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 28, 2017, 17:12
Цитата: Python от февраля 28, 2017, 16:31В процессе, однако, мне нужно проверять работоспособность шрифта и раскладки.
Это можно делать и в BabelMap/BabelPad (не устанавливая шрифт в систему, с помощью инструмента Add Fonts from Disk...), и в MSKLC во время тестирования создаваемой раскладки (но шрифт уже должен быть установлен).
Название: Набор с изменением глифов
Отправлено: Python от февраля 28, 2017, 17:38
Однако, если конлангерская или редкая письменность имеет фонетические соответствия с той, которой человек обычно пользуется, то размещение экзотических букв на месте обычных гораздо удобнее — текст можно набирать как обычно и мгновенно трансформировать в экзотический простой сменой шрифта.

Кроме того, если кто-то другой решит создать шрифт для этой же письменности, то, используя ту же методику, у него больше шансов создать шрифт с таким же или похожим кодированием символов.
Название: Набор с изменением глифов
Отправлено: Bhudh от февраля 28, 2017, 17:55
Цитата: Python от февраля 28, 2017, 17:38текст можно набирать как обычно и мгновенно трансформировать в экзотический простой сменой шрифта
Ну так это и есть классический доуникодный путь, без создания собственной раскладки.
Название: Набор с изменением глифов
Отправлено: Neeraj от мая 21, 2017, 10:29
Вопрос к тем, кто набирал тексты на арабице большого объема.. В ворде есть возможность сделать настройки именно для такой графики ? - интересует прежде всего нумерация страниц и т.п.
Название: Набор с изменением глифов
Отправлено: Bhudh от мая 21, 2017, 17:47
Инверсия пагинации и изменение расположения номеров страниц по всему документу, ЕМНИП, присутствуют.
А где конкретно эти настройки расположены, можно поискать после нажатия F1.
Название: Набор с изменением глифов
Отправлено: Neeraj от мая 21, 2017, 17:52
И ещё насчет "кашиды".. можно нормальный абзац сделать на арабице без "кашиды"? ( у меня при shift+enter" автоматом появляется "кашида" )