В теме периодически возникают вопросы по поводу
неотображения знаков транскрипции и прочих закорючек в словарях. Знатоки обычно советуют заменять системные шрифты на DejaVuSans и прочие ариал-юникод-эмэсы. Не стоит говорить что этот метод "опасен" в неумелых руках, и, кроме того, требует root-доступа в системные папки. Я, кстати, так всегда и делал, не особо заморачиваясь. Пока не купил планшет от Samsung с его KNOX-ом :-{ . Т.е. тут дело даже не в неумелых руках, а в нежелании/невозможности рутовать некоторые устройства. И вот, мы, согласно заветам предков, пошли другим путём. Не буду тут расписывать процесс всех мытарств, вкратце скажу, что вопрос, в конечном итоге, решился модификацией стандартного шрифта Arial (НЕ кривого юникод-МС) и подключением его к GoldenDict посредством функционала
article-style.css.
Кому интересно, несколько теоретических моментов.
Стандартный алгоритм отображения шрифтов следующий. Простой текст отображается стандартным системным sans шрифтом - Roboto в версиях андроида от 4.0 и DroidSans ранее (при этом, на некоторых прошивках, напр. MIUI стандартными шрифтами могут быть другие). Независимо от наличия в нём IPA-диапазона, знаки этого самого диапазона отображаются встроенным в GoldenDict DejaVuSans. Если определенный знак не из IPA-диапазона отсутствует в стандартном системном шрифте, то он ищется в Droid Sans Fallback.
Само неотображение может быть двух видов. 1-й, этого когда знак вообще не отображается (т.е. он не нашелся ни в одном из задействованных шрифтов). 2-й это когда вылазят "квадраты". Самый неприятный. Это когда шрифт честно не отвечает системе, что у него нет этого знака (тогда система могла бы продолжить поиск в следующем по порядку приоритета шрифте), а подставляет "пустышку" в виде квадрата или какой-нибудь другой несуразности. Всё это зависит от шрифтов в вашей системе и их "сопряженности". Поэтому решение, для того, чтоб оно было универсальным, должно быть радикальным - замена всех шрифтов и начертаний, участвующих в процессе.
Вообще, при первом варианте неотображения, когда шрифт не подсовывает "пустышку", а честно передает эстафету, приоритет лучше было бы оставить именно этому шрифту (для сохранения корректных вариантов начертаний - Bold, Italic, etc.), а в случае ненахождения знака, он бы искался в резервном модифицированном шрифте (аналог Droid Sans Fallback). Но, в виду того, что невозможно знать наперед, как себя поведут стандартные шрифты на той или иной системе, высший приоритет придется ставить этому самому модифицированному шрифту. Минус здесь в том, что варианты начертаний Bold, Italic и BoldItalic генерируются системой в режиме "псевдо", что на устройствах с невысоким DPI может выглядеть "не очень". Хотя, непритязательные пользователи могут этого и не заметить.
Второй путь, как я уже сказал - радикальный. Это замена всех шрифтов и начертаний, участвующих в процессе. Минус здесь только в том, что программе приходится подгружать бОльший объём данных, что, гипотетически, может сказаться на производительности.
Ниже представлены варианты решения, разбитые на
2 категории.
Оригинальный вид карточки без подключенного article-style.css
1. Шрифты, интегрированные в файл CSS. Плюсы - ничего не надо изменять и прописывать - просто кинуть файл в папку
GoldenDict/.config. Минусы - шрифт не подгружается как внешний ресурс а интегрирован в код CSS, поэтому программа пробует отобразить его "сразу-же", но из-за объёма данных может возникать задержка. Соответственно, чем больше объём, тем больше задержка.
- 1.1 Только для DSL! и только для транскрипции в теге [t][/t]. Содержимое тега отображается красивым фонетическим шрифтом. Остальное - родной системный шрифт
article-style_1-1.zip ( 126.73 КБ )
- 1.2 "расширенный" шрифт в минимальном варианте. Псевдо Bold и Italic.
article-style_1-2.zip ( 256 КБ )
- 1.3 фонетический шрифт для [t][/t] + "расширенный" шрифт в минимальном варианте. Псевдо Bold и Italic.
article-style_1-3.zip ( 382.06 КБ )
- 1.4 "расширенный" шрифт в стандартном варианте. Псевдо Bold и Italic.
article-style_1-4.zip ( 356.31 КБ )
- 1.5 фонетический шрифт для [t][/t] + "расширенный" шрифт в стандартном варианте. Псевдо Bold и Italic.
article-style_1-5.zip ( 482.53 КБ )
2. Шрифты, подгружаемые как внешние ресурсы. Плюсы: программа, достаточно быстро работает, подгружая внешние шрифты, несмотря на их объём (видимо, код оптимизирован под этот тип взаимодействия). По этой самой причине можно подключить шрифты с гораздо бОльшим кол-вом знаков, без ущерба для скорости. Можно подгружать шрифты со всеми типами начертания (Bold, Italic). Минус - возможно придется подправлять абсолютные пути в файле CSS (мне не удалось подключить шрифты через относительные пути. Если кто подскажет как - буду благодарен).
- 2.1 Наиболее лёгкий вариант. Подгружаются только 2 шрифта - фонетический шрифт для [t][/t] + "расширенный" шрифт в максимальном варианте. Псевдо-начертания.
article-style_2-1.zip ( 918.3 КБ )
- 2.2 Полный вариант. Подгружаются 5 шрифтов - фонетический шрифт для [t][/t] + "расширенный" шрифт в максимальном варианте в 4-х начертаниях. Для тега [lang=][/lang] в примерах специально установлен псевдо-италик (для визуального разделения пример - перевод) - касается в большей степени словарей от lingvo. Соответствующее правило CSS можно безболезненно удалить.
article-style_2-2.zip ( 1.82 МБ )
- 2.3 Полный вариант. Подгружаются 5 шрифтов - фонетический шрифт для [t][/t] + "расширенный" шрифт в максимальном варианте в 4-х начертаниях. Отличается от предыдущего варианта полностью стандартным способом интеграции различных начертаний. Для тега [lang=][/lang] в примерах специально установлен Italic (НЕ псевдо)
article-style_2-3.zip ( 1.82 МБ )
Все файлы одним архивом:
article-style_MOBILE.zip ( 6.1 МБ )
Рекомендации и комментарии:
1. На вашем устройстве может быть более одной папки
GoldenDict/.config (во внутренней памяти и на внешней карте, например).
article-style.css подхватится только если его положить в папку
GoldenDict/.config, в которой находится, также, папка
index! (при условии, что у вас имеется, как минимум, один проиндексированный словарь).
2. Папка
.config является скрытой, поэтому в настройках файлового менеджера нужно включить "отображение скрытых папок" - напр. ES Проводник вполне подходит.
3. Шрифты лучше класть в папку на внутренней памяти (если есть) - она, как правило, быстрее. В CSS, при этом, нужно
прописать соответствующие пути. Правильность написания путей можно уточнить в "свойствах файла" в файловом менеджере. Например, для моего планшета SAMSUNG путь:
'file:///storage/emulated/0/GoldenDict/.config/fonts/ArialPlus.ttf'
4. Для вступления в силу изменений можно попробовать следующие действия.
- Меню --> Настройки --> очистить кеш браузера
- Меню --> Выход
- Меню --> Пересканировать словари
- Перезагрузить аппарат
5. Работа article-style.css проверялась на прошивках андроид 2.3.4 MIUI, 4.0.2, 4.4.2 на разных устройствах. Версии программы 1.6.4 и 1.6.5 полные.
Лирическое отступление по поводу шрифтов. Традиционно, "всеядным" шрифтом считается Arial Unicode MS из пакета Microsoft Office, который сборщики "пихают" куда только можно. Помимо проблем с диакритическими знаками он "весит" порядка 22MБ из которых неиероглифов менее 2МБ. Т.е. реально он нужен только изучающим иероглифические восточные языки. Кроме того, он имеет только одно начертание (windows моделирует псевдо-начертания) и совершенно безумный межстрочный интервал. В общем, такой хоккей шрифт нам не нужен.Шрифт
ArialPlus.ttf является модифицированным Arial от Mono Type из Windows 8.1. Из него удалились только незамапленные глифы. Было добавлено много диапазонов, где есть практически все знаки, которые могут присутствовать в словарях, включая различные дингбаты, стрелки, зведочки, скобки, шахматы, карты и даже музыкальные ноты. В качестве "доноров" выступили
Noto Sans Symbols,
Segoe UI Symbol,
Arial Unicode MS. Некоторые символы были "подправлены" вручную. Покрытие в рамках данных диапазонов у получившего шрифта больше, чем у
Arial Unicode MS а "весит" он всего 1,37МБ. Из алфавитов он поддерживает все греко-латинские (с расширениями), кириллицу (с расширениями), иврит и арабский.
Arial Phonetic Plus Является сокращенной версией
ArialPlus.ttf, причем сокращенным таким образом, чтоб дополняться стандартным
Droid Sans Fallback.
Arial Phonetic - еще более сокращенная версия без кириллицы и различных закорючек. Греко-латинский диапазон в полном объеме.
Quivira Phonetic - урезанная версия юникод-шрифта
Quivira.
P.S. Все эти файлы article-style.css не подходят для декстопной версии GoldenDict для windows.
Права на всё созданное создателями принадлежит этим создателям бла-бла-бла, ну в общем все в курсе.ВНИМАНИЕ! Информация устарела и актуальна только для устройств с Android ниже 5-й версии. Метод со шрифтами по base64 (встроенные в CSS), вероятно, продолжает работать.
Сообщение отредактировал Dark_Timur - 04.03.17, 16:41Причина редактирования: в шапке (печать); Нормальный цвет текста для улучшения читабельности