2010-01-17 1 views
3

Возможно, вы можете помочь мне с проблемой, которую я испытываю. URL-адрес проекта: http://www.mauriciogiraldo.com/vgline/beta/шрифты не внедрены Flash CS4 AS3

Это подключенное к Интернету приложение AS3 с поддержкой Drupal, подключенное к AMFPHP. Данные проходят через Flash без проблем, я подтвердил, что UTF-8 - это хорошо и все. Проблема может быть лучше видно на этих сайтах:

http://www.mauriciogiraldo.com/vgline/beta/#/146

открытого текста версия этой ссылке:

http://www.mauriciogiraldo.com/vgline/node/146

(Обратите внимание на имя парня)

Шрифт Inconsolata, хотя я мог бы использовать любой моноширинный шрифт с открытым исходным кодом, если это необходимо. Вы можете видеть, что я встроил шрифт (я даже выбрал динамические текстовые поля для вставки всей вещи, полной кодировки), а также меню «Новый шрифт» в библиотеке. Inconsolata появляется со звездочкой в ​​инструменте разработки CS4 (который according to Adobe documentation означает, что вещь встроена).

Я пробовал другие варианты вставки шрифтов безрезультатно. Похоже, что Inconsolata имеет этот символ «ō», когда он используется в авторском создании, но не отображается в динамических текстах.

Другая проблема, которая возникает у меня: если я использую статические текстовые поля, шрифт не встраивается (WTF). Мне нужно преобразовать поле в динамическое, а затем оно работает («хронология истории видеоигр» вверху слева - это динамическое текстовое поле, хотя я бы предпочел, чтобы это не было ... это и другие). Если я использую статическое текстовое поле, шрифт преобразуется в какой-то шрифт Times New Roman.

Текст создан сообществом AS3 (а также результаты поиска).

Я вставляю текст через HTML (.htmlText) и стилю с помощью CSS.

Весь код является открытым исходным кодом и может быть найден здесь:

http://code.google.com/p/vgline/

Пример того, как я заполнить в текстовом поле можно найти здесь:

http://code.google.com/p/vgline/source/browse/trunk/src/TLDetail.as

фрагмент такого кода:

var ss:StyleSheet = new StyleSheet(); 
var css:String = ".title { color:#333333; font-family:Inconsolata; font-size:16; leading:2; } "; 
css += ".date { color:" + StringUtils.rgb2web(data.color.r, data.color.g, data.color.b) + "; font-family:Inconsolata; font-size:14; leading:4; } "; 
css += ".text { color:#333333; font-family:Inconsolata; font-size:11; leading:4; } "; 
css += ".link { color:#000000; font-family:Inconsolata; font-size:11; leading:4; text-decoration:underline; } "; 
css += "a:hover { text-decoration:none; } "; 
ss.parseCSS(css); 
var fechahtml:String = "<span class='date'>"; 
if (data.mes != null && data.dia != null) { 
     fechahtml += data.dia + " " + StringUtils.month2name(data.mes) + " " + data.anotext; 
} else if (data.mes != null) { 
     fechahtml += StringUtils.month2name(data.mes) + " " + data.anotext; 
} else { 
     fechahtml += data.anotext; 
} 
fechahtml += "</span>"; 
date_txt = new TextField(); 
date_txt.width = 275; 
date_txt.embedFonts = true; 
date_txt.antiAliasType = "advanced"; 
date_txt.styleSheet = ss; 
date_txt.htmlText = fechahtml; 
date_txt.x = 8; 
date_txt.y = 3; 

addChild(date_txt); 

ЛЮБАЯ помощь будет принята с благодарностью. Я действительно не знаю, что делать.

Спасибо

+0

Pretty awesome site btw! –

+0

благодарит:) работает над размещением большого количества контента там – mga

+0

Я думаю, что нашел правильный шрифт (ы) :) –

ответ

3

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

  1. встроить шрифт в библиотеку
  2. Link символ шрифта (в библиотеке) для пользовательского класса продлевая Font -класса (назовем его MyFont сейчас)
  3. Создать TextFormat объект (давайте называют его frmt)
  4. Set frmt.font = new MyFont().fontName
  5. Создать TextField (давайте назовем его tf)
  6. ssign tf.embedFonts = true и tf.defaultTextFormat = frmt

Надеюсь, это поможет.

+0

рассмотрит это – mga

+0

+1. Имейте в виду, что если шрифт, который вы хотите использовать, выделен жирным шрифтом, вам нужно установить frmt.bold = true. Я просто потратил 20 минут на то, чтобы понять, почему мой шрифт не появляется. Черт бы тебя побрал! * shakes fist * –

+1

Мой объект шрифта имеет «null» для его свойств fontName, fontStyle и fontType. Шрифт внедрен, экспортирован для ActionScript, но при вызове «new MyFont()» трассирует объект как «[объект MyFont]». Почему эти свойства должны быть пустыми? Шрифт не отображается, когда я устанавливаю текстовое поле для встраивания шрифтов. – Triynko

0

Я посмотрю позже.

Звучит несколько знакомо. У меня была такая же проблема, когда символы не отображались в swf в статическом текстовом поле, хотя отображались в среде IDE (flash cs3), когда я работал на многоязычном веб-сайте. Проблема в том, что время было с греческими персонажами в Arial. Мне пришлось загрузить a separate version of Arial с правильными греческими символами, и это исправить.

