Привет,
Я сейчас пишу Flash-приложение с многоязычной поддержкой. Первоначально я выбрал шрифт Tahoma из-за его поддержки Unicode. Клиент предпочитает нестандартный шрифт, например Lucida Handwriting. Lucida Handwriting не имеет такой же, скажем, поддержки кириллицы, как Tahoma, что создает проблему, которую можно решить несколькими способами, и я хотел бы спросить вашего совета, какой из них предпочтительнее:
Насколько я понимаю, я мог:
Что посоветуете? Какие из этих решений являются разумными, а какие полностью отсутствуют? Есть ли способ, о котором я не думаю?
Большое спасибо! Алексей
Обновлено: хорошая статья по теме: http://www.itworld.com/print/58558
![[UX] Категории и настройки внешнего вида Flash-сообщений](https://i.imgur.com/5LZljB8b.jpeg)
Что ж, в конечном итоге у вас есть только два реальных выбора: либо вы встраиваете шрифт в свой SWF, гарантируя, как будут выглядеть ваши шрифты, либо нет, и используете шрифты устройства. (Или их сочетание с использованием встроенных шрифтов или шрифтов устройства в зависимости от региона.)
Если вы не встраиваете какие-либо шрифты, то любой шрифт, который вы определяете для своего текста, в конечном итоге является просто предложением - пользователь увидит шрифты устройства, которые отображаются на его собственной машине (с использованием шрифтов на этой машине). Таким образом, вы можете «предложить» Tahoma, но то, что видит пользователь, будет зависеть от того, есть ли у него этот шрифт (и это может отличаться, скажем, для версий шрифта для Mac и версий для ПК). Естественно, это также зависит от поддержки; если у них нет азиатских шрифтов, то они, например, не увидят никакого китайского. (Примечание: вы также можете выбрать такой шрифт, как "_sans", который просто говорит клиенту использовать его стандартный шрифт без засечек. Я предполагаю, что на практике это будет тот же шрифт, который был бы выбран, если бы вы d определил "Тахома", но YMMV.)
Если вы встраиваете свои шрифты, пользователь увидит именно то, что вы от них ожидаете, потому что шрифт визуализируется Flash, а не ОС. Но если вы полностью встраиваете все регионы, включая глифы, необходимые для китайского языка, то я думаю, вы обнаружите, что это добавляет значительно больше, чем 500 КБ ... больше, чем 2-5 МБ, по моему опыту. Но, возможно, мне не хватает некоторых деталей. В любом случае, для доставки контента через Интернет я обычно предполагаю, что, как минимум, азиатские шрифты должны быть шрифтами устройства.
Чтобы добавить пару слов о смешанном решении, я сделал это, и это выполнимо. То есть, предполагая, что вы можете добавить логику в свой SWF, вы можете (например) создать по два из каждого текстового поля, одно с использованием встроенного «Lucida something», а другое с использованием невстроенного «_sans», а затем во время выполнения сделать одно из них невидимы и помещают текст в другой, в зависимости от того, какой регион вы показываете. (Я сделал это, создав один компонент LocalizedTextfield и заставив его читать языковой стандарт из статического свойства при его инициализации.) Затем вам просто нужно решить для каждого языкового стандарта, стоит ли размер файла отображать для этого конкретного набора. глифов.
Последнее слово: вы не обязательно предполагаете, что размер файла, связанный с вашими шрифтами, будет загружен только один раз. Если вы сделаете свой контент простым способом и встраиваете шрифты в свои текстовые поля, то информация о шрифте будет частью вашего SWF и, таким образом, загружаться каждый раз, несмотря ни на что. Для его экстернализации вы можете сделать компонент Label отдельным файлом, а затем решение о том, загружать его или нет, зависит от настроек кэширования браузера. Вы также можете экстернализовать сам ресурс шрифта и использовать его как общий ресурс, но в AS2 это несколько сложно заставить работать. Я слышал, что в AS3 проще, но сам не делал.