![]() |
Парсер для иврита
В принципе можно тему и в "Для начинающих" было запостить. Вобщем, модератору виднее. =)
Значит, решил я сделать парсер для иврита. Сначала объясню, зачем он вообще нужен. Дело в том, что если пытатьтся отрендерить ивритский текст с использованием шрифтов из библиотеки в програмно созданном текстовом поле, то возникает довольно неприятная ситуация: плеер "не понимает" в какую сторону нужно читать текст и отображает ивритские тексты задом на перед, но это еще пол беды... А вот когда нужно сделать так, чтобы в текстовом поле отображались одновременно иврит и английский - начинаются более серьезные неприятности. К сожалению, для ивритских шрифтов не предусмотрены "родные" знаки препинания, поэтому, как правило, никто не делает флешек с использованием не системных шрифтов, ну или просто пользуются посторонним софтом для того, чтобы конвертнуть текст "зеркально" и потом уже такой вставлять во флешку. К сожалению, второй вариант так же имеет недостатки. Т.как если у заказчика нет (как правило ее таки нет) програмы для переворачивания текста, то он не сможет самовольно ничего поменять на сайте. Код ниже - практически работающее решение проблемы, увы, у него есть 2 серьезных недостатка. 1. Мне не удалось решить проблему с wordWrap, т.е. если этот параметр у поля выставлен в true, то строки начинают отображаться в обратном порядке. 2. На мой взгляд, код через чур громоздкий. И я бы был очень признателен за любые советы по оптимизации. Код:
class HebrewConvertor { |
Было бы не плохо выложить пример исходного текста иврита в перемешку с латиницей и что из этого должно получится.
|
Есть зеркальные шрифты, спроси любого кто пользуется фрихандом.
твоя проблема очень просто решается с зеркальными шрифтами. 1. Устанавливается фонт зеркальный 2. текстовое поле флипится по вертикали 3. пробегаешься по тексту находишь английские слова и меняешь порядок букв на обратный единственное но. фонт должен быть включен в свф С невключенными шрифтами, сложнее... |
2 7thsky:
Да оно конечно хорошо, когда есть иксовые фонты =) а когда нет? А заказчику нужен, ну вот хоть застрелись, именно этот (он его купил, например =). Я могу переделать шрифт в фонтографере... но это кучу времени займет... (Кроме того, копирайты всякие... а если я случайно шрифт моего бывшего бывшего преподавателя "сопру"? Не красиво как-то) Если делать по-уму, то нужно делать битмапы хотябы под 2-5 разных размеров, (пиксельные метрики шрифтов) - это у меня как минимум неделя уйдет. Да, речь идет именно об фонте включенном в СВФ. ЗЫ. Пользуюсь фрихендом, очень активно =) 2 iNils: Чуть попозже выложу, надо еще придумать как =) |
Если заказчик купил этот шрифт и он на ифрите, то практически сто пудово что есть его аналог Х, так что убеди его купить.
Потом поищи на flashoo.co.il, я помню там Mattman вроде выкладывал готовое решение. Потом решение с текстом ОБЯЗАННО быть привязанно к текстовому полю, так как тебе еще надо разбивать на строки и менять их очередность. Я давным давно это делал как то :) если найду вечером дома то вышлю если нужно |
Код:
_root.win = new Uwindow(_str);Uwindow - мой класс создающий страницу сайта TXTLoader - класс-загрузчик текстов _root.win.createScrollField() метод класса Uwindow создающий текстовое поле с некоторыми нужными мне изменениями. Вот, попробую наглядно объяснить: Вложение 15718 Это так будет отображаться текст если ничего с ним не делать, используя системные шрифты. В большинстве случаев - это просто не приемлимо, прочитать вообще не возможно. Единственный вариант, который более-менее читается - "_sans" Вложение 15717 Кроме этого есть неприятность с выделением как созданным вручную, так и програмно, выделенная область переворачивается зеркально. Вложение 15719 Так выглядит все тот же текст отрендеренный с помощью встроенных (библиотечных) шрифтов. С использованием функции-конвертора из первого поста. Вложение 15716 Так выглядел бы сконвертированный текст, если бы отображался с помощбю системных шрифтов Вложение 15720 Так выглядит текст, если его не конвертировать, но использовать при этом для рендеринга встроенный шрифт |
Я говорил про текстовые файлы, то есть сделать *.txt в utf-8. Так как я ни чего не понимаю в иврите, то желательно подобрать символы весьма различные по написанию + немного латинских. Одной строчки будет достаточно.
|
2 7thSky:
Вроде искал... видно плохо искал. А по поводу иксовых шрифтов... Ну, если честно... плохое это решение. Из наверное сотни, которые у меня есть, половина вообще не в той раскладке, у части не хватает каких-нибудь символов, у некоторых отсутствуют напрочь латиница или спецсимволы. Наверное только у десяти из них сделаны битовые карты (при маленьком кегле просто невозможно использовать что-нибудь кроме битмаповской отрисовки). Но и у той части, у которой эти карты таки да есть, они зачастую автосгенеренные фонтографером - опять же, гадость. Того же несчастного Наркиса-тама у меня наверное 5 вариантов, и только 1 более-менее рабочий. А по поводу купить-заказать сделать хороший шрифт - так я только за =) Вот ток не всегда получается уламать заказчика =)... да и времени не всегда хватает. |
Вложение 15721
Вот, в таком виде оно приходит от заказчика Вложение 15722 Вот так надо отрисовать Сорри, не подумал :rolleyes: |
А можно все таки сделать пример с одной строчкой символов на 20 в перемешку с латиницей, еще символов 5, (до и после), а то я уже глаза сломал :)
|
| Часовой пояс GMT +4, время: 13:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.