Возможно, это та же проблема, и вам нужна другая версия того же шрифта.

Вы пробовали то же самое с Courier New или консоли Lucida? Я пробовал базовые настройки (имя Иватани, написанное на 2 textields, один Courier New, один Lucida Console, встроенные шрифты, динамический текст, повернутый TextField, просто чтобы проверить вложения и отображаемые отлично.


EDIT:

Привет,

Я сделал несколько тестов моноширинных шрифтов из dafont.com

Это фрагмент кода я использовал, чтобы найти шрифты, которые должны работать:

var fonts:Array = Font.enumerateFonts(); 
for(var i:int = 0 ; i < fonts.length; i++){ 
    if(fonts[i].hasGlyphs('ō')) trace(fonts[i].fontName); 
} 

Это список, который я получил:

Monaco 
Lucida Grande 
Bitstream Vera Sans Mono 
saxMono 
JackInput 
Liberation Mono Regular 
F25 Bank Printer 

Я попробовал несколько с 2 различными подходами.

Встраивание шрифтов в библиотеке не помогло, как вы можете увидеть здесь:

library embed

Встраивание шрифтов с использованием экземпляра на сцене работал для некоторых шрифтов:

stage embed

Вот код, который я использовал для теста, довольно грязный, но это тест :)

l.text = j.text = f.text = li.text = s.text = b.text = 'Hello Tōru Iwatani...Hello Tōru Iwatani...Hello Tōru Iwatani...'; 

var lucida:TextField = getStyledTextField("Lucida Grande"); 
var liberation:TextField = getStyledTextField("Liberation Mono Regular"); 
var sax:TextField = getStyledTextField("saxMono"); 
addChild(lucida); 
addChild(liberation); 
addChild(sax); 
liberation.y = 30; 
sax.y = 60; 
lucida.htmlText= liberation.htmlText = sax.htmlText = "<body><span class='text'>Hello Tōru Iwatani...</span></body>"; 

function getTextField(font:String):TextField{ 
    var label:TextField = new TextField(); 
    label.defaultTextFormat = new TextFormat(font,11,0x33333); 
    label.autoSize = TextFieldAutoSize.LEFT; 
    label.border = true; 
    label.embedFonts = true; 
    return label; 
} 

function getStyledTextField(font:String):TextField{ 
    var style:StyleSheet = new StyleSheet(); 
    style.parseCSS(".text { color:#333333; font-family:"+font+"; }"); 
    var label:TextField = new TextField(); 
    label.styleSheet = style; 
    label.autoSize = TextFieldAutoSize.LEFT; 
    label.border = true; 
    label.embedFonts = true; 
    return label; 
} 

л, Li, B, J и т.д., имена экземпляров для динамических текстовых полей на сцене, используя шрифты, как Lucida Grande, освобождение, поток битов вера без моно, JackInput и т.д.

Я не уверен, какие проблемы есть, но встраивание символов на сцене работал для меня, также, я встроил все глифы, чтобы убедиться. Требуется возраст для компиляции, вы можете выбрать шрифт, который вам нравится, из тех, что работают, и постепенно вынимать глифы, пока не найдете минимальное количество глифов, которое вам нужно использовать.

Гудлак, Джордж

+0

ну ... я вроде как пытался с DejaVu http://dejavu-fonts.org/wiki/index.php?title= Main_Page очень быстро, без реальных результатов ... может быть, у кого-то есть «правильный» способ встраивания шрифта, поэтому я могу использовать его через CSS, как требуется код (или хорошая альтернатива) ... изменение шрифта может потребовать немного подстройки, поэтому я скорее жду хорошей альтернативы – mga

+0

Итак, вы думаете, что это проблема шрифта? Я поместил текстовое поле и выбрал «встроить всю вещь ftw» (на самом деле в верхнем левом текстовом поле есть и почти все остальные) безрезультатно. Я попробую ваш подход и дам вам знать. Считаете ли вы, что это поможет с динамическими и статическими текстовыми полями? Динамические текстовые поля имеют тенденцию испортить «ручной» указатель мыши в кнопках (поэтому вы не видите, что курсор в верхних кнопках ... должен был преобразовать эти тексты в динамические или шрифт woulnd't быть встроенным) ... Большое спасибо – mga

+0

, когда я получу изменения, я снова проверю свой оригинальный шрифт, я забыл, почему я выбрал другое. Странно, хотя все моноширинные шрифты должны иметь символ «ō», а не весь шрифт, отображаемый персонажем. Единственное вложение, которое сработало, состояло в динамических текстовых полях. Проблема с «ручным указателем мыши», имеет ли она какое-либо отношение к свойству .selectable? BTW, я загрузил свой тест fla и swf здесь: http://lifesine.eu/so/css_font_embed.zip и шрифты здесь: http://lifesine.eu/so/monospaced_fonts.zip –

1

У меня была аналогичная проблема с Arial Regular (в динамическом текстовом поле с HTML включен) не отображает жирный текст диктуемое HTML-теги в AS.

Если вы измените шрифт на Lucida Sans, все работает отлично.