2008-12-08 9 views
4

Приветствия,Поддержка нескольких шрифтов/языков во Flash

Я нахожусь в середине написания приложения Flash, которое поддерживает многоязычность. Мой первоначальный выбор шрифта для этого был Tahoma, для его поддержки Unicode. Клиент предпочитает нестандартный шрифт, такой как почерк Lucida. У Lucida Handwriting нет такой же, скажем, кириллической поддержки, как Tahoma, что создает проблему, что есть несколько способов решить, и я хотел бы попросить ваш совет, по которой это желательно:

От чего Я понимаю, я мог бы:

  • Дайте клиенту список полностью Unicode-совместимых (кириллица, иврит, арабский, традиционный китайский, Восточной Азии и т.д.) шрифтов на выбор. (Я не знаю, где взять такой список, мой поиск в Интернете привел только к спискам частично совместимых с Юникодом шрифтов. Попробуйте http://look.fo/list-of-unicode-compliant-fonts как хорошую отправную точку, чтобы увидеть, где я посмотрел).
  • В зависимости от местоположения клиента (которое у нас уже есть) визуализируйте в почерке Lucida для англоязычных пользователей и в Tahoma для международных пользователей. Это может быть головная боль; есть ли у кого-нибудь опыт такого подхода?
  • Создайте новый шрифт (IE, AlexeyMK Bold), который использует Lucida Handwriting для английского и Tahoma для всего остального. Это реклама примерно в 500 к весу файла Flash, но должна (если я правильно понимаю) загружаться только в первый раз.

Что вы посоветуете? Какие из них являются разумными решениями и которые полностью существуют? Есть ли способ, о котором я не думаю?

Большое спасибо! Алексей

EDIT: Хорошая статья по теме: http://www.itworld.com/print/58558

ответ

2

Ну, в конечном счете, у вас есть только два реальных варианта: либо вы встроить шрифт в ваш SWF, гарантируя, что ваши шрифты будут выглядеть, или дон 't, и используйте шрифты устройства. (Или смесь двух, используя встроенные или устройства шрифты в зависимости от региона.)

Если вы не вставляете какие-либо шрифты, то какой бы шрифт вы не определяли для вашего текста, в конечном итоге просто предложение - то, что пользователь увидит это шрифты устройства, отображаемые их собственной машиной (с использованием шрифтов на этой машине). Таким образом, вы можете «предложить» Tahoma, но то, что видит пользователь, будет зависеть от того, есть ли у них этот шрифт (и он может варьироваться, например, для версий Mac для версий шрифтов и ПК). Естественно, это также зависит от поддержки; если у них нет азиатских шрифтов, тогда они не будут видеть ни одного китайца, например. (Примечание: вы также можете выбрать шрифт, например «_sans», который просто говорит клиенту использовать стандартный шрифт sans-serif. Я предполагаю, что на практике это станет тем же шрифтом, который был бы выбран, d определяется «Tahoma», но YMMV.)

Если вы вставляете свои шрифты, пользователь увидит именно то, что вы ожидаете от них, потому что шрифт визуализируется Flash, а не ОС. Но если вы полностью внедряете все регионы, в том числе глифы, необходимые для китайцев, то я думаю, вы обнаружите, что он добавляет значительно больше, чем 500K .. больше похоже на 2-5MB по моему опыту. Но, может быть, есть некоторые детали, которые мне не хватает. В любом случае, если контент будет доставлен через Интернет, я бы предположил, что, как минимум, азиатские шрифты должны быть шрифтами устройства.

Чтобы добавить слово о смешанном решении, я сделал это, и это выполнимо.То есть, предполагая, что вы можете добавить логику к SWF, вы могли бы (например) сделать два из каждого текстового поля, используя встроенную «Lucida whatever», а другую - без встроенных «_sans», а затем во время выполнения из них невидимы и помещают текст в другой, в зависимости от того, какой регион вы показываете. (Я сделал это, создав один компонент LocalizedTextfield и прочитав локаль из статического свойства при его инициализации.) Тогда вам просто нужно решить, для каждого языкового стандарта, стоит ли размер файла для этого конкретного набора глифов.

Окончательное слово: вы не можете предполагать, что размер файла, наносимый вашими шрифтами, будет загружен только один раз. Если вы сделаете свой контент простым способом и внедряете шрифты в свои текстовые поля, информация о шрифте будет частью вашего SWF и, таким образом, загружаться каждый раз, независимо от того, что. Для экстернализации вы можете сделать компонент Label отдельным файлом, а затем принять решение о его загрузке или нет до настроек кэширования браузера. Вы также можете экрнализировать сам ресурс шрифта и использовать его как общий ресурс, но в AS2 это немного волосатое, чтобы работать. Я слышал, что в AS3 это проще, но я не сделал это сам.

+0

Большое значение! – AlexeyMK 2008-12-09 22:13:26